mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-14 05:38:56 +00:00
KYRA: (EOB) - add support for FM-Towns version of EOB II
This commit is contained in:
parent
61bd730bcf
commit
f49eaa5654
@ -323,7 +323,7 @@ const ExtractFilename extractFilenames[] = {
|
||||
|
||||
{ kEoBBaseWllFlagPreset, kRawData, false },
|
||||
{ kEoBBaseDscShapeCoords, kRawDataBe16, false },
|
||||
{ kEoBBaseDscDoorScaleOffs, kRawData, false },
|
||||
{ kRpgCommonDscDoorScaleOffs, kRawData, false },
|
||||
{ kEoBBaseDscDoorScaleMult1, kRawData, false },
|
||||
{ kEoBBaseDscDoorScaleMult2, kRawData, false },
|
||||
{ kEoBBaseDscDoorScaleMult3, kRawData, false },
|
||||
@ -477,6 +477,7 @@ const ExtractFilename extractFilenames[] = {
|
||||
|
||||
// EYE OF THE BEHOLDER II
|
||||
{ kEoB2MainMenuStrings, kStringList, true },
|
||||
{ kEoB2MainMenuUtilStrings, kStringList, true },
|
||||
|
||||
{ kEoB2TransferPortraitFrames, kRawDataBe16, false },
|
||||
{ kEoB2TransferConvertTable, kRawData, false },
|
||||
@ -536,6 +537,19 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kEoB2IntroShapes01, kEoB2ShapeData, false },
|
||||
{ kEoB2IntroShapes04, kEoB2ShapeData, false },
|
||||
{ kEoB2IntroShapes07, kEoB2ShapeData, false },
|
||||
{ kEoB2IntroCpsDataStreet1, kRawData, false },
|
||||
{ kEoB2IntroCpsDataStreet2, kRawData, false },
|
||||
{ kEoB2IntroCpsDataDoorway1, kRawData, false },
|
||||
{ kEoB2IntroCpsDataDoorway2, kRawData, false },
|
||||
{ kEoB2IntroCpsDataWestwood, kRawData, false },
|
||||
{ kEoB2IntroCpsDataWinding, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban2, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban1, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban3, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban4, kRawData, false },
|
||||
{ kEoB2IntroCpsDataCoin, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban5, kRawData, false },
|
||||
{ kEoB2IntroCpsDataKhelban6, kRawData, false },
|
||||
|
||||
{ kEoB2FinaleStrings, kStringList, true },
|
||||
{ kEoB2CreditsData, kRawData, true },
|
||||
@ -566,6 +580,20 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kEoB2FinaleShapes07, kEoB2ShapeData, false },
|
||||
{ kEoB2FinaleShapes09, kEoB2ShapeData, false },
|
||||
{ kEoB2FinaleShapes10, kEoB2ShapeData, false },
|
||||
{ kEoB2FinaleCpsDataDragon1, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataDragon2, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataHurry1, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataHurry2, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataDestroy0, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataDestroy1, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataDestroy2, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataMagic, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataDestroy3, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataCredits2, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataCredits3, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataHeroes, kRawData, false },
|
||||
{ kEoB2FinaleCpsDataThanks, kRawData, false },
|
||||
|
||||
{ kEoB2NpcShapeData, kRawData, false },
|
||||
{ kEoBBaseClassModifierFlags, kRawData, false },
|
||||
{ kEoBBaseMonsterStepTable01, kRawData, false },
|
||||
@ -600,6 +628,230 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kEoB2WallOfForceNumH, kRawData, false },
|
||||
{ kEoB2WallOfForceShpId, kRawData, false },
|
||||
|
||||
{ kEoB2ItemIconShapeData00, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData01, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData02, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData03, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData04, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData05, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData06, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData07, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData08, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData09, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData10, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData11, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData12, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData13, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData14, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData15, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData16, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData17, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData18, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData19, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData20, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData21, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData22, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData23, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData24, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData25, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData26, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData27, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData28, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData29, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData30, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData31, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData32, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData33, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData34, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData35, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData36, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData37, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData38, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData39, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData40, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData41, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData42, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData43, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData44, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData45, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData46, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData47, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData48, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData49, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData50, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData51, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData52, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData53, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData54, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData55, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData56, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData57, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData58, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData59, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData60, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData61, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData62, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData63, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData64, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData65, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData66, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData67, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData68, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData69, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData70, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData71, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData72, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData73, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData74, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData75, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData76, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData77, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData78, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData79, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData80, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData81, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData82, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData83, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData84, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData85, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData86, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData87, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData88, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData89, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData90, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData91, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData92, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData93, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData94, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData95, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData96, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData97, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData98, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData99, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData100, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData101, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData102, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData103, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData104, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData105, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData106, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData107, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData108, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData109, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData110, kRawData, false },
|
||||
{ kEoB2ItemIconShapeData111, kRawData, false },
|
||||
|
||||
{ kEoB2LargeItemsShapeData00, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData01, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData02, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData03, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData04, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData05, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData06, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData07, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData08, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData09, kRawData, false },
|
||||
{ kEoB2LargeItemsShapeData10, kRawData, false },
|
||||
|
||||
{ kEoB2SmallItemsShapeData00, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData01, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData02, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData03, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData04, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData05, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData06, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData07, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData08, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData09, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData10, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData11, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData12, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData13, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData14, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData15, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData16, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData17, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData18, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData19, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData20, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData21, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData22, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData23, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData24, kRawData, false },
|
||||
{ kEoB2SmallItemsShapeData25, kRawData, false },
|
||||
|
||||
{ kEoB2ThrownShapeData00, kRawData, false },
|
||||
{ kEoB2ThrownShapeData01, kRawData, false },
|
||||
{ kEoB2ThrownShapeData02, kRawData, false },
|
||||
{ kEoB2ThrownShapeData03, kRawData, false },
|
||||
{ kEoB2ThrownShapeData04, kRawData, false },
|
||||
{ kEoB2ThrownShapeData05, kRawData, false },
|
||||
{ kEoB2ThrownShapeData06, kRawData, false },
|
||||
{ kEoB2ThrownShapeData07, kRawData, false },
|
||||
{ kEoB2ThrownShapeData08, kRawData, false },
|
||||
|
||||
{ kEoB2SpellShapeData00, kRawData, false },
|
||||
{ kEoB2SpellShapeData01, kRawData, false },
|
||||
{ kEoB2SpellShapeData02, kRawData, false },
|
||||
{ kEoB2SpellShapeData03, kRawData, false },
|
||||
|
||||
{ kEoB2TeleporterShapeData00, kRawData, false },
|
||||
{ kEoB2TeleporterShapeData01, kRawData, false },
|
||||
{ kEoB2TeleporterShapeData02, kRawData, false },
|
||||
{ kEoB2TeleporterShapeData03, kRawData, false },
|
||||
{ kEoB2TeleporterShapeData04, kRawData, false },
|
||||
{ kEoB2TeleporterShapeData05, kRawData, false },
|
||||
|
||||
{ kEoB2LightningColumnShapeData, kRawData, false },
|
||||
{ kEoB2DeadCharShapeData, kRawData, false },
|
||||
{ kEoB2DisabledCharGridShapeData, kRawData, false },
|
||||
{ kEoB2WeaponSlotGridShapeData, kRawData, false },
|
||||
{ kEoB2SmallGridShapeData, kRawData, false },
|
||||
{ kEoB2WideGridShapeData, kRawData, false },
|
||||
{ kEoB2RedSplatShapeData, kRawData, false },
|
||||
{ kEoB2GreenSplatShapeData, kRawData, false },
|
||||
|
||||
{ kEoB2FirebeamShapeData00, kRawData, false },
|
||||
{ kEoB2FirebeamShapeData01, kRawData, false },
|
||||
{ kEoB2FirebeamShapeData02, kRawData, false },
|
||||
|
||||
{ kEoB2SparkShapeData00, kRawData, false },
|
||||
{ kEoB2SparkShapeData01, kRawData, false },
|
||||
{ kEoB2SparkShapeData02, kRawData, false },
|
||||
|
||||
{ kEoB2CompassShapeData00, kRawData, false },
|
||||
{ kEoB2CompassShapeData01, kRawData, false },
|
||||
{ kEoB2CompassShapeData02, kRawData, false },
|
||||
{ kEoB2CompassShapeData03, kRawData, false },
|
||||
{ kEoB2CompassShapeData04, kRawData, false },
|
||||
{ kEoB2CompassShapeData05, kRawData, false },
|
||||
{ kEoB2CompassShapeData06, kRawData, false },
|
||||
{ kEoB2CompassShapeData07, kRawData, false },
|
||||
{ kEoB2CompassShapeData08, kRawData, false },
|
||||
{ kEoB2CompassShapeData09, kRawData, false },
|
||||
{ kEoB2CompassShapeData10, kRawData, false },
|
||||
{ kEoB2CompassShapeData11, kRawData, false },
|
||||
|
||||
{ kEoB2WallOfForceShapeData00, kRawData, false },
|
||||
{ kEoB2WallOfForceShapeData01, kRawData, false },
|
||||
{ kEoB2WallOfForceShapeData02, kRawData, false },
|
||||
{ kEoB2WallOfForceShapeData03, kRawData, false },
|
||||
{ kEoB2WallOfForceShapeData04, kRawData, false },
|
||||
{ kEoB2WallOfForceShapeData05, kRawData, false },
|
||||
|
||||
{ kEoB2UtilMenuStrings, kStringList, true },
|
||||
{ kEoB2Config2431Strings, kStringList, true },
|
||||
{ kEoB2KatakanaLines, kStringList, true },
|
||||
{ kEoB2KanaSelectStrings, kStringList, true },
|
||||
{ kEoB2FontDmpSearchTbl, kRawDataBe16, false },
|
||||
{ kEoB2Ascii2SjisTables, kStringList, false },
|
||||
{ kEoB2Ascii2SjisTables2, kStringList, false },
|
||||
{ kEoB2SaveNamePatterns, kStringList, false },
|
||||
|
||||
{ kEoB2PcmSoundEffectsIngame, kRawData, false },
|
||||
{ kEoB2PcmSoundEffectsIntro, kRawData, false },
|
||||
{ kEoB2PcmSoundEffectsFinale, kRawData, false },
|
||||
|
||||
// LANDS OF LORE
|
||||
|
||||
// Ingame
|
||||
@ -647,7 +899,6 @@ const ExtractFilename extractFilenames[] = {
|
||||
{ kRpgCommonDscX, kRawDataBe16, false },
|
||||
{ kLoLBaseDscY, kRawData, false },
|
||||
{ kRpgCommonDscTileIndex, kRawData, false },
|
||||
{ kRpgCommonDscUnk2, kRawData, false },
|
||||
{ kRpgCommonDscDoorShapeIndex, kRawData, false },
|
||||
{ kRpgCommonDscDimData1, kRawData, false },
|
||||
{ kRpgCommonDscDimData2, kRawData, false },
|
||||
|
@ -182,7 +182,6 @@ enum kExtractID {
|
||||
kRpgCommonDscShapeIndex,
|
||||
kRpgCommonDscX,
|
||||
kRpgCommonDscTileIndex,
|
||||
kRpgCommonDscUnk2,
|
||||
kRpgCommonDscDoorShapeIndex,
|
||||
kRpgCommonDscDimData1,
|
||||
kRpgCommonDscDimData2,
|
||||
@ -193,6 +192,7 @@ enum kExtractID {
|
||||
kRpgCommonDscDoorFrameY2,
|
||||
kRpgCommonDscDoorFrameIndex1,
|
||||
kRpgCommonDscDoorFrameIndex2,
|
||||
kRpgCommonDscDoorScaleOffs,
|
||||
kRpgCommonDscBlockIndex,
|
||||
|
||||
kEoBBaseChargenStrings1,
|
||||
@ -327,7 +327,6 @@ enum kExtractID {
|
||||
kEoBBaseWllFlagPreset,
|
||||
kEoBBaseDscShapeCoords,
|
||||
|
||||
kEoBBaseDscDoorScaleOffs,
|
||||
kEoBBaseDscDoorScaleMult1,
|
||||
kEoBBaseDscDoorScaleMult2,
|
||||
kEoBBaseDscDoorScaleMult3,
|
||||
@ -481,6 +480,7 @@ enum kExtractID {
|
||||
kEoB1Npc7Strings,
|
||||
|
||||
kEoB2MainMenuStrings,
|
||||
kEoB2MainMenuUtilStrings,
|
||||
|
||||
kEoB2TransferPortraitFrames,
|
||||
kEoB2TransferConvertTable,
|
||||
@ -536,6 +536,7 @@ enum kExtractID {
|
||||
kEoB2IntroAnimData41,
|
||||
kEoB2IntroAnimData42,
|
||||
kEoB2IntroAnimData43,
|
||||
|
||||
kEoB2IntroShapes00,
|
||||
kEoB2IntroShapes01,
|
||||
kEoB2IntroShapes04,
|
||||
@ -587,6 +588,258 @@ enum kExtractID {
|
||||
kEoB2WallOfForceNumH,
|
||||
kEoB2WallOfForceShpId,
|
||||
|
||||
// FM-Towns specific
|
||||
kEoB2IntroCpsDataStreet1,
|
||||
kEoB2IntroCpsDataStreet2,
|
||||
kEoB2IntroCpsDataDoorway1,
|
||||
kEoB2IntroCpsDataDoorway2,
|
||||
kEoB2IntroCpsDataWestwood,
|
||||
kEoB2IntroCpsDataWinding,
|
||||
kEoB2IntroCpsDataKhelban2,
|
||||
kEoB2IntroCpsDataKhelban1,
|
||||
kEoB2IntroCpsDataKhelban3,
|
||||
kEoB2IntroCpsDataKhelban4,
|
||||
kEoB2IntroCpsDataCoin,
|
||||
kEoB2IntroCpsDataKhelban5,
|
||||
kEoB2IntroCpsDataKhelban6,
|
||||
|
||||
kEoB2FinaleCpsDataDragon1,
|
||||
kEoB2FinaleCpsDataDragon2,
|
||||
kEoB2FinaleCpsDataHurry1,
|
||||
kEoB2FinaleCpsDataHurry2,
|
||||
kEoB2FinaleCpsDataDestroy0,
|
||||
kEoB2FinaleCpsDataDestroy1,
|
||||
kEoB2FinaleCpsDataDestroy2,
|
||||
kEoB2FinaleCpsDataMagic,
|
||||
kEoB2FinaleCpsDataDestroy3,
|
||||
kEoB2FinaleCpsDataCredits2,
|
||||
kEoB2FinaleCpsDataCredits3,
|
||||
kEoB2FinaleCpsDataHeroes,
|
||||
kEoB2FinaleCpsDataThanks,
|
||||
|
||||
kEoB2ItemIconShapeData00,
|
||||
kEoB2ItemIconShapeData01,
|
||||
kEoB2ItemIconShapeData02,
|
||||
kEoB2ItemIconShapeData03,
|
||||
kEoB2ItemIconShapeData04,
|
||||
kEoB2ItemIconShapeData05,
|
||||
kEoB2ItemIconShapeData06,
|
||||
kEoB2ItemIconShapeData07,
|
||||
kEoB2ItemIconShapeData08,
|
||||
kEoB2ItemIconShapeData09,
|
||||
kEoB2ItemIconShapeData10,
|
||||
kEoB2ItemIconShapeData11,
|
||||
kEoB2ItemIconShapeData12,
|
||||
kEoB2ItemIconShapeData13,
|
||||
kEoB2ItemIconShapeData14,
|
||||
kEoB2ItemIconShapeData15,
|
||||
kEoB2ItemIconShapeData16,
|
||||
kEoB2ItemIconShapeData17,
|
||||
kEoB2ItemIconShapeData18,
|
||||
kEoB2ItemIconShapeData19,
|
||||
kEoB2ItemIconShapeData20,
|
||||
kEoB2ItemIconShapeData21,
|
||||
kEoB2ItemIconShapeData22,
|
||||
kEoB2ItemIconShapeData23,
|
||||
kEoB2ItemIconShapeData24,
|
||||
kEoB2ItemIconShapeData25,
|
||||
kEoB2ItemIconShapeData26,
|
||||
kEoB2ItemIconShapeData27,
|
||||
kEoB2ItemIconShapeData28,
|
||||
kEoB2ItemIconShapeData29,
|
||||
kEoB2ItemIconShapeData30,
|
||||
kEoB2ItemIconShapeData31,
|
||||
kEoB2ItemIconShapeData32,
|
||||
kEoB2ItemIconShapeData33,
|
||||
kEoB2ItemIconShapeData34,
|
||||
kEoB2ItemIconShapeData35,
|
||||
kEoB2ItemIconShapeData36,
|
||||
kEoB2ItemIconShapeData37,
|
||||
kEoB2ItemIconShapeData38,
|
||||
kEoB2ItemIconShapeData39,
|
||||
kEoB2ItemIconShapeData40,
|
||||
kEoB2ItemIconShapeData41,
|
||||
kEoB2ItemIconShapeData42,
|
||||
kEoB2ItemIconShapeData43,
|
||||
kEoB2ItemIconShapeData44,
|
||||
kEoB2ItemIconShapeData45,
|
||||
kEoB2ItemIconShapeData46,
|
||||
kEoB2ItemIconShapeData47,
|
||||
kEoB2ItemIconShapeData48,
|
||||
kEoB2ItemIconShapeData49,
|
||||
kEoB2ItemIconShapeData50,
|
||||
kEoB2ItemIconShapeData51,
|
||||
kEoB2ItemIconShapeData52,
|
||||
kEoB2ItemIconShapeData53,
|
||||
kEoB2ItemIconShapeData54,
|
||||
kEoB2ItemIconShapeData55,
|
||||
kEoB2ItemIconShapeData56,
|
||||
kEoB2ItemIconShapeData57,
|
||||
kEoB2ItemIconShapeData58,
|
||||
kEoB2ItemIconShapeData59,
|
||||
kEoB2ItemIconShapeData60,
|
||||
kEoB2ItemIconShapeData61,
|
||||
kEoB2ItemIconShapeData62,
|
||||
kEoB2ItemIconShapeData63,
|
||||
kEoB2ItemIconShapeData64,
|
||||
kEoB2ItemIconShapeData65,
|
||||
kEoB2ItemIconShapeData66,
|
||||
kEoB2ItemIconShapeData67,
|
||||
kEoB2ItemIconShapeData68,
|
||||
kEoB2ItemIconShapeData69,
|
||||
kEoB2ItemIconShapeData70,
|
||||
kEoB2ItemIconShapeData71,
|
||||
kEoB2ItemIconShapeData72,
|
||||
kEoB2ItemIconShapeData73,
|
||||
kEoB2ItemIconShapeData74,
|
||||
kEoB2ItemIconShapeData75,
|
||||
kEoB2ItemIconShapeData76,
|
||||
kEoB2ItemIconShapeData77,
|
||||
kEoB2ItemIconShapeData78,
|
||||
kEoB2ItemIconShapeData79,
|
||||
kEoB2ItemIconShapeData80,
|
||||
kEoB2ItemIconShapeData81,
|
||||
kEoB2ItemIconShapeData82,
|
||||
kEoB2ItemIconShapeData83,
|
||||
kEoB2ItemIconShapeData84,
|
||||
kEoB2ItemIconShapeData85,
|
||||
kEoB2ItemIconShapeData86,
|
||||
kEoB2ItemIconShapeData87,
|
||||
kEoB2ItemIconShapeData88,
|
||||
kEoB2ItemIconShapeData89,
|
||||
kEoB2ItemIconShapeData90,
|
||||
kEoB2ItemIconShapeData91,
|
||||
kEoB2ItemIconShapeData92,
|
||||
kEoB2ItemIconShapeData93,
|
||||
kEoB2ItemIconShapeData94,
|
||||
kEoB2ItemIconShapeData95,
|
||||
kEoB2ItemIconShapeData96,
|
||||
kEoB2ItemIconShapeData97,
|
||||
kEoB2ItemIconShapeData98,
|
||||
kEoB2ItemIconShapeData99,
|
||||
kEoB2ItemIconShapeData100,
|
||||
kEoB2ItemIconShapeData101,
|
||||
kEoB2ItemIconShapeData102,
|
||||
kEoB2ItemIconShapeData103,
|
||||
kEoB2ItemIconShapeData104,
|
||||
kEoB2ItemIconShapeData105,
|
||||
kEoB2ItemIconShapeData106,
|
||||
kEoB2ItemIconShapeData107,
|
||||
kEoB2ItemIconShapeData108,
|
||||
kEoB2ItemIconShapeData109,
|
||||
kEoB2ItemIconShapeData110,
|
||||
kEoB2ItemIconShapeData111,
|
||||
|
||||
kEoB2LargeItemsShapeData00,
|
||||
kEoB2LargeItemsShapeData01,
|
||||
kEoB2LargeItemsShapeData02,
|
||||
kEoB2LargeItemsShapeData03,
|
||||
kEoB2LargeItemsShapeData04,
|
||||
kEoB2LargeItemsShapeData05,
|
||||
kEoB2LargeItemsShapeData06,
|
||||
kEoB2LargeItemsShapeData07,
|
||||
kEoB2LargeItemsShapeData08,
|
||||
kEoB2LargeItemsShapeData09,
|
||||
kEoB2LargeItemsShapeData10,
|
||||
|
||||
kEoB2SmallItemsShapeData00,
|
||||
kEoB2SmallItemsShapeData01,
|
||||
kEoB2SmallItemsShapeData02,
|
||||
kEoB2SmallItemsShapeData03,
|
||||
kEoB2SmallItemsShapeData04,
|
||||
kEoB2SmallItemsShapeData05,
|
||||
kEoB2SmallItemsShapeData06,
|
||||
kEoB2SmallItemsShapeData07,
|
||||
kEoB2SmallItemsShapeData08,
|
||||
kEoB2SmallItemsShapeData09,
|
||||
kEoB2SmallItemsShapeData10,
|
||||
kEoB2SmallItemsShapeData11,
|
||||
kEoB2SmallItemsShapeData12,
|
||||
kEoB2SmallItemsShapeData13,
|
||||
kEoB2SmallItemsShapeData14,
|
||||
kEoB2SmallItemsShapeData15,
|
||||
kEoB2SmallItemsShapeData16,
|
||||
kEoB2SmallItemsShapeData17,
|
||||
kEoB2SmallItemsShapeData18,
|
||||
kEoB2SmallItemsShapeData19,
|
||||
kEoB2SmallItemsShapeData20,
|
||||
kEoB2SmallItemsShapeData21,
|
||||
kEoB2SmallItemsShapeData22,
|
||||
kEoB2SmallItemsShapeData23,
|
||||
kEoB2SmallItemsShapeData24,
|
||||
kEoB2SmallItemsShapeData25,
|
||||
|
||||
kEoB2ThrownShapeData00,
|
||||
kEoB2ThrownShapeData01,
|
||||
kEoB2ThrownShapeData02,
|
||||
kEoB2ThrownShapeData03,
|
||||
kEoB2ThrownShapeData04,
|
||||
kEoB2ThrownShapeData05,
|
||||
kEoB2ThrownShapeData06,
|
||||
kEoB2ThrownShapeData07,
|
||||
kEoB2ThrownShapeData08,
|
||||
|
||||
kEoB2SpellShapeData00,
|
||||
kEoB2SpellShapeData01,
|
||||
kEoB2SpellShapeData02,
|
||||
kEoB2SpellShapeData03,
|
||||
|
||||
kEoB2TeleporterShapeData00,
|
||||
kEoB2TeleporterShapeData01,
|
||||
kEoB2TeleporterShapeData02,
|
||||
kEoB2TeleporterShapeData03,
|
||||
kEoB2TeleporterShapeData04,
|
||||
kEoB2TeleporterShapeData05,
|
||||
|
||||
kEoB2LightningColumnShapeData,
|
||||
kEoB2DeadCharShapeData,
|
||||
kEoB2DisabledCharGridShapeData,
|
||||
kEoB2WeaponSlotGridShapeData,
|
||||
kEoB2SmallGridShapeData,
|
||||
kEoB2WideGridShapeData,
|
||||
kEoB2RedSplatShapeData,
|
||||
kEoB2GreenSplatShapeData,
|
||||
|
||||
kEoB2FirebeamShapeData00,
|
||||
kEoB2FirebeamShapeData01,
|
||||
kEoB2FirebeamShapeData02,
|
||||
|
||||
kEoB2SparkShapeData00,
|
||||
kEoB2SparkShapeData01,
|
||||
kEoB2SparkShapeData02,
|
||||
|
||||
kEoB2CompassShapeData00,
|
||||
kEoB2CompassShapeData01,
|
||||
kEoB2CompassShapeData02,
|
||||
kEoB2CompassShapeData03,
|
||||
kEoB2CompassShapeData04,
|
||||
kEoB2CompassShapeData05,
|
||||
kEoB2CompassShapeData06,
|
||||
kEoB2CompassShapeData07,
|
||||
kEoB2CompassShapeData08,
|
||||
kEoB2CompassShapeData09,
|
||||
kEoB2CompassShapeData10,
|
||||
kEoB2CompassShapeData11,
|
||||
|
||||
kEoB2WallOfForceShapeData00,
|
||||
kEoB2WallOfForceShapeData01,
|
||||
kEoB2WallOfForceShapeData02,
|
||||
kEoB2WallOfForceShapeData03,
|
||||
kEoB2WallOfForceShapeData04,
|
||||
kEoB2WallOfForceShapeData05,
|
||||
|
||||
kEoB2UtilMenuStrings,
|
||||
kEoB2Config2431Strings,
|
||||
kEoB2KatakanaLines,
|
||||
kEoB2KanaSelectStrings,
|
||||
kEoB2FontDmpSearchTbl,
|
||||
kEoB2Ascii2SjisTables,
|
||||
kEoB2Ascii2SjisTables2,
|
||||
kEoB2SaveNamePatterns,
|
||||
kEoB2PcmSoundEffectsIngame,
|
||||
kEoB2PcmSoundEffectsIntro,
|
||||
kEoB2PcmSoundEffectsFinale,
|
||||
|
||||
kLoLIngamePakFiles,
|
||||
kLoLCharacterDefs,
|
||||
kLoLIngameSfxFiles,
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -95,11 +95,20 @@
|
||||
#include "resources/eob1_dos_german.h"
|
||||
#include "resources/eob1_dos_italian.h"
|
||||
|
||||
//#include "resources/eob1_pc98.h"
|
||||
//#include "resources/eob1_pc98_japanese.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"
|
||||
|
||||
//#include "resources/eob2_pc98.h"
|
||||
//#include "resources/eob2_pc98_japanese.h"
|
||||
|
||||
#include "resources/eob2_fmtowns.h"
|
||||
#include "resources/eob2_fmtowns_japanese.h"
|
||||
|
||||
// Lands of Lore
|
||||
#include "resources/lol_dos_demo.h"
|
||||
#include "resources/lol_dos_demo_english.h"
|
||||
@ -1095,7 +1104,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
{ kRpgCommonDscDoorScaleOffs, 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 },
|
||||
@ -1138,7 +1147,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -1467,7 +1475,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
{ kRpgCommonDscDoorScaleOffs, 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 },
|
||||
@ -1618,7 +1626,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -1719,11 +1726,521 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ kEoB2MonsterDustStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2MonsterDustStringsDOSGermanProvider },
|
||||
{ kEoB2KheldranStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2KheldranStringsDOSGermanProvider },
|
||||
{ kEoB2HornStrings, kEoB2, kPlatformDOS, kNoSpecial, DE_DEU, &kEoB2HornStringsDOSGermanProvider },
|
||||
{ kEoBBaseChargenStrings1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenStrings1FMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenStrings2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenStrings2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenStartLevels, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ChargenStartLevelsFMTownsProvider },
|
||||
{ kEoBBaseChargenStatStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenStatStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenRaceSexStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenRaceSexStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenClassStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenClassStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenAlignmentStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenAlignmentStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenEnterGameStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ChargenEnterGameStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseChargenClassMinStats, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ChargenClassMinStatsFMTownsProvider },
|
||||
{ kEoBBaseChargenRaceMinStats, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMinStatsFMTownsProvider },
|
||||
{ kEoBBaseChargenRaceMaxStats, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ChargenRaceMaxStatsFMTownsProvider },
|
||||
{ kEoBBaseSaveThrowTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable1FMTownsProvider },
|
||||
{ kEoBBaseSaveThrowTable2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable2FMTownsProvider },
|
||||
{ kEoBBaseSaveThrowTable3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable3FMTownsProvider },
|
||||
{ kEoBBaseSaveThrowTable4, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrowTable4FMTownsProvider },
|
||||
{ kEoBBaseSaveThrwLvlIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrwLvlIndexFMTownsProvider },
|
||||
{ kEoBBaseSaveThrwModDiv, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModDivFMTownsProvider },
|
||||
{ kEoBBaseSaveThrwModExt, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveThrwModExtFMTownsProvider },
|
||||
{ kEoBBasePryDoorStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PryDoorStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseWarningStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2WarningStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseItemSuffixStringsRings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ItemSuffixStringsRingsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseItemSuffixStringsPotions, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ItemSuffixStringsPotionsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseItemSuffixStringsWands, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ItemSuffixStringsWandsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseRipItemStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2RipItemStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseCursedString, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CursedStringFMTownsJapaneseProvider },
|
||||
{ kEoBBaseEnchantedString, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2EnchantedStringFMTownsProvider },
|
||||
{ kEoBBaseMagicObjectStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicObjectStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicObjectString5, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicObjectString5FMTownsJapaneseProvider },
|
||||
{ kEoBBasePatternSuffix, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PatternSuffixFMTownsJapaneseProvider },
|
||||
{ kEoBBasePatternGrFix1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PatternGrFix1FMTownsJapaneseProvider },
|
||||
{ kEoBBasePatternGrFix2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PatternGrFix2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseValidateArmorString, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ValidateArmorStringFMTownsJapaneseProvider },
|
||||
{ kEoBBaseValidateCursedString, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ValidateCursedStringFMTownsJapaneseProvider },
|
||||
{ kEoBBaseValidateNoDropString, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ValidateNoDropStringFMTownsJapaneseProvider },
|
||||
{ kEoBBasePotionStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PotionStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseWandStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2WandStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseItemMisuseStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ItemMisuseStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseTakenStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2TakenStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBasePotionEffectStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2PotionEffectStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseYesNoStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2YesNoStringsFMTownsJapaneseProvider },
|
||||
{ kRpgCommonMoreStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MoreStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseNpcMaxStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2NpcMaxStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseOkStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2OkStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseNpcJoinStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2NpcJoinStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseCancelStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CancelStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseAbortStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2AbortStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsMain, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsMainFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsSaveLoad, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsSaveLoadFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsOnOff, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsOnOffFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsSpells, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsSpellsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsRest, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsRestFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsDrop, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsDropFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsExit, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsExitFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsStarve, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsStarveFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsScribe, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsScribeFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsDrop2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsDrop2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsHead, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsHeadFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsPoison, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsPoisonFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsMgc, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsMgcFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsPrefs, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsPrefsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsRest2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsRest2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsRest3, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsRest3FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsRest4, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsRest4FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsDefeat, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsDefeatFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsSpec, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuStringsSpecFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMenuStringsSpellNo, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MenuStringsSpellNoFMTownsProvider },
|
||||
{ kEoBBaseMenuYesNoStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MenuYesNoStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseSpellLevelsMage, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsMageFMTownsProvider },
|
||||
{ kEoBBaseSpellLevelsCleric, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellLevelsClericFMTownsProvider },
|
||||
{ kEoBBaseNumSpellsCleric, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NumSpellsClericFMTownsProvider },
|
||||
{ kEoBBaseNumSpellsWisAdj, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NumSpellsWisAdjFMTownsProvider },
|
||||
{ kEoBBaseNumSpellsPal, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NumSpellsPalFMTownsProvider },
|
||||
{ kEoBBaseNumSpellsMage, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NumSpellsMageFMTownsProvider },
|
||||
{ kEoBBaseCharGuiStringsHp, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharGuiStringsHpFMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharGuiStringsWp2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharGuiStringsWp2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharGuiStringsWr, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharGuiStringsWrFMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharGuiStringsSt2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharGuiStringsSt2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharGuiStringsIn, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharGuiStringsInFMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharStatusStrings7, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharStatusStrings7FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharStatusStrings82, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharStatusStrings82FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharStatusStrings9, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharStatusStrings9FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharStatusStrings12, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharStatusStrings12FMTownsJapaneseProvider },
|
||||
{ kEoBBaseCharStatusStrings132, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2CharStatusStrings132FMTownsJapaneseProvider },
|
||||
{ kEoBBaseLevelGainStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2LevelGainStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseExperienceTable0, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable0FMTownsProvider },
|
||||
{ kEoBBaseExperienceTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable1FMTownsProvider },
|
||||
{ kEoBBaseExperienceTable2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable2FMTownsProvider },
|
||||
{ kEoBBaseExperienceTable3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable3FMTownsProvider },
|
||||
{ kEoBBaseExperienceTable4, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExperienceTable4FMTownsProvider },
|
||||
{ kEoBBaseBookNumbers, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2BookNumbersFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMageSpellsList, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MageSpellsListFMTownsJapaneseProvider },
|
||||
{ kEoBBaseClericSpellsList, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2ClericSpellsListFMTownsJapaneseProvider },
|
||||
{ kEoBBaseSpellNames, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2SpellNamesFMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings1FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings2FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings3, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings3FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings4, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings4FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings6, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings6FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings7, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings7FMTownsJapaneseProvider },
|
||||
{ kEoBBaseMagicStrings8, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MagicStrings8FMTownsJapaneseProvider },
|
||||
{ kEoBBaseExpObjectTlMode, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTlModeFMTownsProvider },
|
||||
{ kEoBBaseExpObjectTblIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTblIndexFMTownsProvider },
|
||||
{ kEoBBaseExpObjectShpStart, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectShpStartFMTownsProvider },
|
||||
{ kEoBBaseExpObjectTbl1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl1FMTownsProvider },
|
||||
{ kEoBBaseExpObjectTbl2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl2FMTownsProvider },
|
||||
{ kEoBBaseExpObjectTbl3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectTbl3FMTownsProvider },
|
||||
{ kEoBBaseExpObjectY, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ExpObjectYFMTownsProvider },
|
||||
{ kEoBBaseSparkDefSteps, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefStepsFMTownsProvider },
|
||||
{ kEoBBaseSparkDefSubSteps, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefSubStepsFMTownsProvider },
|
||||
{ kEoBBaseSparkDefShift, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefShiftFMTownsProvider },
|
||||
{ kEoBBaseSparkDefAdd, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefAddFMTownsProvider },
|
||||
{ kEoBBaseSparkDefX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefXFMTownsProvider },
|
||||
{ kEoBBaseSparkDefY, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkDefYFMTownsProvider },
|
||||
{ kEoBBaseSparkOfFlags1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags1FMTownsProvider },
|
||||
{ kEoBBaseSparkOfFlags2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkOfFlags2FMTownsProvider },
|
||||
{ kEoBBaseSparkOfShift, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkOfShiftFMTownsProvider },
|
||||
{ kEoBBaseSparkOfX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkOfXFMTownsProvider },
|
||||
{ kEoBBaseSparkOfY, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkOfYFMTownsProvider },
|
||||
{ kEoBBaseSpellProperties, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellPropertiesFMTownsProvider },
|
||||
{ kEoBBaseMagicFlightProps, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MagicFlightPropsFMTownsProvider },
|
||||
{ kEoBBaseTurnUndeadEffect, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TurnUndeadEffectFMTownsProvider },
|
||||
{ kEoBBaseBurningHandsDest, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2BurningHandsDestFMTownsProvider },
|
||||
{ kEoBBaseConeOfColdDest1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest1FMTownsProvider },
|
||||
{ kEoBBaseConeOfColdDest2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest2FMTownsProvider },
|
||||
{ kEoBBaseConeOfColdDest3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest3FMTownsProvider },
|
||||
{ kEoBBaseConeOfColdDest4, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdDest4FMTownsProvider },
|
||||
{ kEoBBaseConeOfColdGfxTbl, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ConeOfColdGfxTblFMTownsProvider },
|
||||
{ kRpgCommonDscDoorShapeIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorShapeIndexFMTownsProvider },
|
||||
{ kEoBBaseWllFlagPreset, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WllFlagPresetFMTownsProvider },
|
||||
{ kEoBBaseDscShapeCoords, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscShapeCoordsFMTownsProvider },
|
||||
{ kRpgCommonDscDoorScaleOffs, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleOffsFMTownsProvider },
|
||||
{ kEoBBaseDscDoorScaleMult1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult1FMTownsProvider },
|
||||
{ kEoBBaseDscDoorScaleMult2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult2FMTownsProvider },
|
||||
{ kEoBBaseDscDoorScaleMult3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorScaleMult3FMTownsProvider },
|
||||
{ kEoBBaseDscDoorType5Offs, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorType5OffsFMTownsProvider },
|
||||
{ kEoBBaseDscDoorY1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorY1FMTownsProvider },
|
||||
{ kRpgCommonDscDoorY2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorY2FMTownsProvider },
|
||||
{ kRpgCommonDscDoorFrameY1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY1FMTownsProvider },
|
||||
{ kRpgCommonDscDoorFrameY2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDoorFrameY2FMTownsProvider },
|
||||
{ kEoBBaseDscItemPosIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscItemPosIndexFMTownsProvider },
|
||||
{ kEoBBaseDscItemShpX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscItemShpXFMTownsProvider },
|
||||
{ kEoBBaseDscItemScaleIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscItemScaleIndexFMTownsProvider },
|
||||
{ kEoBBaseDscItemTileIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscItemTileIndexFMTownsProvider },
|
||||
{ kEoBBaseDscItemShapeMap, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscItemShapeMapFMTownsProvider },
|
||||
{ kEoBBaseDscTelptrShpCoords, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscTelptrShpCoordsFMTownsProvider },
|
||||
{ kEoBBasePortalSeqData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2PortalSeqDataFMTownsProvider },
|
||||
{ kEoBBaseDscMonsterFrmOffsTbl1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl1FMTownsProvider },
|
||||
{ kEoBBaseDscMonsterFrmOffsTbl2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscMonsterFrmOffsTbl2FMTownsProvider },
|
||||
{ kEoBBaseInvSlotX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2InvSlotXFMTownsProvider },
|
||||
{ kEoBBaseInvSlotY, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2InvSlotYFMTownsProvider },
|
||||
{ kEoBBaseSlotValidationFlags, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SlotValidationFlagsFMTownsProvider },
|
||||
{ kEoBBaseProjectileWeaponTypes, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ProjectileWeaponTypesFMTownsProvider },
|
||||
{ kEoBBaseWandTypes, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WandTypesFMTownsProvider },
|
||||
{ kEoBBaseDrawObjPosIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DrawObjPosIndexFMTownsProvider },
|
||||
{ kEoBBaseFlightObjFlipIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FlightObjFlipIndexFMTownsProvider },
|
||||
{ kEoBBaseFlightObjShpMap, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FlightObjShpMapFMTownsProvider },
|
||||
{ kEoBBaseFlightObjSclIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FlightObjSclIndexFMTownsProvider },
|
||||
{ kEoB2MainMenuStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MainMenuStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2MainMenuUtilStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MainMenuUtilStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2IntroStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2IntroCpsDataStreet1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataStreet1FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataStreet2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataStreet2FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataDoorway1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataDoorway1FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataDoorway2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataDoorway2FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataWestwood, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataWestwoodFMTownsProvider },
|
||||
{ kEoB2IntroCpsDataWinding, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataWindingFMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban2, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban2FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban1, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban1FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban3, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban3FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban4, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban4FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataCoin, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataCoinFMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban5, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban5FMTownsProvider },
|
||||
{ kEoB2IntroCpsDataKhelban6, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2IntroCpsDataKhelban6FMTownsProvider },
|
||||
{ kEoB2IntroAnimData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData00FMTownsProvider },
|
||||
{ kEoB2IntroAnimData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData01FMTownsProvider },
|
||||
{ kEoB2IntroAnimData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData02FMTownsProvider },
|
||||
{ kEoB2IntroAnimData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData03FMTownsProvider },
|
||||
{ kEoB2IntroAnimData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData04FMTownsProvider },
|
||||
{ kEoB2IntroAnimData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData05FMTownsProvider },
|
||||
{ kEoB2IntroAnimData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData06FMTownsProvider },
|
||||
{ kEoB2IntroAnimData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData07FMTownsProvider },
|
||||
{ kEoB2IntroAnimData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData08FMTownsProvider },
|
||||
{ kEoB2IntroAnimData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData09FMTownsProvider },
|
||||
{ kEoB2IntroAnimData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData10FMTownsProvider },
|
||||
{ kEoB2IntroAnimData11, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData11FMTownsProvider },
|
||||
{ kEoB2IntroAnimData12, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData12FMTownsProvider },
|
||||
{ kEoB2IntroAnimData13, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData13FMTownsProvider },
|
||||
{ kEoB2IntroAnimData14, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData14FMTownsProvider },
|
||||
{ kEoB2IntroAnimData15, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData15FMTownsProvider },
|
||||
{ kEoB2IntroAnimData16, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData16FMTownsProvider },
|
||||
{ kEoB2IntroAnimData17, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData17FMTownsProvider },
|
||||
{ kEoB2IntroAnimData18, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData18FMTownsProvider },
|
||||
{ kEoB2IntroAnimData19, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData19FMTownsProvider },
|
||||
{ kEoB2IntroAnimData20, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData20FMTownsProvider },
|
||||
{ kEoB2IntroAnimData21, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData21FMTownsProvider },
|
||||
{ kEoB2IntroAnimData22, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData22FMTownsProvider },
|
||||
{ kEoB2IntroAnimData23, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData23FMTownsProvider },
|
||||
{ kEoB2IntroAnimData24, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData24FMTownsProvider },
|
||||
{ kEoB2IntroAnimData25, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData25FMTownsProvider },
|
||||
{ kEoB2IntroAnimData26, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData26FMTownsProvider },
|
||||
{ kEoB2IntroAnimData27, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData27FMTownsProvider },
|
||||
{ kEoB2IntroAnimData28, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData28FMTownsProvider },
|
||||
{ kEoB2IntroAnimData29, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData29FMTownsProvider },
|
||||
{ kEoB2IntroAnimData30, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData30FMTownsProvider },
|
||||
{ kEoB2IntroAnimData31, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData31FMTownsProvider },
|
||||
{ kEoB2IntroAnimData32, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData32FMTownsProvider },
|
||||
{ kEoB2IntroAnimData33, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData33FMTownsProvider },
|
||||
{ kEoB2IntroAnimData34, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData34FMTownsProvider },
|
||||
{ kEoB2IntroAnimData35, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData35FMTownsProvider },
|
||||
{ kEoB2IntroAnimData36, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData36FMTownsProvider },
|
||||
{ kEoB2IntroAnimData37, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData37FMTownsProvider },
|
||||
{ kEoB2IntroAnimData38, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData38FMTownsProvider },
|
||||
{ kEoB2IntroAnimData39, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData39FMTownsProvider },
|
||||
{ kEoB2IntroAnimData40, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData40FMTownsProvider },
|
||||
{ kEoB2IntroAnimData41, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData41FMTownsProvider },
|
||||
{ kEoB2IntroAnimData42, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData42FMTownsProvider },
|
||||
{ kEoB2IntroAnimData43, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroAnimData43FMTownsProvider },
|
||||
{ kEoB2IntroShapes00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroShapes00FMTownsProvider },
|
||||
{ kEoB2IntroShapes01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroShapes01FMTownsProvider },
|
||||
{ kEoB2IntroShapes04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroShapes04FMTownsProvider },
|
||||
{ kEoB2IntroShapes07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2IntroShapes07FMTownsProvider },
|
||||
{ kEoB2FinaleStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2FinaleStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2FinaleCpsDataDragon1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDragon1FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataDragon2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDragon2FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataHurry1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataHurry1FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataHurry2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataHurry2FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataDestroy0, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDestroy0FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataDestroy1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDestroy1FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataDestroy2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDestroy2FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataMagic, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataMagicFMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataDestroy3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataDestroy3FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataCredits2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataCredits2FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataCredits3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataCredits3FMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataHeroes, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataHeroesFMTownsProvider },
|
||||
{ kEoB2FinaleCpsDataThanks, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleCpsDataThanksFMTownsProvider },
|
||||
{ kEoB2FinaleAnimData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData00FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData01FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData02FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData03FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData04FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData05FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData06FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData07FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData08FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData09FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData10FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData11, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData11FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData12, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData12FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData13, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData13FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData14, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData14FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData15, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData15FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData16, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData16FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData17, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData17FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData18, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData18FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData19, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData19FMTownsProvider },
|
||||
{ kEoB2FinaleAnimData20, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleAnimData20FMTownsProvider },
|
||||
{ kEoB2FinaleShapes00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes00FMTownsProvider },
|
||||
{ kEoB2FinaleShapes03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes03FMTownsProvider },
|
||||
{ kEoB2FinaleShapes07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes07FMTownsProvider },
|
||||
{ kEoB2FinaleShapes09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes09FMTownsProvider },
|
||||
{ kEoB2FinaleShapes10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FinaleShapes10FMTownsProvider },
|
||||
{ kEoB2NpcShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NpcShapeDataFMTownsProvider },
|
||||
{ kEoBBaseClassModifierFlags, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ClassModifierFlagsFMTownsProvider },
|
||||
{ kEoBBaseMonsterStepTable02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable02FMTownsProvider },
|
||||
{ kEoBBaseMonsterStepTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable1FMTownsProvider },
|
||||
{ kEoBBaseMonsterStepTable2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable2FMTownsProvider },
|
||||
{ kEoBBaseMonsterStepTable3, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterStepTable3FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttPosTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable1FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttPosTable22, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttPosTable22FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttUnkTable, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttUnkTableFMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttChkTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable1FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttChkTable2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttChkTable2FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttDstTable1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable1FMTownsProvider },
|
||||
{ kEoBBaseMonsterCloseAttDstTable2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterCloseAttDstTable2FMTownsProvider },
|
||||
{ kEoBBaseMonsterProximityTable, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterProximityTableFMTownsProvider },
|
||||
{ kEoBBaseFindBlockMonstersTable, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FindBlockMonstersTableFMTownsProvider },
|
||||
{ kEoBBaseMonsterDirChangeTable, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2MonsterDirChangeTableFMTownsProvider },
|
||||
{ kEoBBaseMonsterDistAttStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MonsterDistAttStringsFMTownsJapaneseProvider },
|
||||
{ kEoBBaseNpcPresets, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2NpcPresetsFMTownsProvider },
|
||||
{ kEoB2Npc1Strings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2Npc1StringsFMTownsJapaneseProvider },
|
||||
{ kEoB2Npc2Strings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2Npc2StringsFMTownsJapaneseProvider },
|
||||
{ kEoB2MonsterDustStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2MonsterDustStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2DreamSteps, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DreamStepsFMTownsProvider },
|
||||
{ kEoB2KheldranStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2KheldranStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2HornStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2HornStringsFMTownsJapaneseProvider },
|
||||
{ kEoB2HornSounds, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2HornSoundsFMTownsProvider },
|
||||
{ kEoB2WallOfForceDsX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsXFMTownsProvider },
|
||||
{ kEoB2WallOfForceDsY, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceDsYFMTownsProvider },
|
||||
{ kEoB2WallOfForceNumW, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumWFMTownsProvider },
|
||||
{ kEoB2WallOfForceNumH, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceNumHFMTownsProvider },
|
||||
{ kEoB2WallOfForceShpId, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShpIdFMTownsProvider },
|
||||
{ kRpgCommonDscShapeIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscShapeIndexFMTownsProvider },
|
||||
{ kRpgCommonDscX, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscXFMTownsProvider },
|
||||
{ kRpgCommonDscTileIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscTileIndexFMTownsProvider },
|
||||
{ kRpgCommonDscDimData1, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDimData1FMTownsProvider },
|
||||
{ kRpgCommonDscDimData2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDimData2FMTownsProvider },
|
||||
{ kRpgCommonDscBlockMap, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscBlockMapFMTownsProvider },
|
||||
{ kRpgCommonDscDimMap, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscDimMapFMTownsProvider },
|
||||
{ kRpgCommonDscBlockIndex, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DscBlockIndexFMTownsProvider },
|
||||
{ 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 },
|
||||
{ kEoB2ItemIconShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData00FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData01FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData02FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData03FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData04FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData05FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData06FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData07FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData08FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData09FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData10FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData11, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData11FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData12, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData12FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData13, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData13FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData14, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData14FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData15, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData15FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData16, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData16FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData17, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData17FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData18, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData18FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData19, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData19FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData20, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData20FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData21, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData21FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData22, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData22FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData23, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData23FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData24, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData24FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData25, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData25FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData26, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData26FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData27, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData27FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData28, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData28FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData29, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData29FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData30, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData30FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData31, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData31FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData32, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData32FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData33, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData33FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData34, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData34FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData35, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData35FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData36, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData36FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData37, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData37FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData38, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData38FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData39, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData39FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData40, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData40FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData41, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData41FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData42, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData42FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData43, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData43FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData44, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData44FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData45, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData45FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData46, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData46FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData47, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData47FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData48, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData48FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData49, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData49FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData50, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData50FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData51, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData51FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData52, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData52FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData53, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData53FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData54, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData54FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData55, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData55FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData56, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData56FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData57, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData57FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData58, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData58FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData59, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData59FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData60, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData60FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData61, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData61FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData62, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData62FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData63, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData63FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData64, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData64FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData65, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData65FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData66, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData66FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData67, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData67FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData68, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData68FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData69, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData69FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData70, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData70FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData71, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData71FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData72, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData72FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData73, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData73FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData74, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData74FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData75, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData75FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData76, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData76FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData77, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData77FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData78, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData78FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData79, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData79FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData80, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData80FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData81, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData81FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData82, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData82FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData83, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData83FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData84, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData84FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData85, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData85FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData86, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData86FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData87, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData87FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData88, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData88FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData89, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData89FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData90, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData90FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData91, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData91FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData92, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData92FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData93, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData93FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData94, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData94FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData95, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData95FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData96, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData96FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData97, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData97FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData98, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData98FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData99, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData99FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData100, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData100FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData101, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData101FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData102, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData102FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData103, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData103FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData104, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData104FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData105, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData105FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData106, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData106FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData107, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData107FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData108, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData108FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData109, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData109FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData110, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData110FMTownsProvider },
|
||||
{ kEoB2ItemIconShapeData111, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ItemIconShapeData111FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData00FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData01FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData02FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData03FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData04FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData05FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData06FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData07FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData08FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData09FMTownsProvider },
|
||||
{ kEoB2LargeItemsShapeData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LargeItemsShapeData10FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData00FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData01FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData02FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData03FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData04FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData05FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData06FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData07FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData08FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData09FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData10FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData11, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData11FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData12, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData12FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData13, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData13FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData14, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData14FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData15, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData15FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData16, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData16FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData17, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData17FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData18, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData18FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData19, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData19FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData20, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData20FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData21, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData21FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData22, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData22FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData23, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData23FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData24, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData24FMTownsProvider },
|
||||
{ kEoB2SmallItemsShapeData25, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallItemsShapeData25FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData00FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData01FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData02FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData03FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData04FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData05FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData06FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData07FMTownsProvider },
|
||||
{ kEoB2ThrownShapeData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2ThrownShapeData08FMTownsProvider },
|
||||
{ kEoB2SpellShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellShapeData00FMTownsProvider },
|
||||
{ kEoB2SpellShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellShapeData01FMTownsProvider },
|
||||
{ kEoB2SpellShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellShapeData02FMTownsProvider },
|
||||
{ kEoB2SpellShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SpellShapeData03FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData00FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData01FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData02FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData03FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData04FMTownsProvider },
|
||||
{ kEoB2TeleporterShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2TeleporterShapeData05FMTownsProvider },
|
||||
{ kEoB2LightningColumnShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2LightningColumnShapeDataFMTownsProvider },
|
||||
{ kEoB2DeadCharShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DeadCharShapeDataFMTownsProvider },
|
||||
{ kEoB2DisabledCharGridShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2DisabledCharGridShapeDataFMTownsProvider },
|
||||
{ kEoB2WeaponSlotGridShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WeaponSlotGridShapeDataFMTownsProvider },
|
||||
{ kEoB2SmallGridShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SmallGridShapeDataFMTownsProvider },
|
||||
{ kEoB2WideGridShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WideGridShapeDataFMTownsProvider },
|
||||
{ kEoB2RedSplatShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2RedSplatShapeDataFMTownsProvider },
|
||||
{ kEoB2GreenSplatShapeData, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2GreenSplatShapeDataFMTownsProvider },
|
||||
{ kEoB2FirebeamShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FirebeamShapeData00FMTownsProvider },
|
||||
{ kEoB2FirebeamShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FirebeamShapeData01FMTownsProvider },
|
||||
{ kEoB2FirebeamShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FirebeamShapeData02FMTownsProvider },
|
||||
{ kEoB2SparkShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkShapeData00FMTownsProvider },
|
||||
{ kEoB2SparkShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkShapeData01FMTownsProvider },
|
||||
{ kEoB2SparkShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SparkShapeData02FMTownsProvider },
|
||||
{ kEoB2CompassShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData00FMTownsProvider },
|
||||
{ kEoB2CompassShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData01FMTownsProvider },
|
||||
{ kEoB2CompassShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData02FMTownsProvider },
|
||||
{ kEoB2CompassShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData03FMTownsProvider },
|
||||
{ kEoB2CompassShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData04FMTownsProvider },
|
||||
{ kEoB2CompassShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData05FMTownsProvider },
|
||||
{ kEoB2CompassShapeData06, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData06FMTownsProvider },
|
||||
{ kEoB2CompassShapeData07, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData07FMTownsProvider },
|
||||
{ kEoB2CompassShapeData08, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData08FMTownsProvider },
|
||||
{ kEoB2CompassShapeData09, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData09FMTownsProvider },
|
||||
{ kEoB2CompassShapeData10, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData10FMTownsProvider },
|
||||
{ kEoB2CompassShapeData11, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2CompassShapeData11FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData00, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData00FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData01, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData01FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData02, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData02FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData03, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData03FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData04, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData04FMTownsProvider },
|
||||
{ kEoB2WallOfForceShapeData05, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2WallOfForceShapeData05FMTownsProvider },
|
||||
{ kEoB2UtilMenuStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2UtilMenuStringsFMTownsProvider },
|
||||
{ kEoB2Config2431Strings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2Config2431StringsFMTownsProvider },
|
||||
{ kEoB2KatakanaLines, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2KatakanaLinesFMTownsProvider },
|
||||
{ kEoB2KanaSelectStrings, kEoB2, kPlatformFMTowns, kNoSpecial, JA_JPN, &kEoB2KanaSelectStringsFMTownsProvider },
|
||||
{ kEoB2FontDmpSearchTbl, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2FontDmpSearchTblFMTownsProvider },
|
||||
{ kEoB2Ascii2SjisTables, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2Ascii2SjisTablesFMTownsProvider },
|
||||
{ kEoB2Ascii2SjisTables2, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2Ascii2SjisTables2FMTownsProvider },
|
||||
{ kEoB2SaveNamePatterns, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2SaveNamePatternsFMTownsProvider },
|
||||
{ kEoB2PcmSoundEffectsIngame, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2PcmSoundEffectsIngameFMTownsProvider },
|
||||
{ kEoB2PcmSoundEffectsIntro, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2PcmSoundEffectsIntroFMTownsProvider },
|
||||
{ kEoB2PcmSoundEffectsFinale, kEoB2, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kEoB2PcmSoundEffectsFinaleFMTownsProvider },
|
||||
{ kLoLIngamePakFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngamePakFilesDOSProvider },
|
||||
{ kLoLCharacterDefs, kLoL, kPlatformDOS, kNoSpecial, EN_ANY, &kLoLCharacterDefsDOSEnglishProvider },
|
||||
{ kLoLIngameSfxFiles, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLIngameSfxFilesDOSProvider },
|
||||
@ -1764,7 +2281,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -1775,6 +2291,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorY2DOSProvider },
|
||||
{ kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1DOSProvider },
|
||||
{ kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2DOSProvider },
|
||||
{ kRpgCommonDscDoorScaleOffs, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleOffsDOSProvider },
|
||||
{ kLoLDscDoorScale, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleDOSProvider },
|
||||
{ kLoLDscDoor4, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoor4DOSProvider },
|
||||
{ kLoLDscDoorX, kLoL, kPlatformDOS, kNoSpecial, UNK_LANG, &kLoLDscDoorXDOSProvider },
|
||||
@ -1839,7 +2356,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -1850,6 +2366,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ kRpgCommonDscDoorY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorY2PC98Provider },
|
||||
{ kRpgCommonDscDoorFrameY1, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1PC98Provider },
|
||||
{ kRpgCommonDscDoorFrameY2, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2PC98Provider },
|
||||
{ kRpgCommonDscDoorScaleOffs, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleOffsPC98Provider },
|
||||
{ kLoLDscDoorScale, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorScalePC98Provider },
|
||||
{ kLoLDscDoor4, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoor4PC98Provider },
|
||||
{ kLoLDscDoorX, kLoL, kPlatformPC98, kNoSpecial, UNK_LANG, &kLoLDscDoorXPC98Provider },
|
||||
@ -1911,7 +2428,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -1922,6 +2438,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ kRpgCommonDscDoorY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorY2FMTownsProvider },
|
||||
{ kRpgCommonDscDoorFrameY1, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY1FMTownsProvider },
|
||||
{ kRpgCommonDscDoorFrameY2, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorFrameY2FMTownsProvider },
|
||||
{ kRpgCommonDscDoorScaleOffs, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleOffsFMTownsProvider },
|
||||
{ kLoLDscDoorScale, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorScaleFMTownsProvider },
|
||||
{ kLoLDscDoor4, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoor4FMTownsProvider },
|
||||
{ kLoLDscDoorX, kLoL, kPlatformFMTowns, kNoSpecial, UNK_LANG, &kLoLDscDoorXFMTownsProvider },
|
||||
@ -1989,7 +2506,6 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ 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 },
|
||||
@ -2000,6 +2516,7 @@ static const ResourceProvider resourceProviders[] = {
|
||||
{ kRpgCommonDscDoorY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorY2DOSCDProvider },
|
||||
{ kRpgCommonDscDoorFrameY1, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY1DOSCDProvider },
|
||||
{ kRpgCommonDscDoorFrameY2, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorFrameY2DOSCDProvider },
|
||||
{ kRpgCommonDscDoorScaleOffs, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorScaleOffsDOSCDProvider },
|
||||
{ kLoLDscDoorScale, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorScaleDOSCDProvider },
|
||||
{ kLoLDscDoor4, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoor4DOSCDProvider },
|
||||
{ kLoLDscDoorX, kLoL, kPlatformDOS, kTalkieVersion, UNK_LANG, &kLoLDscDoorXDOSCDProvider },
|
||||
|
@ -1389,14 +1389,6 @@ static const byte kEoB1DscTileIndexDOS[18] = {
|
||||
|
||||
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,
|
||||
|
@ -2330,14 +2330,6 @@ static const byte kEoB2DscTileIndexDOS[18] = {
|
||||
|
||||
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,
|
||||
|
73658
devtools/create_kyradat/resources/eob2_fmtowns.h
Normal file
73658
devtools/create_kyradat/resources/eob2_fmtowns.h
Normal file
File diff suppressed because it is too large
Load Diff
938
devtools/create_kyradat/resources/eob2_fmtowns_japanese.h
Normal file
938
devtools/create_kyradat/resources/eob2_fmtowns_japanese.h
Normal file
@ -0,0 +1,938 @@
|
||||
static const char *const kEoB2ChargenStrings1FMTownsJapanese[9] = {
|
||||
"\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x83\x81\x83\x93\x83""o""\x81""[""\x82\xAA\x91""S""\x88\xF5""\r""\x82\xBB\x82\xEB\x82\xA2\x82\xDC\x82\xB5\x82\xBD\x81""B""\x82""o""\x82""k""\x82""`""\x82""x""\x83""{""\x83""^""\x83\x93""\r""\x82\xA9\x81""A""\x83""L""\x81""[""\x83""{""\x81""[""\x83""h""\x82\xCC\x82""o""\x83""L""\x81""[""\x82\xF0""\r""\x89\x9F\x82\xB7\x82\xC6\x83""Q""\x81""[""\x83\x80\x82\xAA\x8E""n""\x82\xDC\x82\xE8\x82\xDC\x82\xB7\x81""B",
|
||||
" ",
|
||||
"AC\rHP\rLVL",
|
||||
"%s\r%d\r%d\r%d\r%d\r%d",
|
||||
"%d\r%d",
|
||||
"%d",
|
||||
"%d/%d",
|
||||
"%d/%d/%d",
|
||||
"\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xF0\x8D\xEC\x82\xE9\x82\xBD\x82\xDF\x82\xCC""\r""\x83""{""\x83""b""\x83""N""\x83""X""\x82\xF0\x8E""w""\x92\xE8\x82\xB5\x82\xC4\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ChargenStrings1FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenStrings1FMTownsJapanese), kEoB2ChargenStrings1FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenStrings2FMTownsJapanese[12] = {
|
||||
"%s",
|
||||
"%d",
|
||||
"%s",
|
||||
"%d",
|
||||
"%d",
|
||||
"%d",
|
||||
"%s",
|
||||
"%d",
|
||||
"SELECT RACE:",
|
||||
"SELECT CLASS:",
|
||||
"SELECT ALIGNMENT:",
|
||||
"Name:"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ChargenStrings2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenStrings2FMTownsJapanese), kEoB2ChargenStrings2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenStatStringsFMTownsJapanese[12] = {
|
||||
"STR",
|
||||
"INT",
|
||||
"WIS",
|
||||
"DEX",
|
||||
"CON",
|
||||
"CHA",
|
||||
"STR",
|
||||
"INT",
|
||||
"WIS",
|
||||
"DEX",
|
||||
"CON",
|
||||
"CHA"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ChargenStatStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenStatStringsFMTownsJapanese), kEoB2ChargenStatStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenRaceSexStringsFMTownsJapanese[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 kEoB2ChargenRaceSexStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenRaceSexStringsFMTownsJapanese), kEoB2ChargenRaceSexStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenClassStringsFMTownsJapanese[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 kEoB2ChargenClassStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenClassStringsFMTownsJapanese), kEoB2ChargenClassStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenAlignmentStringsFMTownsJapanese[9] = {
|
||||
"LAWFUL GOOD",
|
||||
"NEUTRAL GOOD",
|
||||
"CHAOTIC GOOD",
|
||||
"LAWFUL NEUTRAL",
|
||||
"TRUE NEUTRAL",
|
||||
"CHAOTIC NEUTRAL",
|
||||
"LAWFUL EVIL",
|
||||
"NEUTRAL EVIL",
|
||||
"CHAOTIC EVIL"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ChargenAlignmentStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenAlignmentStringsFMTownsJapanese), kEoB2ChargenAlignmentStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ChargenEnterGameStringsFMTownsJapanese[1] = {
|
||||
" ""\x83""Q""\x81""[""\x83\x80\x82\xF0\x8E""n""\x82\xDF\x82\xDC\x82\xB7\x81""B\r ""\x8F\xAD\x81""X""\x82\xA8\x91\xD2\x82\xBF\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ChargenEnterGameStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ChargenEnterGameStringsFMTownsJapanese), kEoB2ChargenEnterGameStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PryDoorStringsFMTownsJapanese[8] = {
|
||||
"\r",
|
||||
"\x97\xCD\x82\xB8\x82\xAD\x82\xC5\x83""h""\x83""A""\x82\xF0\x8A""J""\x82\xAF\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xC5\x82\xAB\x82\xBB\x82\xA4\x82\xC9\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x06\x04\x83""h""\x83""A""\x82\xF0\x82\xB1\x82\xB6\x8A""J""\x82\xAF\x82\xBD\x81""B\r",
|
||||
"\x06\x06\x83""h""\x83""A""\x82\xF0\x97\xCD\x82\xB8\x82\xAD\x82\xC5\x8A""J""\x82\xAF\x82\xE6\x82\xA4\x82\xC6\x82\xB5\x82\xBD\x82\xAA\x8E\xB8\x94""s""\x82\xB5\x82\xBD\x81""B\r",
|
||||
"\x83""A""\x83""C""\x83""e""\x83\x80\x82\xF0\x82\xBB\x82\xB1\x82\xC9\x92""u""\x82\xAD\x82\xB1\x82\xC6\x82\xCD\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x82\xBB\x82\xCC\x83""A""\x83""C""\x83""e""\x83\x80\x82\xCD\x91\xE5\x82\xAB\x82\xB7\x82\xAC\x82\xC4\x93\xFC\x82\xE7\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x92""N""\x82\xE0\x83""h""\x83""A""\x82\xF0\x82\xB1\x82\xB6\x8A""J""\x82\xAF\x82\xE9\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PryDoorStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PryDoorStringsFMTownsJapanese), kEoB2PryDoorStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2WarningStringsFMTownsJapanese[4] = {
|
||||
"\x82\xBB\x82\xBF\x82\xE7\x82\xD6\x82\xCD\x8D""s""\x82\xAF\x82\xC8\x82\xA2\x81""B\r",
|
||||
"%s""\x82\xCD\x95\xA8\x82\xF0\x90""H""\x82\xD7\x82\xE7\x82\xEA\x82\xE9\x8F\xF3\x91\xD4\x82\xC5\x82\xCD\x82\xC8\x82\xA2\x81""I\r",
|
||||
"\x82\xBB\x82\xCC\x90""H""\x97\xBF\x82\xCD\x95\x85\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""I""\x90""H""\x82\xD7\x82\xE9\x8B""C""\x82\xAA\x82\xB5\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x90""H""\x82\xD7\x95\xA8\x88\xC8\x8A""O""\x82\xCD\x90""H""\x82\xD7\x82\xE7\x82\xEA\x82\xC8\x82\xA2\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2WarningStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2WarningStringsFMTownsJapanese), kEoB2WarningStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ItemSuffixStringsRingsFMTownsJapanese[4] = {
|
||||
"\x83""A""\x83""h""\x81""[""\x83\x93\x83\x81\x83\x93\x83""g",
|
||||
"\x83""E""\x83""C""\x83""U""\x81""[""\x83""h""\x83\x8A\x81""[",
|
||||
"\x83""T""\x83""X""\x83""e""\x83""B""\x83""i""\x83\x93\x83""X",
|
||||
"\x83""t""\x83""F""\x83""U""\x81""[""\x83""t""\x83""H""\x81""[""\x83\x8B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ItemSuffixStringsRingsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsRingsFMTownsJapanese), kEoB2ItemSuffixStringsRingsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ItemSuffixStringsPotionsFMTownsJapanese[8] = {
|
||||
"\x83""W""\x83\x83\x83""C""\x83""A""\x83\x93\x83""g""\x81""E""\x83""X""\x83""g""\x83\x8C\x83\x93\x83""O""\x83""X",
|
||||
"\x83""q""\x81""[""\x83\x8A\x83\x93\x83""O",
|
||||
"\x83""G""\x83""L""\x83""X""\x83""g""\x83\x89\x81""E""\x83""q""\x81""[""\x83\x8A\x83\x93\x83""O",
|
||||
"\x83""|""\x83""C""\x83""Y""\x83\x93",
|
||||
"\x83""o""\x83""C""\x83""^""\x83\x8A\x83""e""\x83""B",
|
||||
"\x83""X""\x83""s""\x81""[""\x83""h",
|
||||
"\x83""C""\x83\x93\x83""r""\x83""W""\x83""r""\x83\x8A\x83""e""\x83""B",
|
||||
"\x83""L""\x83\x85\x83""A""\x81""E""\x83""|""\x83""C""\x83""Y""\x83\x93"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ItemSuffixStringsPotionsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsPotionsFMTownsJapanese), kEoB2ItemSuffixStringsPotionsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ItemSuffixStringsWandsFMTownsJapanese[8] = {
|
||||
"\x82""r""\x82\x94\x82\x89\x82\x83\x82\x8B",
|
||||
"\x82""k""\x82\x89\x82\x87\x82\x88\x82\x94\x82\x8E\x82\x89\x82\x8E\x82\x87",
|
||||
"\x82""e""\x82\x92\x82\x8F\x82\x93\x82\x94",
|
||||
"\x82""b""\x82\x95\x82\x92\x82\x89\x82\x8E\x82\x87",
|
||||
"\x82""e""\x82\x89\x82\x92\x82\x85\x82\x82\x82\x81\x82\x8C\x82\x8C",
|
||||
"\x82""r""\x82\x94\x82\x81\x82\x92\x82\x86\x82\x89\x82\x92\x82\x85",
|
||||
"\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83\x81""@""\x82""l""\x82\x89\x82\x93\x82\x93\x82\x89\x82\x8C\x82\x85",
|
||||
"\x82""c""\x82\x89\x82\x93\x82\x90\x82\x85\x82\x8C\x81""@""\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ItemSuffixStringsWandsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ItemSuffixStringsWandsFMTownsJapanese), kEoB2ItemSuffixStringsWandsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2RipItemStringsFMTownsJapanese[3] = {
|
||||
"%s""\x82\xCC",
|
||||
"%s""\x82\xCC",
|
||||
"\x82\xCD\x96\xB3\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2RipItemStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2RipItemStringsFMTownsJapanese), kEoB2RipItemStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CursedStringFMTownsJapanese[1] = {
|
||||
"%d""\x82\xCC\x8E\xF4\x82\xED\x82\xEA\x82\xBD""%s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CursedStringFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CursedStringFMTownsJapanese), kEoB2CursedStringFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicObjectStringsFMTownsJapanese[5] = {
|
||||
"\x83\x81\x83""C""\x83""W""\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
|
||||
"\x83""N""\x83\x8C\x83\x8A\x83""b""\x83""N""\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B",
|
||||
"\x83\x8A\x83\x93\x83""O",
|
||||
"\x83""|""\x81""[""\x83""V""\x83\x87\x83\x93",
|
||||
"\x83\x8F\x83\x93\x83""h"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicObjectStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicObjectStringsFMTownsJapanese), kEoB2MagicObjectStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicObjectString5FMTownsJapanese[1] = {
|
||||
"\x82""r""\x82\x94\x82\x89\x82\x83\x82\x8B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicObjectString5FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicObjectString5FMTownsJapanese), kEoB2MagicObjectString5FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PatternSuffixFMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC""%s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PatternSuffixFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PatternSuffixFMTownsJapanese), kEoB2PatternSuffixFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PatternGrFix1FMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC""%s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PatternGrFix1FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PatternGrFix1FMTownsJapanese), kEoB2PatternGrFix1FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PatternGrFix2FMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC""%s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PatternGrFix2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PatternGrFix2FMTownsJapanese), kEoB2PatternGrFix2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ValidateArmorStringFMTownsJapanese[1] = {
|
||||
"%s""\x82\xCD\x82\xBB\x82\xCC\x83""^""\x83""C""\x83""v""\x82\xCC\x96""h""\x8B\xEF\x82\xF0\x90""g""\x82\xC9\x82\xC2\x82\xAF\x82\xE7\x82\xEA\x82\xC8\x82\xA2\x81""B\r",
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ValidateArmorStringFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ValidateArmorStringFMTownsJapanese), kEoB2ValidateArmorStringFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ValidateCursedStringFMTownsJapanese[1] = {
|
||||
"%s""\x82\xCD\x95\x90\x8A\xED\x82\xF0\x8A""O""\x82\xB7\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""I""\x82\xBB\x82\xCC\x95\x90\x8A\xED\x82\xCD\x8E\xF4\x82\xED\x82\xEA\x82\xC4\x82\xA2\x82\xE9\x81""I\r",
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ValidateCursedStringFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ValidateCursedStringFMTownsJapanese), kEoB2ValidateCursedStringFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ValidateNoDropStringFMTownsJapanese[1] = {
|
||||
"\x82\xB1\x82\xCC\x83""A""\x83""C""\x83""e""\x83\x80\x82\xCD\x82\xBB\x82\xB1\x82\xC9\x92""u""\x82\xAF\x82\xC8\x82\xA2\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ValidateNoDropStringFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ValidateNoDropStringFMTownsJapanese), kEoB2ValidateNoDropStringFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PotionStringsFMTownsJapanese[2] = {
|
||||
"\x93\xC5\x82\xF0\x8E\xF3\x82\xAF\x82\xBD",
|
||||
"%s""\x82\xCD""%s""\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PotionStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PotionStringsFMTownsJapanese), kEoB2PotionStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2WandStringsFMTownsJapanese[1] = {
|
||||
"\x82\xBB\x82\xCC\x83\x8F\x83\x93\x83""h""\x82\xC9\x82\xCD\x96\x82\x97\xCD\x82\xAA\x8E""c""\x82\xC1\x82\xC4\x82\xA2\x82\xC8\x82\xA2\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2WandStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2WandStringsFMTownsJapanese), kEoB2WandStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ItemMisuseStringsFMTownsJapanese[3] = {
|
||||
"\x82\xCD\x82\xBB\x82\xCC\x83""A""\x83""C""\x83""e""\x83\x80\x82\xF0\x8E""g""\x82\xA6\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x82\xB1\x82\xCC\x83""A""\x83""C""\x83""e""\x83\x80\x82\xCD\x90""g""\x82\xC9\x82\xC2\x82\xAF\x82\xC4\x82\xA2\x82\xEA\x82\xCE\x8E\xA9\x93\xAE\x93""I""\x82\xC9\x8C\xF8\x89\xCA\x82\xF0\x94\xAD\x8A\xF6\x82\xB7\x82\xE9\x81""B\r",
|
||||
"\x83""A""\x83""C""\x83""e""\x83\x80\x82\xCC\x8E""g""\x82\xA2\x95\xFB\x82\xAA\x8A\xD4\x88\xE1\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ItemMisuseStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ItemMisuseStringsFMTownsJapanese), kEoB2ItemMisuseStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2TakenStringsFMTownsJapanese[1] = {
|
||||
"\x82\xF0\x8E\xE6\x82\xC1\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2TakenStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2TakenStringsFMTownsJapanese), kEoB2TakenStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2PotionEffectStringsFMTownsJapanese[8] = {
|
||||
"\x97\xCD\x82\xAA\x82\xDD\x82\xC8\x82\xAC\x82\xC1\x82\xC4\x82\xAB\x82\xBD",
|
||||
"\x8B""C""\x95\xAA\x82\xAA\x82\xE6\x82\xAD\x82\xC8\x82\xC1\x82\xBD",
|
||||
"\x8B""C""\x95\xAA\x82\xAA\x82\xA9\x82\xC8\x82\xE8\x82\xE6\x82\xAD\x82\xC8\x82\xC1\x82\xBD",
|
||||
"\x8B""C""\x95\xAA\x82\xAA\x88\xAB\x82\xAD\x82\xC8\x82\xC1\x82\xBD",
|
||||
"\x8B\xF3\x95\xA0\x82\xC5\x82\xC8\x82\xAD\x82\xC8\x82\xC1\x82\xBD",
|
||||
"\x91""f""\x91\x81\x82\xB3\x82\xAA\x91\x9D\x82\xB5\x82\xBD",
|
||||
"\x91\xCC\x82\xAA\x93\xA7\x96\xBE\x82\xC9\x82\xC8\x82\xC1\x82\xBD",
|
||||
"\x8B""C""\x95\xAA\x82\xAA\x82\xE6\x82\xAD\x82\xC8\x82\xC1\x82\xBD"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2PotionEffectStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2PotionEffectStringsFMTownsJapanese), kEoB2PotionEffectStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2YesNoStringsFMTownsJapanese[2] = {
|
||||
"\x82\xCD\x82\xA2",
|
||||
"\x82\xA2\x82\xA2\x82\xA6"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2YesNoStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2YesNoStringsFMTownsJapanese), kEoB2YesNoStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MoreStringsFMTownsJapanese[1] = {
|
||||
"\x82""l""\x82""n""\x82""q""\x82""d"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MoreStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MoreStringsFMTownsJapanese), kEoB2MoreStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2NpcMaxStringsFMTownsJapanese[1] = {
|
||||
"\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x95\xD2\x90\xAC\x82\xCD\x82""U""\x90""l""\x82\xDC\x82\xC5\x82\xC5\x82\xB7\x81""B""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xA9\x82\xE7\x8A""O""\x82\xB7\x90""l""\x82\xF0\x82""P""\x90""l""\x91""I""\x82\xF1\x82\xC5\x89\xBA\x82\xB3\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2NpcMaxStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2NpcMaxStringsFMTownsJapanese), kEoB2NpcMaxStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2OkStringsFMTownsJapanese[1] = {
|
||||
"\x82""n""\x82""j"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2OkStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2OkStringsFMTownsJapanese), kEoB2OkStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2NpcJoinStringsFMTownsJapanese[1] = {
|
||||
"%s""\x82\xAA\x83""p""\x81""[""\x83""e""\x83""B""\x82\xC9\x89\xC1\x82\xED\x82\xC1\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2NpcJoinStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2NpcJoinStringsFMTownsJapanese), kEoB2NpcJoinStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CancelStringsFMTownsJapanese[1] = {
|
||||
"\x92\x86\x8E""~"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CancelStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CancelStringsFMTownsJapanese), kEoB2CancelStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2AbortStringsFMTownsJapanese[1] = {
|
||||
"\x92\x86\x8E""~"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2AbortStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2AbortStringsFMTownsJapanese), kEoB2AbortStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsMainFMTownsJapanese[8] = {
|
||||
"\x83""I""\x83""v""\x83""V""\x83\x87\x83\x93\x91""I""\x91\xF0"":",
|
||||
"\x8B""x""\x91\xA7\x82\xB7\x82\xE9",
|
||||
"\x8E\xF4\x95\xB6\x82\xF0\x8B""L""\x89\xAF\x82\xB7\x82\xE9",
|
||||
"\x8B""F""\x82\xE8\x82\xF0\x95\xF9\x82\xB0\x82\xE9",
|
||||
"\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B\x82\xF0\x8F\x91\x82\xAB\x8E\xCA\x82\xB7",
|
||||
"\x8A\xC2\x8B\xAB\x90\xDD\x92\xE8",
|
||||
"\x83""I""\x83""v""\x83""V""\x83\x87\x83\x93",
|
||||
"EXIT",
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsMainFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsMainFMTownsJapanese), kEoB2MenuStringsMainFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsSaveLoadFMTownsJapanese[8] = {
|
||||
"\x83""Q""\x81""[""\x83\x80\x83\x8D\x81""[""\x83""h",
|
||||
"\x83""Q""\x81""[""\x83\x80\x83""Z""\x81""[""\x83""u",
|
||||
"\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xF0\x8A""O""\x82\xB7",
|
||||
"\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB7\x82\xE9",
|
||||
"\x83""I""\x83""v""\x83""V""\x83\x87\x83\x93"":",
|
||||
"\r ""\x83""Z""\x81""[""\x83""u""\x8F""I""\x97\xB9",
|
||||
"\r""\x81""@""\x83""f""\x81""[""\x83""^""\x82\xCC\x83""Z""\x81""[""\x83""u""\x82\xC9\x8E\xB8\x94""s""\x82\xB5\x82\xDC\x82\xB5\x82\xBD\x81""I",
|
||||
"\r""\x81""@""\x83""Z""\x81""[""\x83""u""\x83""f""\x81""[""\x83""^""\x82\xAA\x93\xC7\x82\xDD\x8D\x9E\x82\xDF\x82\xDC\x82\xB9\x82\xF1\x81""B\r""\x81""@""\x83""t""\x83""@""\x83""C""\x83\x8B\x82\xAA\x89\xF3\x82\xEA\x82\xC4\x82\xA2\x82\xDC\x82\xB7\x81""I\r",
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsSaveLoadFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsSaveLoadFMTownsJapanese), kEoB2MenuStringsSaveLoadFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsOnOffFMTownsJapanese[2] = {
|
||||
"\x82""n""\x82""m",
|
||||
"\x82""n""\x82""e""\x82""e"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsOnOffFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsOnOffFMTownsJapanese), kEoB2MenuStringsOnOffFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsSpellsFMTownsJapanese[17] = {
|
||||
"\r\r ""\x8E\xF4\x95\xB6\x82\xF0\x8B""L""\x89\xAF\x82\xB3\x82\xB9\x82\xBD\x82\xA2\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xF0""\r ""\x91""I""\x82\xF1\x82\xC5\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B",
|
||||
"\r ""\x82\xBB\x82\xCC\x83""p""\x83\x89\x83""f""\x83""B""\x83\x93\x82\xCD\x83\x8C\x83""x""\x83\x8B\x82\xAA\x92\xE1\x82\xB7\x82\xAC""\r ""\x82\xC4\x8E\xF4\x95\xB6\x82\xF0\x8A""o""\x82\xA6\x82\xE9\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""B",
|
||||
"\r\r ""\x82\xBB\x82\xCC\x83\x81\x83""C""\x83""W""\x82\xCD\x83""X""\x83""y""\x83\x8B\x83""u""\x83""b""\x83""N""\x82\xF0\x8E\x9D\x82\xC1\x82\xC4\x82\xA2""\r ""\x82\xC8\x82\xA2\x81""I",
|
||||
"\r\r\r ""\x8E\xF4\x95\xB6\x82\xCC\x82\xBD\x82\xDF\x82\xC9\x8B""F""\x82\xE8\x82\xF0\x95\xF9\x82\xB0\x82\xE9\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[\r ""\x82\xF0\x91""I""\x82\xF1\x82\xC5\x89\xBA\x82\xB3\x82\xA2\x81""B",
|
||||
"\r ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x92\x86\x82\xC9\x8B""F""\x82\xE8\x82\xF0\x95\xF9\x82\xB0\x82\xE7\x82\xEA\x82\xE9""\r ""\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xAA\x82\xA2\x82\xC8\x82\xA2\x81""B",
|
||||
"\r ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x92\x86\x82\xC9\x82\xCD\x90""V""\x82\xB5\x82\xA2\x8E\xF4\x95\xB6\x82\xF0""\r ""\x8A""o""\x82\xA6\x82\xE9\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xE9\x8E\xD2\x82\xAA\x82\xA2\x82\xC8\x82\xA2\x81""B",
|
||||
" ""\x8B""C""\x90\xE2\x82\xDC\x82\xBD\x82\xCD\x8E\x80\x82\xF1\x82\xBE\x83\x81\x83""C""\x83""W""\x82\xCD\x8E\xF4\x95\xB6\x82\xF0\x8B""L""\x89\xAF""\r ""\x82\xB7\x82\xE9\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""B",
|
||||
" ""\x8B""C""\x90\xE2\x82\xDC\x82\xBD\x82\xCD\x8E\x80\x82\xF1\x82\xBE\x83""N""\x83\x8C\x83\x8A\x83""b""\x83""N""\x82\xCD\x8B""F""\x82\xE8\x82\xF0""\r ""\x95\xF9\x82\xB0\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xC5\x82\xAB\x82\xC8\x82\xA2\x81""B",
|
||||
"1",
|
||||
"2",
|
||||
"3",
|
||||
"4",
|
||||
"5",
|
||||
"\x83""N""\x83\x8A\x83""A",
|
||||
"\x8E""g""\x97""p""\x89\xC2\x94""\\""\x82\xC8\x8E\xF4\x95\xB6"":",
|
||||
"\x82\xCD\x82\xA2",
|
||||
"\x82\xA2\x82\xA2\x82\xA6"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsSpellsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsSpellsFMTownsJapanese), kEoB2MenuStringsSpellsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsRestFMTownsJapanese[5] = {
|
||||
"\r ""\x83""N""\x83\x8C\x83\x8A\x83""b""\x83""N""\x82\xC9\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x8E\xA1\x97\xC3\x82\xF0""\r ""\x82\xB3\x82\xB9\x82\xDC\x82\xB7\x82\xA9\x81""H",
|
||||
" ""\x82\xDC\x82\xBE\x89\xF6\x89\xE4\x82\xF0\x82\xB5\x82\xC4\x82\xA2\x82\xE9\x90""l""\x82\xAA\x82\xA2\x82\xDC\x82\xB7\x81""B\r ""\x8B""x""\x91\xA7\x82\xF0\x91\xB1\x82\xAF\x82\xDC\x82\xB7\x82\xA9\x81""H",
|
||||
" ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x8B""x""\x8C""e""\x82\xB5\x82\xC4\x82\xA2\x82\xDC\x82\xB7""..",
|
||||
"\r""\x81""@""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x91""S""\x88\xF5\x8A\xAE\x91""S""\x82\xC9\x89\xF1\x95\x9C\x82\xB5\x82\xDC\x82\xB5\x82\xBD\x81""B",
|
||||
" ""\x8E\xF4\x95\xB6\x82\xF0\x8E""g""\x82\xA6\x82\xE9\x97""l""\x82\xC9\x82\xC8\x82\xE9\x82\xBD\x82\xDF\x82\xC9\x82\xCD\x81""A\r ""\x8B""x""\x91\xA7\x82\xAA\x95""K""\x97""v""\x82\xC5\x82\xB7\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsRestFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsRestFMTownsJapanese), kEoB2MenuStringsRestFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsDropFMTownsJapanese[1] = {
|
||||
" ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x83\x81\x83\x93\x83""o""\x81""[""\x82\xF0\x82""S""\x90""l""\x96\xA2\x96\x9E""\r""\x82\xC9\x82\xB7\x82\xE9\x82\xB1\x82\xC6\x82\xCD\x82\xC5\x82\xAB\x82\xDC\x82\xB9\x82\xF1\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsDropFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsDropFMTownsJapanese), kEoB2MenuStringsDropFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsExitFMTownsJapanese[1] = {
|
||||
"\r""\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB5\x82\xC4\x82\xE0\x82\xA2\x82\xA2\x82\xC5\x82\xB7\x82\xA9\x81""H"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsExitFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsExitFMTownsJapanese), kEoB2MenuStringsExitFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsStarveFMTownsJapanese[1] = {
|
||||
"\r ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x92\x86\x82\xC9\x8B\xF3\x95\xA0\x82\xCC\x83\x81\x83\x93\x83""o""\x81""[""\x82\xAA""\r ""\x82\xA2\x82\xDC\x82\xB7\x81""B\r ""\x82\xBB\x82\xEA\x82\xC5\x82\xE0\x8B""x""\x91\xA7\x82\xF0\x91\xB1\x82\xAF\x82\xDC\x82\xB7\x82\xA9\x81""H"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsStarveFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsStarveFMTownsJapanese), kEoB2MenuStringsStarveFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsScribeFMTownsJapanese[5] = {
|
||||
" ""\x8F\x91\x82\xAB\x8E\xCA\x82\xB5\x82\xBD\x82\xA2\x8E\xF4\x95\xB6\x82\xCC\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B\x82\xF0""\r ""\x91""I""\x82\xF1\x82\xC5\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B",
|
||||
"\r\r\r ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCC\x92\x86\x82\xA9\x82\xE7\x8E\xF4\x95\xB6\x82\xF0\x8F\x91\x82\xAB\x8E\xCA\x82\xB5\x82\xBD\x82\xA2""\r ""\x83\x81\x83""C""\x83""W""\x82\xF0\x91""I""\x82\xF1\x82\xC5\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B",
|
||||
" ""\x8E\xF4\x95\xB6\x82\xF0\x8F\xA5\x82\xA6\x82\xE9\x82\xBD\x82\xDF\x82\xCC\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B""\r ""\x82\xF0\x8E\x9D\x82\xC1\x82\xC4\x82\xA2\x82\xC8\x82\xA2\x81""B",
|
||||
" ""\x82\xB1\x82\xCC\x83\x81\x83""C""\x83""W""\x82\xAA\x95""K""\x97""v""\x82\xC6\x82\xB7\x82\xE9\x83""X""\x83""N""\x83\x8D\x81""[""\x83\x8B""\r ""\x82\xF0\x8E\x9D\x82\xC1\x82\xC4\x82\xA2\x82\xC8\x82\xA2\x81""B",
|
||||
"\r ""\x90""V""\x82\xB5\x82\xA2\x8E\xF4\x95\xB6\x82\xF0\x8F\x91\x82\xAB\x8E\xCA\x82\xB7\x82\xB1\x82\xC6\x82\xCC\x82\xC5\x82\xAB\x82\xE9""\r ""\x83\x81\x83""C""\x83""W""\x82\xAA\x82\xA2\x82\xC8\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsScribeFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsScribeFMTownsJapanese), kEoB2MenuStringsScribeFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsDrop2FMTownsJapanese[3] = {
|
||||
" ""\x95\xCA\x82\xEA\x82\xE9\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xF0\x91""I""\x82\xF1\x82\xC5\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B\r",
|
||||
" ""\x83""Z""\x81""[""\x83""u""\x83""t""\x83""@""\x83""C""\x83\x8B\x82\xC9\x82\xCD\x96\xBC\x91""O""\x82\xAA\x95""K""\x97""v""\x82\xC5\x82\xB7\x81""B",
|
||||
"\r ""\x91""O""\x82\xCC\x83""Z""\x81""[""\x83""u""\x83""f""\x81""[""\x83""^""\x82\xC9\x8F\xE3\x8F\x91\x82\xAB\x82\xB5\x82\xC4\x82\xE0""\r ""\x82\xA2\x82\xA2\x82\xC5\x82\xB7\x82\xA9\x81""H"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsDrop2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsDrop2FMTownsJapanese), kEoB2MenuStringsDrop2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsHeadFMTownsJapanese[3] = {
|
||||
"\x83""L""\x83\x83\x83\x93\x83""v:",
|
||||
"\x8A\xC2\x8B\xAB\x90\xDD\x92\xE8"":",
|
||||
"\x83""I""\x83""v""\x83""V""\x83\x87\x83\x93"":"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsHeadFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsHeadFMTownsJapanese), kEoB2MenuStringsHeadFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsPoisonFMTownsJapanese[1] = {
|
||||
"\x81""@""\x93\xC5\x82\xF0\x8E\xF3\x82\xAF\x82\xBD\x83""L""\x83\x83\x83\x89\x83""N""\x83""^""\x81""[""\x82\xAA\x8E\x80\x82\xF1\x82\xC5""\r""\x82\xB5\x82\xDC\x82\xA2\x82\xDC\x82\xB7\x81""I\r""\x81""@""\x82\xBB\x82\xEA\x82\xC5\x82\xE0\x8B""x""\x82\xDD\x82\xDC\x82\xB7\x82\xA9\x81""H"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsPoisonFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsPoisonFMTownsJapanese), kEoB2MenuStringsPoisonFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsMgcFMTownsJapanese[2] = {
|
||||
"",
|
||||
"%d""\x8C\xC2\x92\x86\x81""@%d""\x8C\xC2\x8E""g""\x97""p""\x89\xC2\x94""\\"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsMgcFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsMgcFMTownsJapanese), kEoB2MenuStringsMgcFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsPrefsFMTownsJapanese[4] = {
|
||||
"\x82""a""\x82""f""\x82""l %-6s",
|
||||
"\x8C\xF8\x89\xCA\x89\xB9"" %-6s",
|
||||
"\x83""o""\x81""[""\x83""O""\x83\x89\x83""t""\x95""\\""\x8E\xA6"" %-6s",
|
||||
"\x89\xE6\x96\xCA\x83\x82\x81""[""\x83""h""\x81""@%-10s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsPrefsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsPrefsFMTownsJapanese), kEoB2MenuStringsPrefsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsRest2FMTownsJapanese[5] = {
|
||||
"%s""\x82\xCD""%s""\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x8E\xF6\x82\xA9\x82\xC1\x82\xBD\x81""B\r",
|
||||
"%s""\x82\xCD""%s""\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x8B""L""\x89\xAF\x82\xB5\x82\xBD\x81""B\r",
|
||||
"%s""\x82\xCD""%s""\x82\xC9\x8E\xA1\x96\xFC\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x82\xC6\x82\xC8\x82\xA6\x82\xBD\x81""B\r",
|
||||
"\x8B""x""\x91\xA7\x82\xB5\x82\xBD\x8E\x9E\x8A\xD4\x81""F %-4d",
|
||||
"\r%s\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsRest2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsRest2FMTownsJapanese), kEoB2MenuStringsRest2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsRest3FMTownsJapanese[1] = {
|
||||
"\x06\x06\x82\xB1\x82\xB1\x82\xC5\x82\xCD\x88\xC0\x90""S""\x82\xB5\x82\xC4\x8B""x""\x82\xDF\x82\xBB\x82\xA4\x82\xC9\x82\xC8\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsRest3FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsRest3FMTownsJapanese), kEoB2MenuStringsRest3FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsRest4FMTownsJapanese[1] = {
|
||||
"\x06\x06\x83\x82\x83\x93\x83""X""\x83""^""\x81""[""\x82\xAA\x8B\xDF\x82\xAD\x82\xC9\x82\xA2\x82\xC4\x8B""x""\x82\xDF\x82\xC8\x82\xA2\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsRest4FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsRest4FMTownsJapanese), kEoB2MenuStringsRest4FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsDefeatFMTownsJapanese[1] = {
|
||||
"\r ""\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x91""S""\x96\xC5\x82\xB5\x82\xBD\x81""I\r ""\x83""Z""\x81""[""\x83""u""\x83""Q""\x81""[""\x83\x80\x82\xF0\x93\xC7\x82\xDD\x8D\x9E\x82\xF1\x82\xC5\x91\xB1\x82\xAB\x82\xF0""\r ""\x82\xB5\x82\xDC\x82\xB7\x82\xA9\x81""H"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsDefeatFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsDefeatFMTownsJapanese), kEoB2MenuStringsDefeatFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuStringsSpecFMTownsJapanese[2] = {
|
||||
"\r ""\x96\xDA\x82\xAA\x8A""o""\x82\xDF\x82\xE9\x82\xC6\x81""A""\x83""V""\x81""[""\x83""t""\x82\xCC\x83""C""\x83\x93\x83""T""\x83\x8B\x82\xAA""\r ""\x82\xA2\x82\xC8\x82\xAD\x82\xC8\x82\xC1\x82\xC4\x82\xA2\x82\xBD\x81""I",
|
||||
" ""\x8E\x9D\x82\xBF\x95\xA8\x82\xAA\x82\xC8\x82\xAD\x82\xC8\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""I"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuStringsSpecFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuStringsSpecFMTownsJapanese), kEoB2MenuStringsSpecFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MenuYesNoStringsFMTownsJapanese[2] = {
|
||||
"\x82\xCD\x82\xA2",
|
||||
"\x82\xA2\x82\xA2\x82\xA6"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MenuYesNoStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MenuYesNoStringsFMTownsJapanese), kEoB2MenuYesNoStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharGuiStringsHpFMTownsJapanese[2] = {
|
||||
"HP",
|
||||
"%3d of %-3d"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharGuiStringsHpFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharGuiStringsHpFMTownsJapanese), kEoB2CharGuiStringsHpFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharGuiStringsWp2FMTownsJapanese[3] = {
|
||||
"MISS",
|
||||
"HACK",
|
||||
"BASH"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharGuiStringsWp2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharGuiStringsWp2FMTownsJapanese), kEoB2CharGuiStringsWp2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharGuiStringsWrFMTownsJapanese[4] = {
|
||||
"CAN'T",
|
||||
"REACH",
|
||||
"NO",
|
||||
"AMMO"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharGuiStringsWrFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharGuiStringsWrFMTownsJapanese), kEoB2CharGuiStringsWrFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharGuiStringsSt2FMTownsJapanese[7] = {
|
||||
"Swapping",
|
||||
"\x8E\x80\x96""S",
|
||||
"\x8B""C""\x90\xE2",
|
||||
"\x93\xC5\x81""i""\x92""x""\x82\xA2\x81""j",
|
||||
"\x93\xC5",
|
||||
"\x96\x83\xE1\x83",
|
||||
"\x90\xCE\x89\xBB"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharGuiStringsSt2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharGuiStringsSt2FMTownsJapanese), kEoB2CharGuiStringsSt2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharGuiStringsInFMTownsJapanese[4] = {
|
||||
"CHARACTER INFO",
|
||||
"AC",
|
||||
"EXP",
|
||||
"LVL"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharGuiStringsInFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharGuiStringsInFMTownsJapanese), kEoB2CharGuiStringsInFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharStatusStrings7FMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC\x83""W""\x83\x83\x83""C""\x83""A""\x83\x93\x83""g""\x81""E""\x83""X""\x83""g""\x83\x8C\x83\x93\x83""O""\x83""X""\x82\xCC\x8C\xF8\x89\xCA\x82\xAA\x90\xD8\x82\xEA\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharStatusStrings7FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharStatusStrings7FMTownsJapanese), kEoB2CharStatusStrings7FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharStatusStrings82FMTownsJapanese[1] = {
|
||||
"\x06\x06""%s""\x82\xCD\x93\xC5\x82\xAA\x89\xF1\x82\xC1\x82\xBD\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharStatusStrings82FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharStatusStrings82FMTownsJapanese), kEoB2CharStatusStrings82FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharStatusStrings9FMTownsJapanese[1] = {
|
||||
"\x06\x04""%s""\x82\xCC\x96\x83\xE1\x83\x82\xCD\x8E\xA1\x82\xC1\x82\xBD\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharStatusStrings9FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharStatusStrings9FMTownsJapanese), kEoB2CharStatusStrings9FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharStatusStrings12FMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC\x93\xAE\x82\xAB\x82\xCD\x93\xDD\x82\xAD\x82\xC8\x82\xC1\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharStatusStrings12FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharStatusStrings12FMTownsJapanese), kEoB2CharStatusStrings12FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2CharStatusStrings132FMTownsJapanese[1] = {
|
||||
"\x06\x06""%s""\x82\xCD""%s""\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2CharStatusStrings132FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2CharStatusStrings132FMTownsJapanese), kEoB2CharStatusStrings132FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2LevelGainStringsFMTownsJapanese[1] = {
|
||||
"\x06\x01""%s""\x82\xCD\x83\x8C\x83""x""\x83\x8B\x82\xAA\x8F\xE3\x82\xAA\x82\xC1\x82\xBD\x81""B""\x06\x0F""\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2LevelGainStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2LevelGainStringsFMTownsJapanese), kEoB2LevelGainStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2BookNumbersFMTownsJapanese[5] = {
|
||||
"First",
|
||||
"Second",
|
||||
"Third",
|
||||
"Fourth",
|
||||
"Fifth"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2BookNumbersFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2BookNumbersFMTownsJapanese), kEoB2BookNumbersFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MageSpellsListFMTownsJapanese[33] = {
|
||||
"",
|
||||
"\x82""`""\x82""q""\x82""l""\x82""n""\x82""q",
|
||||
"\x82""a""\x82""t""\x82""q""\x82""m""\x82""h""\x82""m""\x82""f""\x81""@""\x82""g""\x82""`""\x82""m""\x82""c""\x82""r",
|
||||
"\x82""c""\x82""d""\x82""s""\x82""d""\x82""b""\x82""s""\x81""@""\x82""l""\x82""`""\x82""f""\x82""h""\x82""b",
|
||||
"\x82""l""\x82""`""\x82""f""\x82""h""\x82""b""\x81""@""\x82""l""\x82""h""\x82""r""\x82""r""\x82""h""\x82""k""\x82""d",
|
||||
"\x82""r""\x82""g""\x82""h""\x82""d""\x82""k""\x82""c",
|
||||
"\x82""r""\x82""g""\x82""n""\x82""b""\x82""j""\x82""h""\x82""m""\x82""f""\x81""@""\x82""f""\x82""q""\x82""`""\x82""r""\x82""o",
|
||||
"\x82""a""\x82""k""\x82""t""\x82""q",
|
||||
"\x82""c""\x82""d""\x82""s""\x82""d""\x82""b""\x82""s""\x81""@""\x82""h""\x82""m""\x82""u""\x82""h""\x82""r""\x82""h""\x82""a""\x82""k""\x82""d",
|
||||
"\x82""h""\x82""l""\x82""o""\x81""@""\x82""h""\x82""c""\x82""d""\x82""m""\x82""s""\x82""h""\x82""e""\x82""x",
|
||||
"\x82""h""\x82""m""\x82""u""\x82""h""\x82""r""\x82""h""\x82""a""\x82""h""\x82""k""\x82""h""\x82""s""\x82""x",
|
||||
"\x82""l""\x81""f""\x82""r""\x81""@""\x82""`""\x82""b""\x82""h""\x82""c""\x81""@""\x82""`""\x82""q""\x82""q""\x82""n""\x82""v",
|
||||
"\x82""c""\x82""h""\x82""r""\x82""o""\x82""d""\x82""k""\x81""@""\x82""l""\x82""`""\x82""f""\x82""h""\x82""b",
|
||||
"\x82""e""\x82""h""\x82""q""\x82""d""\x81""@""\x82""a""\x82""`""\x82""k""\x82""k",
|
||||
"\x82""g""\x82""`""\x82""r""\x82""s""\x82""d",
|
||||
"\x82""g""\x82""n""\x82""k""\x82""c""\x81""@""\x82""o""\x82""d""\x82""q""\x82""r""\x82""n""\x82""m",
|
||||
"\x82""h""\x82""m""\x82""u""\x82""h""\x82""r""\x82""h""\x82""a""\x82""h""\x82""k""\x82""h""\x82""s""\x82""x""\x81""@""\x82""P""\x82""O""\x81""f",
|
||||
"\x82""k""\x82""h""\x82""f""\x82""g""\x82""s""\x82""m""\x82""h""\x82""m""\x82""f""\x81""@""\x82""a""\x82""n""\x82""k""\x82""s",
|
||||
"\x82""u""\x82""`""\x82""l""\x82""o""\x82""h""\x82""q""\x82""h""\x82""b""\x81""@""\x82""s""\x82""n""\x82""t""\x82""b""\x82""g",
|
||||
"\x82""e""\x82""d""\x82""`""\x82""q",
|
||||
"\x82""h""\x82""b""\x82""d""\x81""@""\x82""r""\x82""s""\x82""n""\x82""q""\x82""l",
|
||||
"\x82""h""\x82""l""\x82""o""\x81""@""\x82""h""\x82""m""\x82""u""\x82""h""\x82""r""\x82""h""\x82""a""\x82""h""\x82""k""\x82""h""\x82""s""\x82""x",
|
||||
"\x82""q""\x82""d""\x82""l""\x82""n""\x82""u""\x82""d""\x81""@""\x82""b""\x82""t""\x82""q""\x82""r""\x82""d",
|
||||
"\x82""b""\x82""n""\x82""m""\x82""d""\x81""@""\x82""n""\x82""e""\x81""@""\x82""b""\x82""n""\x82""k""\x82""c",
|
||||
"\x82""g""\x82""n""\x82""k""\x82""c""\x81""@""\x82""l""\x82""n""\x82""m""\x82""r""\x82""s""\x82""d""\x82""q",
|
||||
"\x82""v""\x82""`""\x82""k""\x82""k""\x81""@""\x82""n""\x82""e""\x81""@""\x82""e""\x82""n""\x82""q""\x82""b""\x82""d",
|
||||
"\x82""c""\x82""h""\x82""r""\x82""h""\x82""m""\x82""s""\x82""d""\x82""f""\x82""q""\x82""`""\x82""s""\x82""d",
|
||||
"\x82""e""\x82""k""\x82""d""\x82""r""\x82""g""\x81""@""\x82""s""\x82""n""\x81""@""\x82""r""\x82""s""\x82""n""\x82""m""\x82""d",
|
||||
"\x82""r""\x82""s""\x82""n""\x82""m""\x82""d""\x81""@""\x82""s""\x82""n""\x81""@""\x82""e""\x82""k""\x82""d""\x82""r""\x82""g",
|
||||
"\x82""s""\x82""q""\x82""t""\x82""d""\x81""@""\x82""r""\x82""d""\x82""d""\x82""h""\x82""m""\x82""f",
|
||||
"\x82""e""\x82""h""\x82""m""\x82""f""\x82""d""\x82""q""\x81""@""\x82""n""\x82""e""\x81""@""\x82""c""\x82""d""\x82""`""\x82""s""\x82""g",
|
||||
"\x82""o""\x82""n""\x82""v""\x82""d""\x82""q""\x81""@""\x82""v""\x82""n""\x82""q""\x82""c""\x81""@""\x82""r""\x82""s""\x82""t""\x82""m",
|
||||
"\x82""a""\x82""h""\x82""f""\x82""a""\x82""x""\x81""f""\x82""r""\x81""@""\x82""e""\x82""h""\x82""r""\x82""s"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MageSpellsListFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MageSpellsListFMTownsJapanese), kEoB2MageSpellsListFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2ClericSpellsListFMTownsJapanese[30] = {
|
||||
"",
|
||||
"\x82""a""\x82""k""\x82""d""\x82""r""\x82""r",
|
||||
"\x82""b""\x82""`""\x82""t""\x82""r""\x82""d""\x81""@""\x82""k""\x82""h""\x82""f""\x82""g""\x82""s""\x81""@""\x82""v""\x82""m""\x82""c""\x82""r",
|
||||
"\x82""b""\x82""t""\x82""q""\x82""d""\x81""@""\x82""k""\x82""h""\x82""f""\x82""g""\x82""s""\x81""@""\x82""v""\x82""m""\x82""c""\x82""r",
|
||||
"\x82""c""\x82""d""\x82""s""\x82""d""\x82""b""\x82""s""\x81""@""\x82""l""\x82""`""\x82""f""\x82""h""\x82""b",
|
||||
"\x82""o""\x82""q""\x82""n""\x82""s""\x82""d""\x82""b""\x82""s""\x81""|""\x82""d""\x82""u""\x82""h""\x82""k",
|
||||
"\x82""`""\x82""h""\x82""c",
|
||||
"\x82""e""\x82""k""\x82""`""\x82""l""\x82""d""\x81""@""\x82""a""\x82""k""\x82""`""\x82""c""\x82""d",
|
||||
"\x82""g""\x82""n""\x82""k""\x82""c""\x81""@""\x82""o""\x82""d""\x82""q""\x82""r""\x82""n""\x82""m",
|
||||
"\x82""r""\x82""k""\x82""n""\x82""v""\x81""@""\x82""o""\x82""n""\x82""h""\x82""r""\x82""n""\x82""m",
|
||||
"\x82""b""\x82""q""\x82""d""\x82""`""\x82""s""\x82""d""\x81""@""\x82""e""\x82""n""\x82""n""\x82""c",
|
||||
"\x82""c""\x82""h""\x82""r""\x82""o""\x82""d""\x82""k""\x81""@""\x82""l""\x82""`""\x82""f""\x82""h""\x82""b",
|
||||
"\x82""l""\x82""`""\x82""f""\x82""h""\x82""b""\x82""`""\x82""k""\x81""@""\x82""u""\x82""d""\x82""r""\x82""s""\x82""l""\x82""d""\x82""m""\x82""s",
|
||||
"\x82""o""\x82""q""\x82""`""\x82""x""\x82""d""\x82""q",
|
||||
"\x82""q""\x82""d""\x82""l""\x82""n""\x82""u""\x82""d""\x81""@""\x82""o""\x82""`""\x82""q""\x82""`""\x82""k""\x82""x""\x82""r""\x82""h""\x82""r",
|
||||
"\x82""b""\x82""`""\x82""t""\x82""r""\x82""d""\x81""@""\x82""r""\x82""d""\x82""q""\x82""h""\x82""n""\x82""t""\x82""r",
|
||||
"\x82""b""\x82""t""\x82""q""\x82""d""\x81""@""\x82""r""\x82""d""\x82""q""\x82""h""\x82""n""\x82""t""\x82""r",
|
||||
"\x82""m""\x82""d""\x82""t""\x82""s""\x82""q""\x82""`""\x82""k""\x81""|""\x82""o""\x82""n""\x82""h""\x82""r""\x82""n""\x82""m",
|
||||
"\x82""o""\x82""q""\x82""n""\x82""s""\x82""d""\x82""b""\x82""s""\x81""|""\x82""d""\x82""u""\x82""h""\x82""k""\x81""@""\x82""P""\x82""O""\x81""f",
|
||||
"\x82""b""\x82""`""\x82""t""\x82""r""\x82""d""\x81""@""\x82""b""\x82""q""\x82""h""\x82""s""\x82""h""\x82""b""\x82""`""\x82""k",
|
||||
"\x82""b""\x82""t""\x82""q""\x82""d""\x81""@""\x82""b""\x82""q""\x82""h""\x82""s""\x82""h""\x82""b""\x82""`""\x82""k",
|
||||
"\x82""e""\x82""k""\x82""`""\x82""l""\x82""d""\x81""@""\x82""r""\x82""s""\x82""q""\x82""h""\x82""j""\x82""d",
|
||||
"\x82""q""\x82""`""\x82""h""\x82""r""\x82""d""\x81""@""\x82""c""\x82""d""\x82""`""\x82""c",
|
||||
"\x82""r""\x82""k""\x82""`""\x82""x""\x81""@""\x82""k""\x82""h""\x82""u""\x82""h""\x82""m""\x82""f",
|
||||
"\x82""s""\x82""q""\x82""t""\x82""d""\x81""@""\x82""r""\x82""d""\x82""d""\x82""h""\x82""m""\x82""f",
|
||||
"\x82""g""\x82""`""\x82""q""\x82""l",
|
||||
"\x82""g""\x82""d""\x82""`""\x82""k",
|
||||
"\x82""q""\x82""d""\x82""r""\x82""r""\x82""t""\x82""q""\x82""d""\x82""b""\x82""s""\x82""h""\x82""n""\x82""m",
|
||||
"\x82""k""\x82""`""\x82""x""\x81""@""\x82""n""\x82""m""\x81""@""\x82""g""\x82""`""\x82""m""\x82""c""\x82""r",
|
||||
"\x82""s""\x82""t""\x82""q""\x82""m""\x81""@""\x82""t""\x82""m""\x82""c""\x82""d""\x82""`""\x82""c"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2ClericSpellsListFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2ClericSpellsListFMTownsJapanese), kEoB2ClericSpellsListFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2SpellNamesFMTownsJapanese[68] = {
|
||||
"\x82""`""\x82\x92\x82\x8D\x82\x8F\x82\x92",
|
||||
"\x82""a""\x82\x95\x82\x92\x82\x8E\x82\x89\x82\x8E\x82\x87\x81""@""\x82""g""\x82\x81\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""c""\x82\x85\x82\x94\x82\x85\x82\x83\x82\x94\x81""@""\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83",
|
||||
"\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83\x81""@""\x82""l""\x82\x89\x82\x93\x82\x93\x82\x89\x82\x8C\x82\x85",
|
||||
"\x82""r""\x82\x88\x82\x89\x82\x85\x82\x8C\x82\x84",
|
||||
"\x82""r""\x82\x88\x82\x8F\x82\x83\x82\x8B\x82\x89\x82\x8E\x82\x87\x81""@""\x82""f""\x82\x92\x82\x81\x82\x93\x82\x90",
|
||||
"\x82""a""\x82\x8C\x82\x95\x82\x92",
|
||||
"\x82""c""\x82\x85\x82\x94\x82\x85\x82\x83\x82\x94\x81""@""\x82""h""\x82\x8E\x82\x96\x82\x89\x82\x93\x82\x89\x82\x82\x82\x89\x82\x8C\x82\x89\x82\x94\x82\x99",
|
||||
"\x82""h""\x82\x8D\x82\x90\x82\x92\x82\x8F\x82\x96\x82\x85\x82\x84\x81""@""\x82""h""\x82\x84\x82\x85\x82\x8E\x82\x94\x82\x89\x82\x86\x82\x99",
|
||||
"\x82""h""\x82\x8E\x82\x96\x82\x89\x82\x93\x82\x89\x82\x82\x82\x89\x82\x8C\x82\x89\x82\x94\x82\x99",
|
||||
"\x82""l""\x82\x85\x82\x8C\x82\x86\x81""f""\x82\x93\x81""@""\x82""`""\x82\x83\x82\x89\x82\x84\x81""@""\x82""`""\x82\x92\x82\x92\x82\x8F\x82\x97",
|
||||
"\x82""c""\x82\x89\x82\x93\x82\x90\x82\x85\x82\x8C\x81""@""\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83",
|
||||
"\x82""e""\x82\x89\x82\x92\x82\x85\x82\x82\x82\x81\x82\x8C\x82\x8C",
|
||||
"\x82""g""\x82\x81\x82\x93\x82\x94\x82\x85",
|
||||
"\x82""g""\x82\x8F\x82\x8C\x82\x84\x81""@""\x82""o""\x82\x85\x82\x92\x82\x93\x82\x8F\x82\x8E",
|
||||
"\x82""h""\x82\x8E\x82\x96\x82\x89\x82\x93\x82\x89\x82\x82\x82\x89\x82\x8C\x82\x89\x82\x94\x82\x99\x81""@""\x82""P""\x82""O""\x81""f""\x82\x93\x81""@""\x82\x92\x82\x81\x82\x84\x82\x89\x82\x95\x82\x93",
|
||||
"\x82""k""\x82\x89\x82\x87\x82\x88\x82\x94\x82\x8E\x82\x89\x82\x8E\x82\x87\x81""@""\x82""a""\x82\x8F\x82\x8C\x82\x94",
|
||||
"\x82""u""\x82\x81\x82\x8D\x82\x90\x82\x89\x82\x92\x82\x89\x82\x83\x81""@""\x82""s""\x82\x8F\x82\x95\x82\x83\x82\x88",
|
||||
"\x82""e""\x82\x85\x82\x81\x82\x92",
|
||||
"\x82""h""\x82\x83\x82\x85\x81""@""\x82""r""\x82\x94\x82\x8F\x82\x92\x82\x8D",
|
||||
"\x82""h""\x82\x8D\x82\x90\x82\x92\x82\x8F\x82\x96\x82\x85\x82\x84\x81""@""\x82""h""\x82\x8E\x82\x96\x82\x89\x82\x93\x82\x89\x82\x82\x82\x89\x82\x8C\x82\x89\x82\x94\x82\x99",
|
||||
"\x82""q""\x82\x85\x82\x8D\x82\x8F\x82\x96\x82\x85\x81""@""\x82""b""\x82\x95\x82\x92\x82\x93\x82\x85",
|
||||
"\x82""b""\x82\x8F\x82\x8E\x82\x85\x81""@""\x82\x8F\x82\x86\x81""@""\x82""b""\x82\x8F\x82\x8C\x82\x84",
|
||||
"\x82""g""\x82\x8F\x82\x8C\x82\x84\x81""@""\x82""l""\x82\x8F\x82\x8E\x82\x93\x82\x94\x82\x85\x82\x92",
|
||||
"\x82""v""\x82\x81\x82\x8C\x82\x8C\x81""@""\x82\x8F\x82\x86\x81""@""\x82""e""\x82\x8F\x82\x92\x82\x83\x82\x85",
|
||||
"\x82""c""\x82\x89\x82\x93\x82\x89\x82\x8E\x82\x94\x82\x85\x82\x87\x82\x92\x82\x81\x82\x94\x82\x85",
|
||||
"\x82""e""\x82\x8C\x82\x85\x82\x93\x82\x88\x81""@""\x82\x94\x82\x8F\x81""@""\x82""r""\x82\x94\x82\x8F\x82\x8E\x82\x85",
|
||||
"\x82""r""\x82\x94\x82\x8F\x82\x8E\x82\x85\x81""@""\x82\x94\x82\x8F\x81""@""\x82""e""\x82\x8C\x82\x85\x82\x93\x82\x88",
|
||||
"\x82""s""\x82\x92\x82\x95\x82\x85\x81""@""\x82""r""\x82\x85\x82\x85\x82\x89\x82\x8E\x82\x87",
|
||||
"\x82""e""\x82\x89\x82\x8E\x82\x87\x82\x85\x82\x92\x81""@""\x82\x8F\x82\x86\x81""@""\x82\x84\x82\x85\x82\x81\x82\x94\x82\x88",
|
||||
"\x82""o""\x82\x8F\x82\x97\x82\x85\x82\x92\x81""@""\x82""v""\x82\x8F\x82\x92\x82\x84\x81""@""\x82""r""\x82\x94\x82\x95\x82\x8E",
|
||||
"\x82""a""\x82\x89\x82\x87\x82\x82\x82\x99\x81""f""\x82\x93\x81""@""\x82""b""\x82\x8C\x82\x85\x82\x8E\x82\x83\x82\x88\x82\x85\x82\x84\x81""@""\x82""e""\x82\x89\x82\x93\x82\x94",
|
||||
"\x82""a""\x82\x8C\x82\x85\x82\x93\x82\x93",
|
||||
"\x82""b""\x82\x81\x82\x95\x82\x93\x82\x85\x81""@""\x82""k""\x82\x89\x82\x87\x82\x88\x82\x94\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""b""\x82\x95\x82\x92\x82\x85\x81""@""\x82""k""\x82\x89\x82\x87\x82\x88\x82\x94\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""c""\x82\x85\x82\x94\x82\x85\x82\x83\x82\x94\x81""@""\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83",
|
||||
"\x82""o""\x82\x92\x82\x8F\x82\x94\x82\x85\x82\x83\x82\x94\x82\x89\x82\x8F\x82\x8E\x81""@""\x82\x86\x82\x92\x82\x8F\x82\x8D\x81""@""\x82""d""\x82\x96\x82\x89\x82\x8C",
|
||||
"\x82""`""\x82\x89\x82\x84",
|
||||
"\x82""e""\x82\x8C\x82\x81\x82\x8D\x82\x85\x81""@""\x82""a""\x82\x8C\x82\x81\x82\x84\x82\x85",
|
||||
"\x82""g""\x82\x8F\x82\x8C\x82\x84\x81""@""\x82""o""\x82\x85\x82\x92\x82\x93\x82\x8F\x82\x8E",
|
||||
"\x82""r""\x82\x8C\x82\x8F\x82\x97\x81""@""\x82""o""\x82\x8F\x82\x89\x82\x93\x82\x8F\x82\x8E",
|
||||
"\x82""b""\x82\x92\x82\x85\x82\x81\x82\x94\x82\x85\x81""@""\x82""e""\x82\x8F\x82\x8F\x82\x84",
|
||||
"\x82""c""\x82\x89\x82\x93\x82\x90\x82\x85\x82\x8C\x81""@""\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83",
|
||||
"\x82""l""\x82\x81\x82\x87\x82\x89\x82\x83\x82\x81\x82\x8C\x81""@""\x82""u""\x82\x85\x82\x93\x82\x94\x82\x8D\x82\x85\x82\x8E\x82\x94",
|
||||
"\x82""o""\x82\x92\x82\x81\x82\x99\x82\x85\x82\x92",
|
||||
"\x82""q""\x82\x85\x82\x8D\x82\x8F\x82\x96\x82\x85\x81""@""\x82""o""\x82\x81\x82\x92\x82\x81\x82\x8C\x82\x99\x82\x93\x82\x89\x82\x93",
|
||||
"\x82""b""\x82\x81\x82\x95\x82\x93\x82\x85\x81""@""\x82""r""\x82\x85\x82\x92\x82\x89\x82\x8F\x82\x95\x82\x93\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""b""\x82\x95\x82\x92\x82\x85\x81""@""\x82""r""\x82\x85\x82\x92\x82\x89\x82\x8F\x82\x95\x82\x93\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""m""\x82\x85\x82\x95\x82\x94\x82\x92\x82\x81\x82\x8C\x82\x89\x82\x9A\x82\x85\x81""@""\x82""o""\x82\x8F\x82\x89\x82\x93\x82\x8F\x82\x8E",
|
||||
"\x82""o""\x82\x92\x82\x8F\x82\x94\x82\x85\x82\x83\x82\x94\x82\x89\x82\x8F\x82\x8E\x81""@""\x82\x86\x82\x92\x82\x8F\x82\x8D\x81""@""\x82\x85\x82\x96\x82\x89\x82\x8C\x81""@""\x82""P""\x82""O""\x81""f""\x82\x93\x81""@""\x82\x92\x82\x81\x82\x84\x82\x89\x82\x95\x82\x93",
|
||||
"\x82""b""\x82\x81\x82\x95\x82\x93\x82\x85\x81""@""\x82""b""\x82\x92\x82\x89\x82\x94\x82\x89\x82\x83\x82\x81\x82\x8C\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""b""\x82\x95\x82\x92\x82\x85\x81""@""\x82""b""\x82\x92\x82\x89\x82\x94\x82\x89\x82\x83\x82\x81\x82\x8C\x81""@""\x82""v""\x82\x8F\x82\x95\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""e""\x82\x8C\x82\x81\x82\x8D\x82\x85\x81""@""\x82""r""\x82\x94\x82\x92\x82\x89\x82\x8B\x82\x85",
|
||||
"\x82""q""\x82\x81\x82\x89\x82\x93\x82\x85\x81""@""\x82""c""\x82\x85\x82\x81\x82\x84",
|
||||
"\x82""r""\x82\x8C\x82\x81\x82\x99\x81""@""\x82""k""\x82\x89\x82\x96\x82\x89\x82\x8E\x82\x87",
|
||||
"\x82""s""\x82\x92\x82\x95\x82\x85\x81""@""\x82""r""\x82\x85\x82\x85\x82\x89\x82\x8E\x82\x87",
|
||||
"\x82""g""\x82\x81\x82\x92\x82\x8D",
|
||||
"\x82""g""\x82\x85\x82\x81\x82\x8C",
|
||||
"\x82""q""\x82\x85\x82\x93\x82\x93\x82\x95\x82\x92\x82\x85\x82\x83\x82\x94\x82\x89\x82\x8F\x82\x8E",
|
||||
"\x82""k""\x82\x81\x82\x99\x81""@""\x82\x8F\x82\x8E\x81""@""\x82""g""\x82\x81\x82\x8E\x82\x84\x82\x93",
|
||||
"\x82""s""\x82\x95\x82\x92\x82\x8E\x81""@""\x82""t""\x82\x8E\x82\x84\x82\x85\x82\x81\x82\x84",
|
||||
"",
|
||||
"\x82""l""\x82\x99\x82\x93\x82\x94\x82\x89\x82\x83\x81""@""\x82""c""\x82\x85\x82\x86\x82\x85\x82\x8E\x82\x83\x82\x85",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
""
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2SpellNamesFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2SpellNamesFMTownsJapanese), kEoB2SpellNamesFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings1FMTownsJapanese[6] = {
|
||||
"ABORT SPELL",
|
||||
"ABORT SPELL",
|
||||
"\x82\xB1\x82\xCC\x8E\xF4\x95\xB6\x82\xCD\x8E\xE8\x82\xAA\x8B\xF3\x82\xA2\x82\xC4\x82\xA2\x82\xC8\x82\xAF\x82\xEA\x82\xCE\x82\xC8\x82\xE7\x82\xC8\x82\xA2\x81""B\r",
|
||||
"\x82\xB1\x82\xCC\x83""^""\x83""C""\x83""v""\x82\xCC\x96\x82\x96""@""\x82\xCD\x82""Q""\x82\xC2\x93\xAF\x8E\x9E\x82\xC9\x82\xA9\x82\xAF\x82\xE7\x82\xEA\x82\xC8\x82\xA2\x81""B\r",
|
||||
"%s""\x82\xCD""%s""\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x8F\xA5\x82\xA6\x82\xBD\x81""B\r",
|
||||
"\rok\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings1FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings1FMTownsJapanese), kEoB2MagicStrings1FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings2FMTownsJapanese[5] = {
|
||||
"\x8E\xF4\x95\xB6\x82\xCD\x8E\xB8\x94""s""\x82\xB5\x82\xBD\x81""I\r",
|
||||
"%s""\x82\xCD\x95\xAA\x89\xF0\x82\xB3\x82\xEA\x82\xBD\x81""I\r",
|
||||
"\x06\x06\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x83""f""\x83""X""\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x8E\xF3\x82\xAF\x82\xBD\x81""I\r",
|
||||
"\x06\x06""%s""\x82\xCD\x83""R""\x81""[""\x83""Y""\x81""E""\x83""V""\x83\x8A\x83""A""\x83""X""\x81""E""\x83""E""\x81""[""\x83\x93\x83""Y""\x82\xCC\x8E\xF4\x95\xB6\x82\xF0\x8E\xF3\x82\xAF\x82\xBD\x81""I\r",
|
||||
"\x90\xCE\x89\xBB"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings2FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings2FMTownsJapanese), kEoB2MagicStrings2FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings3FMTownsJapanese[5] = {
|
||||
"\x92""N""\x82\xC9\x8E\xF4\x95\xB6\x82\xF0\x8F\xA5\x82\xA6\x82\xDC\x82\xB7\x82\xA9\x81""H ",
|
||||
"\r""\x8E\xF4\x95\xB6\x82\xCD\x92\x86\x92""f""\x82\xB3\x82\xEA\x82\xDC\x82\xB5\x82\xBD\x81""B\r",
|
||||
"%s""\x82\xCC""%s""\x82\xCC\x8E\xF4\x95\xB6\x82\xCC\x8C\xF8\x89\xCA\x82\xAA\x90\xD8\x82\xEA\x82\xBD\x81""B\r",
|
||||
"%s""\x82\xCD\x83\x82\x83\x93\x83""X""\x83""^""\x81""[""\x82\xC9\x93\x96\x82\xBD\x82\xE7\x82\xC8\x82\xA9\x82\xC1\x82\xBD\x81""B\r",
|
||||
"%s""\x82\xCD\x91""O""\x97\xF1\x82\xC9\x82\xA2\x82\xC8\x82\xAF\x82\xEA\x82\xCE\x8C\xF8\x89\xCA\x82\xAA\x82\xC8\x82\xA2\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings3FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings3FMTownsJapanese), kEoB2MagicStrings3FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings4FMTownsJapanese[1] = {
|
||||
"\x8C\xF8\x89\xCA\x82\xAA\x82\xC8\x82\xA9\x82\xC1\x82\xBD\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings4FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings4FMTownsJapanese), kEoB2MagicStrings4FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings6FMTownsJapanese[1] = {
|
||||
"%s""\x82\xCC\x83""A""\x81""[""\x83""}""\x81""[""\x82\xCC\x83""N""\x83\x89\x83""X""\x82\xCD\x8A\xF9\x82\xC9\x82""U""\x88\xC8\x89\xBA\x82\xBE\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings6FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings6FMTownsJapanese), kEoB2MagicStrings6FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings7FMTownsJapanese[2] = {
|
||||
"%s""\x82\xC9\x82\xCD\x8A\xF9\x82\xC9""%s""\x82\xCC\x8C\xF8\x89\xCA\x82\xAA\x82\xA0\x82\xE9\x81""B\r",
|
||||
"\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x8A\xF9\x82\xC9""%s""\x82\xCC\x8C\xF8\x89\xCA\x82\xAA\x82\xA0\x82\xE9\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings7FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings7FMTownsJapanese), kEoB2MagicStrings7FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MagicStrings8FMTownsJapanese[6] = {
|
||||
"\x8E\xF4\x95\xB6\x82\xCD\x8E\xB8\x94""s""\x82\xB5\x82\xBD\x81""B\r",
|
||||
"\x90""g""\x93\xAE\x82\xAB\x82\xAA\x82\xC6\x82\xEA\x82\xC8\x82\xA2",
|
||||
"\x8E\xF4\x95\xB6\x82\xCD\x8E\xB8\x94""s""\x82\xB5\x82\xBD\x81""I\r",
|
||||
"\x8E\xF4\x95\xB6\x82\xCD\x8E\xB8\x94""s""\x82\xB5\x82\xBD""\r",
|
||||
"\x93\xCD\x82\xAD\x94\xCD\x88\xCD\x82\xC9\x83\x82\x83\x93\x83""X""\x83""^""\x81""[""\x82\xAA\x82\xA2\x82\xC8\x82\xA2\x81""I\r",
|
||||
"%s""\x82\xC9\x82\xCD\x8A\xF9\x82\xC9\x83""G""\x83""C""\x83""h""\x82\xCC\x8E\xF4\x95\xB6\x82\xCC\x8C\xF8\x89\xCA\x82\xAA\x82\xA0\x82\xE9\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MagicStrings8FMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MagicStrings8FMTownsJapanese), kEoB2MagicStrings8FMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MainMenuStringsFMTownsJapanese[5] = {
|
||||
"\x83""Z""\x81""[""\x83""u""\x83""Q""\x81""[""\x83\x80\x82\xA9\x82\xE7\x8E""n""\x82\xDF\x82\xE9""\r",
|
||||
"\x90""V""\x82\xB5\x82\xAD\x83""p""\x81""[""\x83""e""\x83""B""\x82\xF0\x8D\xEC\x82\xC1\x82\xC4\x8E""n""\x82\xDF\x82\xE9""\r",
|
||||
"\x83\x86\x81""[""\x83""e""\x83""B""\x83\x8A\x83""e""\x83""B""\x81""[\r",
|
||||
"\x83""C""\x83\x93\x83""g""\x83\x8D\x83""_""\x83""N""\x83""V""\x83\x87\x83\x93""\r",
|
||||
"\x83""Q""\x81""[""\x83\x80\x82\xF0\x8F""I""\x97\xB9\x82\xB7\x82\xE9""\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MainMenuStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MainMenuStringsFMTownsJapanese), kEoB2MainMenuStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MainMenuUtilStringsFMTownsJapanese[2] = {
|
||||
"\x89\xE6\x96\xCA\x83\x82\x81""[""\x83""h""\x82\xCC\x95\xCF\x8D""X\r",
|
||||
"\x83\x81\x83""C""\x83\x93\x83\x81\x83""j""\x83\x85\x81""[""\x82\xC9\x96\xDF\x82\xE9""\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MainMenuUtilStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MainMenuUtilStringsFMTownsJapanese), kEoB2MainMenuUtilStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2IntroStringsFMTownsJapanese[20] = {
|
||||
"\x82\xBB\x82\xCC\x94\xD3\x81""A""\x89\xE4\x81""X""\x82\xCD\x92""g""\x98""F""\x82\xCC\x82\xBB\x82\xCE\x82\xC5""\r""\x82\xA2\x82\xC2\x82\xE0\x82\xCC\x82\xE6\x82\xA4\x82\xC9\x82\xAD\x82\xC2\x82\xEB\x82\xA2\x82\xC5\x82\xA2\x82\xBD\x81""B",
|
||||
"\x82\xBB\x82\xB1\x82\xD6\x93\xCB\x91""R""\x82\xCC\x92""m""\x82\xE7\x82\xB9\x82\xAA""\r""\x95\x91\x82\xA2\x8D\x9E\x82\xF1\x82\xC5\x82\xAB\x82\xBD\x81""B",
|
||||
"\x82\xBB\x82\xEA\x82\xCD\x81""A""\x89\xE4\x81""X""\x82\xCC\x93\xAF\x8E""u""\x82\xC5\x82\xA0\x82\xE9""\r""\x83""E""\x83""H""\x81""[""\x83""^""\x81""[""\x83""f""\x83""B""\x81""[""\x83""v""\x82\xCC\x83""A""\x81""[""\x83""`""\x83\x81\x83""C""\x83""W\r""\x83""P""\x83\x8B\x83""x""\x83\x93\x81\x81\x83""u""\x83\x89\x83""b""\x83""N""\x83""X""\x83""^""\x83""b""\x83""t""\x82\xA9\x82\xE7\x82\xBE\x82\xC1\x82\xBD\x81""B",
|
||||
"\x8B\xD9\x8B""}""\x82\xCC\x97""p""\x8C\x8F\x82\xC6\x82\xCC\x82\xB1\x82\xC6\x82\xBE\x82\xAA\x81""E""\x81""E",
|
||||
"\x82\xA2\x82\xC1\x82\xBD\x82\xA2\x83""P""\x83\x8B\x83""x""\x83\x93\x82\xCD""\r""\x89\xBD\x82\xF0\x96""]""\x82\xF1\x82\xC5\x82\xA2\x82\xE9\x82\xCC\x82\xA9\x81""B",
|
||||
"\x82\xC7\x82\xA4\x82\xBC\x82\xA8\x93\xFC\x82\xE8\x82\xAD\x82\xBE\x82\xB3\x82\xA2\x81""B",
|
||||
"\x83""P""\x83\x8B\x83""x""\x83\x93\x97""l""\x82\xAA\x8F\x91\x8D\xD6\x82\xC5\x82\xA8\x91\xD2\x82\xBF\x82\xC5\x82\xB7\x81""B",
|
||||
"\x91""f""\x91\x81\x82\xA2\x93\x9E\x92\x85\x82\xC9\x8A\xB4\x8E\xD3\x82\xB7\x82\xE9\x81""B",
|
||||
"\x8D\xA2\x82\xC1\x82\xBD\x8E\x96\x82\xAA\x8B""N""\x82\xAB\x82\xC4\x82\xB5\x82\xDC\x82\xC1\x82\xBD\x81""B",
|
||||
"\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x8E\x9B\x89""@""\x82\xC5""\r""\x8A\xF5\x82\xDC\x82\xED\x82\xB5\x82\xAB\x82\xE0\x82\xCC\x82\xAA""\r""\x93\xAE\x82\xAB\x8F""o""\x82\xB5\x82\xBD\x82\xE6\x82\xA4\x82\xBE\x81""B",
|
||||
"\x83""E""\x83""H""\x81""[""\x83""^""\x81""[""\x83""f""\x83""B""\x81""[""\x83""v""\x82\xCC\x88\xC0\x91""S""\x82\xAA""\r""\x8B\xBA\x82\xA9\x82\xB3\x82\xEA\x82\xC4\x82\xA2\x82\xE9\x81""B",
|
||||
"\x8C""N""\x92""B""\x82\xCC\x8F\x95\x82\xAF\x82\xAA\x95""K""\x97""v""\x82\xBE\x81""B",
|
||||
"\x8E""O""\x93\xFA\x91""O""\x92\xE3\x8E""@""\x82\xF0\x88\xEA\x90""l""\x94""h""\x8C\xAD\x82\xB5\x82\xBD\x82\xCC\x82\xBE\x82\xAA\x81""A",
|
||||
"\x94\xDE\x8F\x97\x82\xCD\x82\xA2\x82\xDC\x82\xBE\x82\xC9\x96\xDF\x82\xC1\x82\xC4\x82\xAB\x82\xC4\x82\xA2\x82\xC8\x82\xA2\x81""B",
|
||||
"\x94\xDE\x8F\x97\x82\xCC\x82\xB1\x82\xC6\x82\xE0\x90""S""\x94""z""\x82\xBE\x81""B",
|
||||
"\x82\xB1\x82\xCC\x83""R""\x83""C""\x83\x93\x82\xF0\x8E\x9D\x82\xC1\x82\xC4\x82\xA2\x82\xC1\x82\xC4\x82\xAD\x82\xEA\x81""B",
|
||||
"\x8C""N""\x92""B""\x82\xC6\x98""A""\x97\x8D\x82\xF0\x8E\xE6\x82\xE9\x8E\x9E\x82\xC9\x8E""g""\x82\xA4\x82\xE0\x82\xCC\x82\xBE\x81""B",
|
||||
"\x8E\x96\x82\xCD\x88\xEA\x8D\x8F\x82\xF0\x91\x88\x82\xA4\x81""B",
|
||||
"\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x82\xCC\x8B\xDF\x82\xAD\x82\xDC\x82\xC5""\r""\x8C""N""\x92""B""\x82\xF0\x83""e""\x83\x8C\x83""|""\x81""[""\x83""g""\x82\xB7\x82\xE9\x81""B",
|
||||
"\x93\xAF\x8E""u""\x82\xC9\x90""_""\x82\xCC\x82\xB2\x89\xC1\x8C\xEC\x82\xAA\x82\xA0\x82\xE7\x82\xF1\x82\xB1\x82\xC6\x82\xF0\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2IntroStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2IntroStringsFMTownsJapanese), kEoB2IntroStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2FinaleStringsFMTownsJapanese[20] = {
|
||||
"\x82\xC2\x82\xA2\x82\xC9\x81""A""\x83""h""\x83\x89\x83\x93\x82\xCD\x97\xCD\x82\xC2\x82\xAB\x82\xBD\x81""B",
|
||||
"\x82\xBB\x82\xCC\x8E\x9E\x81""A""\x93\xAF\x8E""u""\x83""P""\x83\x8B\x83""x""\x83\x93\x82\xAA\x96\xDA\x82\xCC\x91""O""\x82\xC9\x8C\xBB\x82\xEA\x82\xBD\x81""B",
|
||||
"\x82\xA8\x82\xDF\x82\xC5\x82\xC6\x82\xA4\x81""A""\x8C\xD6\x82\xE8\x8D\x82\x82\xAB\x93\xAF\x8E""u""\x92""B""\x82\xE6\x81""B",
|
||||
"\x8C""N""\x92""B""\x82\xC9\x82\xE6\x82\xC1\x82\xC4\x83""h""\x83\x89\x83\x93\x82\xCD\x93""|""\x82\xB3\x82\xEA\x82\xBD\x81""I",
|
||||
"\x83""h""\x83\x89\x83\x93\x82\xAA\x83""h""\x83\x89\x83""S""\x83\x93\x82\xBE\x82\xC1\x82\xBD\x82\xC6\x82\xCD""\r""\x8E\x84\x82\xE0\x92""m""\x82\xE7\x82\xC8\x82\xA9\x82\xC1\x82\xBD\x81""B",
|
||||
"\x82\xB1\x82\xA2\x82\xC2\x82\xCD\x82""R""\x82""O""\x82""O""\x94""N""\x88\xC8\x8F\xE3""\r""\x90\xB6\x82\xAB\x82\xC4\x82\xA2\x82\xBD\x82\xC9\x88\xE1\x82\xA2\x82\xC8\x82\xA2\x81""I",
|
||||
"\x83""h""\x83\x89\x83\x93\x82\xCC\x97\xCD\x82\xCD\x8F\xC1\x82\xA6\x82\xBD\x81""B",
|
||||
"\x82\xB5\x82\xA9\x82\xB5\x81""A""\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x82\xCD""\r""\x96\xA2\x82\xBE\x82\xC9\x8B\x90\x91\xE5\x82\xC8\x88\xAB\x82\xCC\x97\xCD\x82\xCC\x89\xF2\x82\xBE\x81""B",
|
||||
"\x82\xBB\x82\xEA\x82\xC9\x81""A""\x94\xDE\x82\xCC\x89\xBA\x96""l""\x92""B""\x82\xAA\x8E""c""\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""B",
|
||||
"\x82\xB3\x82\xA0\x81""A""\x82\xB1\x82\xCC\x8F\xEA\x8F\x8A\x82\xF0\x97\xA3\x82\xEA\x82\xE9\x82\xC6\x82\xB5\x82\xE6\x82\xA4\x81""B",
|
||||
"\x8E\x84\x82\xCC\x97\xCD\x82\xC5\x94""j""\x89\xF3\x82\xB7\x82\xEA\x82\xCE\x81""A\r""\x8F""I""\x8E""~""\x95\x84\x82\xF0\x91\xC5\x82\xC2\x82\xB1\x82\xC6\x82\xAA\x82\xC5\x82\xAB\x82\xE9\x82\xBE\x82\xEB\x82\xA4\x81""B",
|
||||
"\x82\xC2\x82\xA2\x82\xC4\x97\x88\x82\xC8\x82\xB3\x82\xA2\x81""B",
|
||||
"\x8B\xAD\x97\xCD\x82\xC8\x83\x81\x83""C""\x83""W""\x92""B""\x82\xAA\x81""A""\x8D\xC5\x8C\xE3\x82\xCC\x8C\x88\x90\xED\x82\xCC\x88\xD7\x82\xC9""\r""\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x82\xCC\x89\xF1\x82\xE8\x82\xC9\x97\xA7\x82\xC1\x82\xC4\x82\xA2\x82\xE9\x81""B",
|
||||
"\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x82\xCC\x88\xAB\x82\xCC\x97\xCD\x82\xCD\x8B\xAD\x97\xCD\x82\xBE\x81""B",
|
||||
"\x90\xB6\x82\xA9\x82\xB5\x82\xC4\x82\xA8\x82\xA2\x82\xC4\x82\xCD\x82\xC8\x82\xE7\x82\xC8\x82\xA2\x81""I",
|
||||
"\x83""_""\x81""[""\x83""N""\x83\x80\x81""[""\x83\x93\x82\xCD\x8F\xC1\x82\xA6\x8B\x8E\x82\xC1\x82\xC4\x82\xA2\x82\xC1\x82\xBD\x81""B",
|
||||
"\x93\xAF\x8E""u""\x82\xE6\x81""B""\x82\xB1\x82\xEA\x82\xC5\x81""A""\x91""S""\x82\xC4\x82\xAA\x8F""I""\x82\xED\x82\xC1\x82\xBD\x81""B",
|
||||
"\x90""S""\x82\xA9\x82\xE7\x8A\xB4\x8E\xD3\x82\xB7\x82\xE9\x81""B",
|
||||
"\x8C""N""\x92""B""\x82\xC9\x8E\x84\x82\xCC\x8D\xC5\x8D\x82\x82\xCC\x8C""h""\x88\xD3\x82\xF0\x95\xA5\x82\xA8\x82\xA4\x81""B",
|
||||
"\x89\xE4\x81""X""\x82\xCD\x8C""N""\x92""B""\x82\xCC\x82\xB1\x82\xC6\x82\xF0""\r""\x82\xA2\x82\xC2\x82\xE0\x96""Y""\x82\xEA\x82\xC8\x82\xA2\x82\xBE\x82\xEB\x82\xA4\x81""B"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2FinaleStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2FinaleStringsFMTownsJapanese), kEoB2FinaleStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MonsterDistAttStringsFMTownsJapanese[5] = {
|
||||
"\x83""p""\x81""[""\x83""e""\x83""B""\x82\xCD\x83""T""\x83""C""\x83""L""\x83""b""\x83""N""\x83""}""\x83""C""\x83\x93\x83""h""\x83""u""\x83\x89\x83""X""\x83""g""\x82\xF0\x8E\xF3\x82\xAF\x82\xBD\x81""I\r",
|
||||
"\x96\x83\xE1\x83\x82\xB5\x82\xBD",
|
||||
"\x93\xC5\x82\xF0\x8E\xF3\x82\xAF\x82\xBD",
|
||||
"\x96\x83\xE1\x83\x82\xB5\x82\xBD",
|
||||
"\x90\xCE\x89\xBB\x82\xB5\x82\xBD"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MonsterDistAttStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MonsterDistAttStringsFMTownsJapanese), kEoB2MonsterDistAttStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2Npc1StringsFMTownsJapanese[2] = {
|
||||
"\x98""b""\x82\xB7",
|
||||
"\x8B\x8E\x82\xE9"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2Npc1StringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2Npc1StringsFMTownsJapanese), kEoB2Npc1StringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2Npc2StringsFMTownsJapanese[2] = {
|
||||
"\x8D\xBD\x82\xF0\x8A""O""\x82\xB7",
|
||||
"\x8B\x8E\x82\xE9"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2Npc2StringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2Npc2StringsFMTownsJapanese), kEoB2Npc2StringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2MonsterDustStringsFMTownsJapanese[1] = {
|
||||
"\x83\x82\x83\x93\x83""X""\x83""^""\x81""|""\x82\xCD\x8D\xD3\x82\xAF\x8E""U""\x82\xC1\x82\xBD\x81""I\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2MonsterDustStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2MonsterDustStringsFMTownsJapanese), kEoB2MonsterDustStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2KheldranStringsFMTownsJapanese[1] = {
|
||||
" ""\x82\xB1\x82\xCC\x8F\xAC\x91""m""\x82\xDF\x82\xAA\x81""I"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2KheldranStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2KheldranStringsFMTownsJapanese), kEoB2KheldranStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2HornStringsFMTownsJapanese[4] = {
|
||||
"\x83""z""\x81""[""\x83\x93\x82\xA9\x82\xE7\x82\xA4\x82\xC8\x82\xE9\x82\xE6\x82\xA4\x82\xC8\x89\xB9\x82\xAA\x8B\xBF\x82\xA2\x82\xBD\x81""B\r",
|
||||
"\x83""z""\x81""[""\x83\x93\x82\xA9\x82\xE7\x82\xA4\x82\xC2\x82\xEB\x82\xC8\x89\xB9\x82\xAA\x95\xB7\x82\xB1\x82\xA6\x82\xE9\x81""B\r",
|
||||
"\x83""z""\x81""[""\x83\x93\x82\xA9\x82\xE7\x94\xFC\x82\xB5\x82\xA2\x89\xB9\x82\xAA\x97\xAC\x82\xEA\x82\xE9\x81""B\r",
|
||||
"\x83""z""\x81""[""\x83\x93\x82\xA9\x82\xE7\x95""s""\x8B""C""\x96\xA1\x82\xC8\x89\xB9\x82\xAA\x82\xB7\x82\xE9\x81""B\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2HornStringsFMTownsJapaneseProvider = { ARRAYSIZE(kEoB2HornStringsFMTownsJapanese), kEoB2HornStringsFMTownsJapanese };
|
||||
|
||||
static const char *const kEoB2UtilMenuStringsFMTowns[2] = {
|
||||
"\x89\xE6\x96\xCA\x83\x82\x81\x5B\x83\x68\x82\xCC\x95\xCF\x8D\x58\r",
|
||||
"\x83\x81\x83\x43\x83\x93\x83\x81\x83\x6A\x83\x85\x81\x5B\x82\xC9\x96\xDF\x82\xE9\r"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2UtilMenuStringsFMTownsProvider = { ARRAYSIZE(kEoB2UtilMenuStringsFMTowns), kEoB2UtilMenuStringsFMTowns };
|
||||
|
||||
static const char *const kEoB2Config2431StringsFMTowns[2] = {
|
||||
"\x82\x51\x82\x53\x82\x6A\x82\x67\x82\x9A",
|
||||
"\x82\x52\x82\x50\x82\x6A\x82\x67\x82\x9A"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2Config2431StringsFMTownsProvider = { ARRAYSIZE(kEoB2Config2431StringsFMTowns), kEoB2Config2431StringsFMTowns };
|
||||
|
||||
static const char *const kEoB2KatakanaLinesFMTowns[12] = {
|
||||
"\x83""A""\x83""C""\x83""E""\x83""G""\x83""I""\x81""@""\x83""J""\x83""L""\x83""N""\x83""P""\x83""R""\x81""@""\x83""T""\x83""V""\x83""X""\x83""Z""\x83""\\",
|
||||
"\x83""^""\x83""`""\x83""c""\x83""e""\x83""g""\x81""@""\x83""i""\x83""j""\x83""k""\x83""l""\x83""m""\x81""@""\x83""n""\x83""q""\x83""t""\x83""w""\x83""z",
|
||||
"\x83""}""\x83""~""\x83\x80\x83\x81\x83\x82\x81""@""\x83\x84\x81""@""\x83\x86\x81""@""\x83\x88\x81""@""\x83\x89\x83\x8a\x83\x8b\x83\x8c\x83\x8d",
|
||||
"\x83\x8f\x83\x92\x83\x93\x81""@""\x81""[""\x81""@""\x81""Q""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@",
|
||||
"\x83""K""\x83""M""\x83""O""\x83""Q""\x83""S""\x81""@""\x83""U""\x83""W""\x83""Y""\x83""[""\x83""]""\x81""@""\x83""_""\x83""a""\x83""Y""\x83""f""\x83""h",
|
||||
"\x83""o""\x83""r""\x83""u""\x83""x""\x83""{""\x81""@""\x83""p""\x83""s""\x83""v""\x83""y""\x83""|""\x81""@""\x83""@""\x83""B""\x83""D""\x83""F""\x83""H",
|
||||
"\x83\x83\x83\x85\x83\x87\x81""@""\x83""b""\x81""@""\x81""Q""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@",
|
||||
"\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@",
|
||||
"\x82""`""\x82""a""\x82""b""\x82""c""\x82""d""\x81""@""\x82""e""\x82""f""\x82""g""\x82""h""\x82""i""\x81""@""\x82""j""\x82""k""\x82""l""\x82""m""\x82""n",
|
||||
"\x82""o""\x82""p""\x82""q""\x82""r""\x82""s""\x81""@""\x82""t""\x82""u""\x82""v""\x82""w""\x82""x""\x81""@""\x82""y""\x81""@""\x81""D""\x81""C""\x81""Q",
|
||||
"\x82""O""\x82""P""\x82""Q""\x82""R""\x82""S""\x82""T""\x82""U""\x82""V""\x82""W""\x82""X""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@",
|
||||
"\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@""\x81""@"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2KatakanaLinesFMTownsProvider = { ARRAYSIZE(kEoB2KatakanaLinesFMTowns), kEoB2KatakanaLinesFMTowns };
|
||||
|
||||
static const char *const kEoB2KanaSelectStringsFMTowns[3] = {
|
||||
"NEXT",
|
||||
"END",
|
||||
"DEL"
|
||||
};
|
||||
|
||||
static const StringListProvider kEoB2KanaSelectStringsFMTownsProvider = { ARRAYSIZE(kEoB2KanaSelectStringsFMTowns), kEoB2KanaSelectStringsFMTowns };
|
@ -812,13 +812,13 @@ static const byte kLoLDscTileIndexDOS[18] = {
|
||||
|
||||
static const ByteProvider kLoLDscTileIndexDOSProvider = { ARRAYSIZE(kLoLDscTileIndexDOS), kLoLDscTileIndexDOS };
|
||||
|
||||
static const byte kLoLDscUnk2DOS[23] = {
|
||||
static const byte kLoLDscDoorScaleOffsDOS[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 ByteProvider kLoLDscDoorScaleOffsDOSProvider = { ARRAYSIZE(kLoLDscDoorScaleOffsDOS), kLoLDscDoorScaleOffsDOS };
|
||||
|
||||
static const byte kLoLDscDoorShapeIndexDOS[23] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
@ -877,13 +877,13 @@ static const byte kLoLDscTileIndexDOSCD[18] = {
|
||||
|
||||
static const ByteProvider kLoLDscTileIndexDOSCDProvider = { ARRAYSIZE(kLoLDscTileIndexDOSCD), kLoLDscTileIndexDOSCD };
|
||||
|
||||
static const byte kLoLDscUnk2DOSCD[23] = {
|
||||
static const byte kLoLDscDoorScaleOffsDOSCD[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 ByteProvider kLoLDscDoorScaleOffsDOSCDProvider = { ARRAYSIZE(kLoLDscDoorScaleOffsDOSCD), kLoLDscDoorScaleOffsDOSCD };
|
||||
|
||||
static const byte kLoLDscDoorShapeIndexDOSCD[23] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
@ -666,13 +666,13 @@ static const byte kLoLDscTileIndexFMTowns[18] = {
|
||||
|
||||
static const ByteProvider kLoLDscTileIndexFMTownsProvider = { ARRAYSIZE(kLoLDscTileIndexFMTowns), kLoLDscTileIndexFMTowns };
|
||||
|
||||
static const byte kLoLDscUnk2FMTowns[23] = {
|
||||
static const byte kLoLDscDoorScaleOffsFMTowns[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 ByteProvider kLoLDscDoorScaleOffsFMTownsProvider = { ARRAYSIZE(kLoLDscDoorScaleOffsFMTowns), kLoLDscDoorScaleOffsFMTowns };
|
||||
|
||||
static const byte kLoLDscDoorShapeIndexFMTowns[23] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
@ -665,13 +665,13 @@ static const byte kLoLDscTileIndexPC98[18] = {
|
||||
|
||||
static const ByteProvider kLoLDscTileIndexPC98Provider = { ARRAYSIZE(kLoLDscTileIndexPC98), kLoLDscTileIndexPC98 };
|
||||
|
||||
static const byte kLoLDscUnk2PC98[23] = {
|
||||
static const byte kLoLDscDoorScaleOffsPC98[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 ByteProvider kLoLDscDoorScaleOffsPC98Provider = { ARRAYSIZE(kLoLDscDoorScaleOffsPC98), kLoLDscDoorScaleOffsPC98 };
|
||||
|
||||
static const byte kLoLDscDoorShapeIndexPC98[23] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
|
Binary file not shown.
@ -66,7 +66,7 @@ private:
|
||||
int getNextFreeFaceShape(int shpIndex, int charSex, int step, int8 *selectedPortraits);
|
||||
void processFaceMenuSelection(int index);
|
||||
void printStats(int index, int mode);
|
||||
void processNameInput(int index, int len, int textColor);
|
||||
void processNameInput(int index, int textColor);
|
||||
int rollDice();
|
||||
int modifyStat(int index, int8 *stat1, int8 *stat2);
|
||||
int getMaxHp(int cclass, int constitution, int level1, int level2, int level3);
|
||||
@ -99,7 +99,10 @@ private:
|
||||
const uint8 *_chargenRaceMinStats;
|
||||
const uint16 *_chargenRaceMaxStats;
|
||||
|
||||
static const EoBChargenButtonDef _chargenButtonDefs[];
|
||||
const EoBChargenButtonDef *_chargenButtonDefs;
|
||||
|
||||
static const EoBChargenButtonDef _chargenButtonDefsDOS[];
|
||||
static const uint16 _chargenButtonKeyCodesFMTOWNS[];
|
||||
static const CreatePartyModButton _chargenModButtons[];
|
||||
static const EoBRect8 _chargenButtonBodyCoords[];
|
||||
static const int16 _chargenBoxX[];
|
||||
@ -141,6 +144,19 @@ CharacterGenerator::CharacterGenerator(EoBCoreEngine *vm, Screen_EoB *screen) :
|
||||
_chargenClassMinStats = _vm->staticres()->loadRawData(kEoBBaseChargenClassMinStats, temp);
|
||||
_chargenRaceMinStats = _vm->staticres()->loadRawData(kEoBBaseChargenRaceMinStats, temp);
|
||||
_chargenRaceMaxStats = _vm->staticres()->loadRawDataBe16(kEoBBaseChargenRaceMaxStats, temp);
|
||||
|
||||
EoBChargenButtonDef *chargenButtonDefs = new EoBChargenButtonDef[41];
|
||||
memcpy(chargenButtonDefs, _chargenButtonDefsDOS, 41 * sizeof(EoBChargenButtonDef));
|
||||
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
const uint16 *c = _chargenButtonKeyCodesFMTOWNS;
|
||||
for (int i = 0; i < 41; ++i) {
|
||||
if (chargenButtonDefs[i].keyCode)
|
||||
chargenButtonDefs[i].keyCode = *c++;
|
||||
}
|
||||
}
|
||||
|
||||
_chargenButtonDefs = chargenButtonDefs;
|
||||
}
|
||||
|
||||
CharacterGenerator::~CharacterGenerator() {
|
||||
@ -152,6 +168,10 @@ CharacterGenerator::~CharacterGenerator() {
|
||||
|
||||
for (int i = 0; i < 17; i++)
|
||||
delete[] _chargenButtonLabels[i];
|
||||
|
||||
delete[] _chargenButtonDefs;
|
||||
|
||||
_screen->clearPage(2);
|
||||
}
|
||||
|
||||
bool CharacterGenerator::start(EoBCharacter *characters, uint8 ***faceShapes) {
|
||||
@ -241,6 +261,10 @@ bool CharacterGenerator::start(EoBCharacter *characters, uint8 ***faceShapes) {
|
||||
}
|
||||
|
||||
void CharacterGenerator::init() {
|
||||
/*_screen->loadEoBBitmap("MENU", 0, 3, 3, 2);
|
||||
Common::SeekableReadStream *s = _res->createReadStream("facedat.dmp");
|
||||
_screen->loadFileDataToPage(s, 2, 64000);*/
|
||||
|
||||
_screen->loadShapeSetBitmap("CHARGENA", 3, 3);
|
||||
if (_faceShapes) {
|
||||
for (int i = 0; i < 44; i++)
|
||||
@ -272,6 +296,8 @@ void CharacterGenerator::init() {
|
||||
|
||||
_screen->convertPage(3, 2, _vm->_cgaMappingDefault);
|
||||
_screen->_curPage = 0;
|
||||
_screen->convertToHiColor(2);
|
||||
_screen->shadeRect(142, 63, 306, 193, 4);
|
||||
_screen->copyRegion(144, 64, 0, 0, 180, 128, 0, 2, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
}
|
||||
@ -323,7 +349,8 @@ void CharacterGenerator::initButton(int index, int x, int y, int w, int h, int k
|
||||
void CharacterGenerator::checkForCompleteParty() {
|
||||
_screen->copyRegion(0, 0, 160, 0, 160, 128, 2, 2, Screen::CR_NO_P_CHECK);
|
||||
int cp = _screen->setCurPage(2);
|
||||
_screen->printShadedText(_chargenStrings1[8], 168, 16, 15, 0);
|
||||
int x = (_vm->gameFlags().platform == Common::kPlatformFMTowns) ? 184 : 168;
|
||||
_screen->printShadedText(_chargenStrings1[8], x, 16, 15, 0);
|
||||
_screen->setCurPage(cp);
|
||||
_screen->copyRegion(160, 0, 144, 64, 160, 128, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
|
||||
@ -335,7 +362,7 @@ void CharacterGenerator::checkForCompleteParty() {
|
||||
|
||||
if (numChars == 4) {
|
||||
_screen->setCurPage(2);
|
||||
_screen->printShadedText(_chargenStrings1[0], 168, 61, 15, 0);
|
||||
_screen->printShadedText(_chargenStrings1[0], x, 61, 15, 0);
|
||||
_screen->setCurPage(0);
|
||||
_screen->copyRegion(168, 61, 152, 125, 136, 40, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
toggleSpecialButton(15, 0, 0);
|
||||
@ -416,7 +443,7 @@ int CharacterGenerator::viewDeleteCharacter() {
|
||||
if (_characters[_activeBox].name[0]) {
|
||||
processSpecialButton(16);
|
||||
_characters[_activeBox].name[0] = 0;
|
||||
processNameInput(_activeBox, 1, 12);
|
||||
processNameInput(_activeBox, 12);
|
||||
processFaceMenuSelection(_activeBox + 50);
|
||||
}
|
||||
} else {
|
||||
@ -478,8 +505,10 @@ void CharacterGenerator::createPartyMember() {
|
||||
processFaceMenuSelection(_chargenMinStats[6]);
|
||||
printStats(_activeBox, 0);
|
||||
_screen->printShadedText(_chargenStrings2[11], 149, 100, 9, 0);
|
||||
if (!_vm->shouldQuit())
|
||||
processNameInput(_activeBox, _vm->_gui->getTextInput(_characters[_activeBox].name, 24, 100, 10, 15, 0, 8), 2);
|
||||
if (!_vm->shouldQuit()) {
|
||||
_vm->_gui->getTextInput(_characters[_activeBox].name, 24, 100, 10, 15, 0, 8);
|
||||
processNameInput(_activeBox, 2);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -887,7 +916,7 @@ void CharacterGenerator::printStats(int index, int mode) {
|
||||
if (mode != 4)
|
||||
_screen->drawShape(2, c->faceShape, 224, 2, 0);
|
||||
|
||||
_screen->printShadedText(c->name, 160 + ((20 - strlen(c->name)) << 2), 35, 15, 0);
|
||||
_screen->printShadedText(c->name, 160 + ((160 - _screen->getTextWidth(c->name)) / 2), 35, 15, 0);
|
||||
_screen->printShadedText(_chargenRaceSexStrings[c->raceSex], 160 + ((20 - strlen(_chargenRaceSexStrings[c->raceSex])) << 2), 45, 15, 0);
|
||||
_screen->printShadedText(_chargenClassStrings[c->cClass], 160 + ((20 - strlen(_chargenClassStrings[c->cClass])) << 2), 54, 15, 0);
|
||||
|
||||
@ -937,14 +966,10 @@ void CharacterGenerator::printStats(int index, int mode) {
|
||||
_screen->_curPage = 0;
|
||||
}
|
||||
|
||||
void CharacterGenerator::processNameInput(int index, int len, int textColor) {
|
||||
void CharacterGenerator::processNameInput(int index, int textColor) {
|
||||
Screen::FontId of = _screen->setFont(Screen::FID_6_FNT);
|
||||
|
||||
// WORKAROUND for bug in original code:
|
||||
len = strlen(_characters[index].name);
|
||||
|
||||
int xOffs = (60 - _screen->getFontWidth() * len) >> 1;
|
||||
_screen->printText(_chargenStrings1[1], _chargenNameFieldX[index], _chargenNameFieldY[index], 12, 12);
|
||||
_screen->fillRect(_chargenNameFieldX[index], _chargenNameFieldY[index], _chargenNameFieldX[index] + 59, _chargenNameFieldY[index] + 5, 12);
|
||||
int xOffs = (60 - _screen->getTextWidth(_characters[index].name)) >> 1;
|
||||
_screen->printText(_characters[index].name, _chargenNameFieldX[index] + xOffs, _chargenNameFieldY[index], textColor, 0);
|
||||
_screen->updateScreen();
|
||||
_screen->setFont(of);
|
||||
@ -1140,7 +1165,7 @@ int CharacterGenerator::getMinHp(int cclass, int constitution, int level1, int l
|
||||
void CharacterGenerator::finish() {
|
||||
_screen->copyRegion(0, 0, 160, 0, 160, 128, 2, 2, Screen::CR_NO_P_CHECK);
|
||||
int cp = _screen->setCurPage(2);
|
||||
_screen->printShadedText(_chargenEnterGameStrings[0], 168, 32, 15, 0);
|
||||
_screen->printShadedText(_chargenEnterGameStrings[0], (_vm->gameFlags().platform == Common::kPlatformFMTowns) ? 184 : 168, 32, 15, 0);
|
||||
_screen->setCurPage(cp);
|
||||
_screen->copyRegion(160, 0, 144, 64, 160, 128, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
@ -1341,7 +1366,7 @@ void CharacterGenerator::finish() {
|
||||
}
|
||||
}
|
||||
|
||||
const EoBChargenButtonDef CharacterGenerator::_chargenButtonDefs[] = {
|
||||
const EoBChargenButtonDef CharacterGenerator::_chargenButtonDefsDOS[] = {
|
||||
{ 0x01, 0x37, 0x31, 0x32, 0x70 },
|
||||
{ 0x09, 0x37, 0x31, 0x32, 0x71 },
|
||||
{ 0x01, 0x77, 0x31, 0x32, 0x72 },
|
||||
@ -1385,6 +1410,10 @@ const EoBChargenButtonDef CharacterGenerator::_chargenButtonDefs[] = {
|
||||
{ 0x21, 0xAC, 0x25, 0x10, 0x19 }
|
||||
};
|
||||
|
||||
const uint16 CharacterGenerator::_chargenButtonKeyCodesFMTOWNS[] = {
|
||||
93, 94, 95, 96, 80, 79, 68, 66, 82, 77, 70, 75, 43, 45, 79
|
||||
};
|
||||
|
||||
const CreatePartyModButton CharacterGenerator::_chargenModButtons[] = {
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x40 },
|
||||
{ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x40 },
|
||||
|
@ -29,23 +29,17 @@
|
||||
namespace Kyra {
|
||||
|
||||
DarkMoonEngine::DarkMoonEngine(OSystem *system, const GameFlags &flags) : EoBCoreEngine(system, flags) {
|
||||
_animIntro = _animFinale = 0;
|
||||
_shapesIntro = _shapesFinale = 0;
|
||||
_dscDoorType5Offs = 0;
|
||||
_numSpells = 70;
|
||||
_menuChoiceInit = 4;
|
||||
|
||||
_introStrings = _cpsFilesIntro = _cpsFilesFinale = _finaleStrings = _kheldranStrings = _npcStrings[0] = _npcStrings[1] = _hornStrings = 0;
|
||||
_shapesIntro = _shapesFinale = 0;
|
||||
_creditsData = _npcShpData = _dscDoorType5Offs = _hornSounds = 0;
|
||||
_kheldranStrings = _npcStrings[0] = _npcStrings[1] = _hornStrings = 0;
|
||||
_utilMenuStrings = _ascii2SjisTables = _ascii2SjisTables2 = 0;
|
||||
_npcShpData = _dscDoorType5Offs = _hornSounds = 0;
|
||||
_dreamSteps = 0;
|
||||
}
|
||||
|
||||
DarkMoonEngine::~DarkMoonEngine() {
|
||||
delete[] _animIntro;
|
||||
delete[] _animFinale;
|
||||
delete[] _shapesIntro;
|
||||
delete[] _shapesFinale;
|
||||
}
|
||||
|
||||
Common::Error DarkMoonEngine::init() {
|
||||
@ -63,9 +57,15 @@ Common::Error DarkMoonEngine::init() {
|
||||
_screen->setScreenPalette(pal);
|
||||
}
|
||||
|
||||
_screen->loadPalette("PALETTE.COL", _screen->getPalette(0));
|
||||
_screen->loadPalette(_flags.platform == Common::kPlatformFMTowns ? "MENU.PAL" : "PALETTE.COL", _screen->getPalette(0));
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
|
||||
// adjust menu settings for EOB II FM-Towns
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
_screen->modifyScreenDim(6, 10, 100, 21, 40);
|
||||
_screen->modifyScreenDim(27, 0, 0, 21, 2);
|
||||
}
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
@ -193,29 +193,32 @@ void DarkMoonEngine::generateMonsterPalettes(const char *file, int16 monsterInde
|
||||
_screen->setCurPage(cp);
|
||||
}
|
||||
|
||||
void DarkMoonEngine::loadMonsterDecoration(const char *file, int16 monsterIndex) {
|
||||
Common::SeekableReadStream *s = _res->createReadStream(Common::String::format("%s.dcr", file));
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
int len = s->readUint16LE();
|
||||
void DarkMoonEngine::loadMonsterDecoration(Common::SeekableReadStream *stream, int16 monsterIndex) {
|
||||
int len = stream->readUint16LE();
|
||||
Common::List<SpriteDecoration*> activeDecorations;
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
for (int ii = 0; ii < 6; ii++) {
|
||||
uint8 dc[6];
|
||||
s->read(dc, 6);
|
||||
stream->read(dc, 6);
|
||||
if (!dc[2] || !dc[3])
|
||||
continue;
|
||||
|
||||
SpriteDecoration *m = &_monsterDecorations[i * 6 + ii + monsterIndex];
|
||||
|
||||
if (_flags.platform != Common::kPlatformFMTowns)
|
||||
m->shp = _screen->encodeShape(dc[0], dc[1], dc[2], dc[3]);
|
||||
m->x = (int8)dc[4];
|
||||
m->y = (int8)dc[5];
|
||||
activeDecorations.push_back(m);
|
||||
}
|
||||
}
|
||||
|
||||
delete s;
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
while (!activeDecorations.empty()) {
|
||||
activeDecorations.front()->shp = loadTownsShape(stream);
|
||||
activeDecorations.pop_front();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void DarkMoonEngine::replaceMonster(int unit, uint16 block, int pos, int dir, int type, int shpIndex, int mode, int h2, int randItem, int fixedItem) {
|
||||
@ -382,6 +385,10 @@ void DarkMoonEngine::restParty_npc() {
|
||||
gui_drawAllCharPortraitsWithStats();
|
||||
|
||||
_screen->setClearScreenDim(10);
|
||||
_screen->set16bitShadingLevel(4);
|
||||
gui_drawBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, guiSettings()->colors.frame1, guiSettings()->colors.frame2, -1);
|
||||
gui_drawBox((_screen->_curDim->sx << 3) + 1, _screen->_curDim->sy + 1, (_screen->_curDim->w << 3) - 2, _screen->_curDim->h - 2, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_gui->messageDialogue2(11, 63, 6);
|
||||
_gui->messageDialogue2(11, 64, 6);
|
||||
}
|
||||
@ -478,7 +485,7 @@ void DarkMoonEngine::characterLevelGain(int charIndex) {
|
||||
}
|
||||
|
||||
const KyraRpgGUISettings *DarkMoonEngine::guiSettings() {
|
||||
return &_guiSettings;
|
||||
return (_flags.platform == Common::kPlatformFMTowns) ? &_guiSettingsFMTowns : &_guiSettingsDOS;
|
||||
}
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
@ -60,6 +60,7 @@ private:
|
||||
// Main Menu
|
||||
int mainMenu();
|
||||
int mainMenuLoop();
|
||||
void townsUtilitiesMenu();
|
||||
|
||||
int _menuChoiceInit;
|
||||
|
||||
@ -72,22 +73,6 @@ private:
|
||||
void seq_playFinale();
|
||||
void seq_playCredits(DarkmoonSequenceHelper *sq, const uint8 *data, int sd, int backupPage, int tempPage, int speed);
|
||||
|
||||
const char *const *_introStrings;
|
||||
const char *const *_cpsFilesIntro;
|
||||
const DarkMoonAnimCommand **_animIntro;
|
||||
const DarkMoonShapeDef **_shapesIntro;
|
||||
|
||||
const char *const *_finaleStrings;
|
||||
const uint8 *_creditsData;
|
||||
const char *const *_cpsFilesFinale;
|
||||
const DarkMoonAnimCommand **_animFinale;
|
||||
const DarkMoonShapeDef **_shapesFinale;
|
||||
|
||||
static const char *const _palFilesIntroVGA[];
|
||||
static const char *const _palFilesIntroEGA[];
|
||||
static const char *const _palFilesFinaleVGA[];
|
||||
static const char *const _palFilesFinaleEGA[];
|
||||
|
||||
// Ingame sequence
|
||||
void seq_nightmare();
|
||||
void seq_kheldran();
|
||||
@ -108,7 +93,7 @@ private:
|
||||
|
||||
// Monsters
|
||||
void generateMonsterPalettes(const char *file, int16 monsterIndex);
|
||||
void loadMonsterDecoration(const char *file, int16 monsterIndex);
|
||||
void loadMonsterDecoration(Common::SeekableReadStream *stream, int16 monsterIndex);
|
||||
void replaceMonster(int unit, uint16 block, int d, int dir, int type, int shpIndex, int mode, int h2, int randItem, int fixedItem);
|
||||
bool killMonsterExtra(EoBMonsterInPlay *m);
|
||||
|
||||
@ -140,7 +125,10 @@ private:
|
||||
const char *const *_hornStrings;
|
||||
const uint8 *_hornSounds;
|
||||
|
||||
static const KyraRpgGUISettings _guiSettings;
|
||||
const char *const *_utilMenuStrings;
|
||||
|
||||
static const KyraRpgGUISettings _guiSettingsDOS;
|
||||
static const KyraRpgGUISettings _guiSettingsFMTowns;
|
||||
static const uint8 _egaDefaultPalette[];
|
||||
};
|
||||
|
||||
|
@ -206,6 +206,10 @@ bool KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGame
|
||||
flags.lang = Common::EN_ANY;
|
||||
}
|
||||
|
||||
#ifndef USE_RGB_COLOR
|
||||
flags.useHiColorMode = false;
|
||||
#endif
|
||||
|
||||
switch (flags.gameID) {
|
||||
case Kyra::GI_KYRA1:
|
||||
*engine = new Kyra::KyraEngine_LoK(syst, flags);
|
||||
@ -228,6 +232,8 @@ bool KyraMetaEngine::createInstance(OSystem *syst, Engine **engine, const ADGame
|
||||
case Kyra::GI_EOB2:
|
||||
if (Common::parseRenderMode(ConfMan.get("render_mode")) == Common::kRenderEGA)
|
||||
flags.useHiRes = true;
|
||||
if (platform == Common::kPlatformFMTowns && !flags.useHiColorMode)
|
||||
error("EOB ÌI FM-TOWNS requires support of 16bit color modes which has not been activated in your ScummVM build (The 'USE_RGB_COLOR' define has not been set).");
|
||||
*engine = new Kyra::DarkMoonEngine(syst, flags);
|
||||
break;
|
||||
#endif // ENABLE_EOB
|
||||
|
@ -22,7 +22,6 @@
|
||||
|
||||
namespace {
|
||||
|
||||
#define EOB2_SJIS_FLAGS FLAGS(false, false, false, false, true, false, false, false, Kyra::GI_EOB2)
|
||||
#define FLAGS(x, y, z, a, b, c, d, e, f, id) { Common::UNK_LANG, Common::UNK_LANG, Common::UNK_LANG, Common::kPlatformUnknown, x, y, z, a, b, c, d, e, f, id }
|
||||
#define FLAGS_FAN(fanLang, repLang, x, y, z, a, b, c, d, e, f, id) { Common::UNK_LANG, fanLang, repLang, Common::kPlatformUnknown, x, y, z, a, b, c, d, e, f, id }
|
||||
|
||||
@ -62,6 +61,7 @@ namespace {
|
||||
|
||||
#define EOB_FLAGS FLAGS(false, false, false, false, false, false, false, false, false, Kyra::GI_EOB1)
|
||||
#define EOB2_FLAGS FLAGS(false, false, false, false, false, false, false, false, false, Kyra::GI_EOB2)
|
||||
#define EOB2_FMTOWNS_FLAGS FLAGS(false, false, false, false, true, false, true, false, false, Kyra::GI_EOB2)
|
||||
|
||||
#define GAMEOPTION_KYRA3_AUDIENCE GUIO_GAMEOPTIONS1
|
||||
#define GAMEOPTION_KYRA3_SKIP GUIO_GAMEOPTIONS2
|
||||
@ -1684,6 +1684,22 @@ const KYRAGameDescription adGameDescs[] = {
|
||||
},
|
||||
EOB2_FLAGS
|
||||
},
|
||||
|
||||
{
|
||||
{
|
||||
"eob2",
|
||||
0,
|
||||
{
|
||||
{ "AZURE.SDT", 0, "2915098f2d1bdcfa518f857a26bb3324", -1 },
|
||||
{ 0, 0, 0, 0 }
|
||||
},
|
||||
Common::JA_JPN,
|
||||
Common::kPlatformFMTowns,
|
||||
ADGF_NO_FLAGS,
|
||||
GUIO4(GUIO_NOSPEECH, GUIO_MIDITOWNS, GUIO_RENDERFMTOWNS, GAMEOPTION_EOB_HPGRAPHS)
|
||||
},
|
||||
EOB2_FMTOWNS_FLAGS
|
||||
},
|
||||
#endif // ENABLE_EOB
|
||||
|
||||
{ AD_TABLE_END_MARKER, FLAGS(0, 0, 0, 0, 0, 0, 0, 0, 0, 0) }
|
||||
|
@ -24,7 +24,7 @@
|
||||
|
||||
#include "kyra/kyra_rpg.h"
|
||||
#include "kyra/resource.h"
|
||||
#include "engines/kyra/sound.h"
|
||||
#include "engines/kyra/sound_intern.h"
|
||||
#include "engines/kyra/sound_adlib.h"
|
||||
#include "kyra/script_eob.h"
|
||||
#include "kyra/timer.h"
|
||||
@ -52,7 +52,7 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||
|
||||
_playFinale = false;
|
||||
_runFlag = true;
|
||||
_configMouse = true;
|
||||
_configMouse = _config2431 = true;
|
||||
_loading = false;
|
||||
|
||||
_enableHiResDithering = false;
|
||||
@ -195,7 +195,7 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||
_abortStrings = _saveLoadStrings = _mnWord = _mnPrompt = _bookNumbers = 0;
|
||||
_mageSpellList = _clericSpellList = _spellNames = _magicStrings1 = 0;
|
||||
_magicStrings2 = _magicStrings3 = _magicStrings4 = _magicStrings6 = 0;
|
||||
_magicStrings7 = _magicStrings8 = 0;
|
||||
_magicStrings7 = _magicStrings8 = _saveNamePatterns = 0;
|
||||
_spellAnimBuffer = 0;
|
||||
_sparkEffectDefSteps = _sparkEffectDefSubSteps = _sparkEffectDefShift = 0;
|
||||
_sparkEffectDefAdd = _sparkEffectDefX = _sparkEffectDefY = _sparkEffectOfShift = 0;
|
||||
@ -211,7 +211,7 @@ EoBCoreEngine::EoBCoreEngine(OSystem *system, const GameFlags &flags)
|
||||
_menuStringsScribe = _menuStringsDrop2 = _menuStringsHead = _menuStringsPoison = 0;
|
||||
_menuStringsMgc = _menuStringsPrefs = _menuStringsRest2 = _menuStringsRest3 = 0;
|
||||
_menuStringsRest4 = _menuStringsDefeat = _menuStringsTransfer = _menuStringsSpec = 0;
|
||||
_menuStringsSpellNo = _menuYesNoStrings = 0;
|
||||
_menuStringsSpellNo = _menuYesNoStrings = _2431Strings = _katakanaLines = _katakanaSelectStrings = 0;
|
||||
_errorSlotEmptyString = _errorSlotNoNameString = _menuOkString = 0;
|
||||
_spellLevelsMage = _spellLevelsCleric = _numSpellsCleric = _numSpellsWisAdj = _numSpellsPal = _numSpellsMage = 0;
|
||||
_mnNumWord = _numSpells = _mageSpellListSize = _spellLevelsMageSize = _spellLevelsClericSize = 0;
|
||||
@ -308,6 +308,7 @@ EoBCoreEngine::~EoBCoreEngine() {
|
||||
delete[] _spells;
|
||||
delete[] _spellAnimBuffer;
|
||||
delete[] _wallsOfForce;
|
||||
delete[] _buttonDefs;
|
||||
|
||||
delete _gui;
|
||||
_gui = 0;
|
||||
@ -385,14 +386,6 @@ Common::Error EoBCoreEngine::init() {
|
||||
assert(_screen);
|
||||
_screen->setResolution();
|
||||
|
||||
//MidiDriverType midiDriver = MidiDriver::detectDevice(MDT_PCSPK | MDT_ADLIB);
|
||||
_sound = new SoundAdLibPC(this, _mixer);
|
||||
assert(_sound);
|
||||
_sound->init();
|
||||
|
||||
// Setup volume settings (and read in all ConfigManager settings)
|
||||
syncSoundSettings();
|
||||
|
||||
_res = new Resource(this);
|
||||
assert(_res);
|
||||
_res->reset();
|
||||
@ -402,6 +395,22 @@ Common::Error EoBCoreEngine::init() {
|
||||
if (!_staticres->init())
|
||||
error("_staticres->init() failed");
|
||||
|
||||
// SoundTowns_Darkmoon requires initialized _staticres
|
||||
if (_flags.platform == Common::kPlatformDOS) {
|
||||
//MidiDriverType midiDriver = MidiDriver::detectDevice(MDT_PCSPK | MDT_ADLIB);
|
||||
_sound = new SoundAdLibPC(this, _mixer);
|
||||
} else if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
_sound = new SoundTowns_Darkmoon(this, _mixer);
|
||||
} else if (_flags.platform == Common::kPlatformPC98) {
|
||||
|
||||
}
|
||||
|
||||
assert(_sound);
|
||||
_sound->init();
|
||||
|
||||
// Setup volume settings (and read in all ConfigManager settings)
|
||||
syncSoundSettings();
|
||||
|
||||
if (!_screen->init())
|
||||
error("screen()->init() failed");
|
||||
|
||||
@ -453,13 +462,14 @@ Common::Error EoBCoreEngine::init() {
|
||||
memset(&_wllShapeMap[3], -1, 5);
|
||||
memset(&_wllShapeMap[13], -1, 5);
|
||||
|
||||
_wllVcnOffset = 16;
|
||||
_wllVcnOffset = (_flags.platform == Common::kPlatformFMTowns) ? 0 : 16;
|
||||
int bpp = (_flags.platform == Common::kPlatformFMTowns) ? 2 : 1;
|
||||
|
||||
_greenFadingTable = new uint8[256];
|
||||
_blueFadingTable = new uint8[256];
|
||||
_lightBlueFadingTable = new uint8[256];
|
||||
_blackFadingTable = new uint8[256];
|
||||
_greyFadingTable = new uint8[256];
|
||||
_greenFadingTable = new uint8[256 * bpp];
|
||||
_blueFadingTable = new uint8[256 * bpp];
|
||||
_lightBlueFadingTable = new uint8[256 * bpp];
|
||||
_blackFadingTable = new uint8[256 * bpp];
|
||||
_greyFadingTable = new uint8[256 * bpp];
|
||||
|
||||
_monsters = new EoBMonsterInPlay[30];
|
||||
memset(_monsters, 0, 30 * sizeof(EoBMonsterInPlay));
|
||||
@ -480,8 +490,9 @@ Common::Error EoBCoreEngine::init() {
|
||||
_flyingObjectsPtr = _flyingObjects;
|
||||
memset(_flyingObjects, 0, _numFlyingObjects * sizeof(EoBFlyingObject));
|
||||
|
||||
_spellAnimBuffer = new uint8[4096];
|
||||
memset(_spellAnimBuffer, 0, 4096);
|
||||
int bufferSize = _flags.useHiColorMode ? 8192 : 4096;
|
||||
_spellAnimBuffer = new uint8[bufferSize];
|
||||
memset(_spellAnimBuffer, 0, bufferSize);
|
||||
|
||||
_wallsOfForce = new WallOfForce[5];
|
||||
memset(_wallsOfForce, 0, 5 * sizeof(WallOfForce));
|
||||
@ -518,11 +529,8 @@ Common::Error EoBCoreEngine::init() {
|
||||
|
||||
Common::Error EoBCoreEngine::go() {
|
||||
_debugger->initialize();
|
||||
|
||||
_txt->removePageBreakFlag();
|
||||
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
|
||||
loadItemsAndDecorationsShapes();
|
||||
_screen->setMouseCursor(0, 0, _itemIconShapes[0]);
|
||||
|
||||
@ -540,6 +548,7 @@ Common::Error EoBCoreEngine::go() {
|
||||
action = 0;
|
||||
|
||||
if (_gameToLoad != -1) {
|
||||
_sound->selectAudioResourceSet(kMusicIngame);
|
||||
if (loadGameState(_gameToLoad).getCode() != Common::kNoError)
|
||||
error("Couldn't load game slot %d on startup", _gameToLoad);
|
||||
startupLoad();
|
||||
@ -549,6 +558,8 @@ Common::Error EoBCoreEngine::go() {
|
||||
action = mainMenu();
|
||||
}
|
||||
|
||||
_sound->selectAudioResourceSet(kMusicIngame);
|
||||
|
||||
if (action == -1) {
|
||||
// load game
|
||||
repeatLoop = _gui->runLoadMenu(72, 14);
|
||||
@ -573,6 +584,7 @@ Common::Error EoBCoreEngine::go() {
|
||||
if (_playFinale) {
|
||||
// make final save for party transfer
|
||||
saveGameStateIntern(-1, 0, 0);
|
||||
_sound->selectAudioResourceSet(kMusicFinale);
|
||||
seq_playFinale();
|
||||
}
|
||||
}
|
||||
@ -601,7 +613,7 @@ void EoBCoreEngine::writeSettings() {
|
||||
|
||||
if (_sound) {
|
||||
if (!_configSounds)
|
||||
_sound->beginFadeOut();
|
||||
_sound->haltTrack();
|
||||
_sound->enableMusic(_configSounds ? 1 : 0);
|
||||
_sound->enableSFX(_configSounds);
|
||||
}
|
||||
@ -683,54 +695,100 @@ bool EoBCoreEngine::checkPartyStatus(bool handleDeath) {
|
||||
|
||||
void EoBCoreEngine::loadItemsAndDecorationsShapes() {
|
||||
releaseItemsAndDecorationsShapes();
|
||||
|
||||
_screen->loadShapeSetBitmap("ITEML1", 5, 3);
|
||||
_largeItemShapes = new const uint8*[_numLargeItemShapes];
|
||||
int div = (_flags.gameID == GI_EOB1) ? 3 : 8;
|
||||
int mul = (_flags.gameID == GI_EOB1) ? 64 : 24;
|
||||
int size = 0;
|
||||
|
||||
_largeItemShapes = new const uint8*[_numLargeItemShapes];
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _flags.gameID == GI_EOB2) {
|
||||
for (int i = 0; i < _numLargeItemShapes; i++)
|
||||
_largeItemShapes[i] = _staticres->loadRawData(kEoB2LargeItemsShapeData00 + i, size);
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap("ITEML1", 5, 3);
|
||||
for (int i = 0; i < _numLargeItemShapes; i++)
|
||||
_largeItemShapes[i] = _screen->encodeShape((i / div) << 3, (i % div) * mul, 8, 24, false, _cgaMappingItemsL);
|
||||
}
|
||||
|
||||
_screen->loadShapeSetBitmap("ITEMS1", 5, 3);
|
||||
_smallItemShapes = new const uint8*[_numSmallItemShapes];
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _flags.gameID == GI_EOB2) {
|
||||
for (int i = 0; i < _numSmallItemShapes; i++)
|
||||
_smallItemShapes[i] = _staticres->loadRawData(kEoB2SmallItemsShapeData00 + i, size);
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap("ITEMS1", 5, 3);
|
||||
for (int i = 0; i < _numSmallItemShapes; i++)
|
||||
_smallItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24, false, _cgaMappingItemsS);
|
||||
}
|
||||
|
||||
_screen->loadShapeSetBitmap("THROWN", 5, 3);
|
||||
_thrownItemShapes = new const uint8*[_numThrownItemShapes];
|
||||
_spellShapes = new const uint8*[4];
|
||||
_firebeamShapes = new const uint8*[3];
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _flags.gameID == GI_EOB2) {
|
||||
for (int i = 0; i < _numThrownItemShapes; i++)
|
||||
_thrownItemShapes[i] = _staticres->loadRawData(kEoB2ThrownShapeData00 + i, size);
|
||||
for (int i = 0; i < 4; i++)
|
||||
_spellShapes[i] = _staticres->loadRawData(kEoB2SpellShapeData00 + i, size);
|
||||
for (int i = 0; i < 3; i++)
|
||||
_firebeamShapes[i] = _staticres->loadRawData(kEoB2FirebeamShapeData00 + i, size);
|
||||
_redSplatShape = _staticres->loadRawData(kEoB2RedSplatShapeData, size);
|
||||
_greenSplatShape = _staticres->loadRawData(kEoB2GreenSplatShapeData, size);
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap("THROWN", 5, 3);
|
||||
for (int i = 0; i < _numThrownItemShapes; i++)
|
||||
_thrownItemShapes[i] = _screen->encodeShape((i / div) << 2, (i % div) * mul, 4, 24, false, _cgaMappingThrown);
|
||||
|
||||
_spellShapes = new const uint8*[4];
|
||||
for (int i = 0; i < 4; i++)
|
||||
_spellShapes[i] = _screen->encodeShape(8, i << 5, 6, 32, false, _cgaMappingThrown);
|
||||
|
||||
_firebeamShapes = new const uint8*[3];
|
||||
_firebeamShapes[0] = _screen->encodeShape(16, 0, 4, 24, false, _cgaMappingThrown);
|
||||
_firebeamShapes[1] = _screen->encodeShape(16, 24, 4, 24, false, _cgaMappingThrown);
|
||||
_firebeamShapes[2] = _screen->encodeShape(16, 48, 3, 24, false, _cgaMappingThrown);
|
||||
_redSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 144 : 72, 5, 24, false, _cgaMappingThrown);
|
||||
_greenSplatShape = _screen->encodeShape(16, _flags.gameID == GI_EOB1 ? 168 : 96, 5, 16, false, _cgaMappingThrown);
|
||||
}
|
||||
|
||||
_screen->loadShapeSetBitmap("ITEMICN", 5, 3);
|
||||
_itemIconShapes = new const uint8*[_numItemIconShapes];
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _flags.gameID == GI_EOB2) {
|
||||
for (int i = 0; i < _numItemIconShapes; i++)
|
||||
_itemIconShapes[i] = _staticres->loadRawData(kEoB2ItemIconShapeData00 + i, size);
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap("ITEMICN", 5, 3);
|
||||
for (int i = 0; i < _numItemIconShapes; i++)
|
||||
_itemIconShapes[i] = _screen->encodeShape((i % 0x14) << 1, (i / 0x14) << 4, 2, 0x10, false, _cgaMappingIcons);
|
||||
}
|
||||
|
||||
_teleporterShapes = new const uint8*[6];
|
||||
_sparkShapes = new const uint8*[3];
|
||||
_compassShapes = new const uint8*[12];
|
||||
if (_flags.gameID == GI_EOB2)
|
||||
_wallOfForceShapes = new const uint8*[6];
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _flags.gameID == GI_EOB2) {
|
||||
_lightningColumnShape = _staticres->loadRawData(kEoB2LightningColumnShapeData, size);
|
||||
for (int i = 0; i < 6; i++)
|
||||
_wallOfForceShapes[i] = _staticres->loadRawData(kEoB2WallOfForceShapeData00 + i, size);
|
||||
for (int i = 0; i < 6; i++)
|
||||
_teleporterShapes[i] = _staticres->loadRawData(kEoB2TeleporterShapeData00 + i, size);
|
||||
for (int i = 0; i < 3; i++)
|
||||
_sparkShapes[i] = _staticres->loadRawData(kEoB2SparkShapeData00 + i, size);
|
||||
for (int i = 0; i < 12; i++)
|
||||
_compassShapes[i] = _staticres->loadRawData(kEoB2CompassShapeData00 + i, size);
|
||||
|
||||
_deadCharShape = _staticres->loadRawData(kEoB2DeadCharShapeData, size);
|
||||
_disabledCharGrid = _staticres->loadRawData(kEoB2DisabledCharGridShapeData, size);
|
||||
_blackBoxSmallGrid = _staticres->loadRawData(kEoB2SmallGridShapeData, size);
|
||||
_weaponSlotGrid = _staticres->loadRawData(kEoB2WeaponSlotGridShapeData, size);
|
||||
_blackBoxWideGrid = _staticres->loadRawData(kEoB2WideGridShapeData, size);
|
||||
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap("DECORATE", 5, 3);
|
||||
|
||||
if (_flags.gameID == GI_EOB2) {
|
||||
_lightningColumnShape = _screen->encodeShape(18, 88, 4, 64);
|
||||
_wallOfForceShapes = new const uint8*[6];
|
||||
for (int i = 0; i < 6; i++)
|
||||
_wallOfForceShapes[i] = _screen->encodeShape(_wallOfForceShapeDefs[(i << 2)], _wallOfForceShapeDefs[(i << 2) + 1], _wallOfForceShapeDefs[(i << 2) + 2], _wallOfForceShapeDefs[(i << 2) + 3]);
|
||||
}
|
||||
|
||||
_teleporterShapes = new const uint8*[6];
|
||||
for (int i = 0; i < 6; i++)
|
||||
_teleporterShapes[i] = _screen->encodeShape(_teleporterShapeDefs[(i << 2)], _teleporterShapeDefs[(i << 2) + 1], _teleporterShapeDefs[(i << 2) + 2], _teleporterShapeDefs[(i << 2) + 3], false, _cgaMappingDefault);
|
||||
_sparkShapes = new const uint8*[3];
|
||||
|
||||
_sparkShapes[0] = _screen->encodeShape(29, 0, 2, 16, false, _cgaMappingDeco);
|
||||
_sparkShapes[1] = _screen->encodeShape(31, 0, 2, 16, false, _cgaMappingDeco);
|
||||
_sparkShapes[2] = _screen->encodeShape(33, 0, 2, 16, false, _cgaMappingDeco);
|
||||
@ -743,20 +801,20 @@ void EoBCoreEngine::loadItemsAndDecorationsShapes() {
|
||||
static const uint8 dHeight[] = { 17, 10, 10 };
|
||||
static const uint8 dY[] = { 120, 137, 147 };
|
||||
|
||||
_compassShapes = new const uint8*[12];
|
||||
for (int y = 0; y < 3; y++) {
|
||||
for (int x = 0; x < 4; x++)
|
||||
_compassShapes[(y << 2) + x] = _screen->encodeShape(x * 3, dY[y], 3, dHeight[y], false, _cgaMappingDeco);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_flags.platform != Common::kPlatformFMTowns || _flags.gameID != GI_EOB2) {
|
||||
if (_largeItemShapes) {
|
||||
for (int i = 0; i < _numLargeItemShapes; i++) {
|
||||
if (_largeItemShapes[i])
|
||||
delete[] _largeItemShapes[i];
|
||||
}
|
||||
delete[] _largeItemShapes;
|
||||
}
|
||||
|
||||
if (_smallItemShapes) {
|
||||
@ -764,7 +822,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_smallItemShapes[i])
|
||||
delete[] _smallItemShapes[i];
|
||||
}
|
||||
delete[] _smallItemShapes;
|
||||
}
|
||||
|
||||
if (_thrownItemShapes) {
|
||||
@ -772,7 +829,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_thrownItemShapes[i])
|
||||
delete[] _thrownItemShapes[i];
|
||||
}
|
||||
delete[] _thrownItemShapes;
|
||||
}
|
||||
|
||||
if (_spellShapes) {
|
||||
@ -780,7 +836,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_spellShapes[i])
|
||||
delete[] _spellShapes[i];
|
||||
}
|
||||
delete[] _spellShapes;
|
||||
}
|
||||
|
||||
if (_itemIconShapes) {
|
||||
@ -788,7 +843,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_itemIconShapes[i])
|
||||
delete[] _itemIconShapes[i];
|
||||
}
|
||||
delete[] _itemIconShapes;
|
||||
}
|
||||
|
||||
if (_sparkShapes) {
|
||||
@ -796,7 +850,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_sparkShapes[i])
|
||||
delete[] _sparkShapes[i];
|
||||
}
|
||||
delete[] _sparkShapes;
|
||||
}
|
||||
|
||||
if (_wallOfForceShapes) {
|
||||
@ -804,7 +857,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_wallOfForceShapes[i])
|
||||
delete[] _wallOfForceShapes[i];
|
||||
}
|
||||
delete[] _wallOfForceShapes;
|
||||
}
|
||||
|
||||
if (_teleporterShapes) {
|
||||
@ -812,7 +864,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_teleporterShapes[i])
|
||||
delete[] _teleporterShapes[i];
|
||||
}
|
||||
delete[] _teleporterShapes;
|
||||
}
|
||||
|
||||
if (_compassShapes) {
|
||||
@ -820,7 +871,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_compassShapes[i])
|
||||
delete[] _compassShapes[i];
|
||||
}
|
||||
delete[] _compassShapes;
|
||||
}
|
||||
|
||||
if (_firebeamShapes) {
|
||||
@ -828,7 +878,6 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
if (_firebeamShapes[i])
|
||||
delete[] _firebeamShapes[i];
|
||||
}
|
||||
delete[] _firebeamShapes;
|
||||
}
|
||||
|
||||
delete[] _redSplatShape;
|
||||
@ -839,11 +888,26 @@ void EoBCoreEngine::releaseItemsAndDecorationsShapes() {
|
||||
delete[] _weaponSlotGrid;
|
||||
delete[] _blackBoxWideGrid;
|
||||
delete[] _lightningColumnShape;
|
||||
}
|
||||
|
||||
delete[] _largeItemShapes;
|
||||
delete[] _smallItemShapes;
|
||||
delete[] _thrownItemShapes;
|
||||
delete[] _spellShapes;
|
||||
delete[] _itemIconShapes;
|
||||
delete[] _sparkShapes;
|
||||
delete[] _wallOfForceShapes;
|
||||
delete[] _teleporterShapes;
|
||||
delete[] _compassShapes;
|
||||
delete[] _firebeamShapes;
|
||||
}
|
||||
|
||||
void EoBCoreEngine::setHandItem(Item itemIndex) {
|
||||
if (itemIndex == -1)
|
||||
if (itemIndex == -1) {
|
||||
if (_flags.platform == Common::kPlatformFMTowns)
|
||||
_screen->setMouseCursor(8, 8, _itemIconShapes[37], 0);
|
||||
return;
|
||||
}
|
||||
|
||||
if (_screen->curDimIndex() == 7 && itemIndex) {
|
||||
printFullItemName(itemIndex);
|
||||
@ -860,6 +924,11 @@ void EoBCoreEngine::setHandItem(Item itemIndex) {
|
||||
|
||||
int mouseOffs = itemIndex ? 8 : 0;
|
||||
_screen->setMouseCursor(mouseOffs, mouseOffs, shp, ovl);
|
||||
|
||||
if (_flags.useHiColorMode) {
|
||||
_screen->setFadeTable(_greyFadingTable);
|
||||
_screen->setShapeFadingLevel(0);
|
||||
}
|
||||
}
|
||||
|
||||
int EoBCoreEngine::getDexterityArmorClassModifier(int dexterity) {
|
||||
@ -1247,7 +1316,9 @@ int EoBCoreEngine::prepareForNewPartyMember(int16 itemType, int16 itemValue) {
|
||||
deletePartyItems(itemType, itemValue);
|
||||
} else {
|
||||
gui_drawDialogueBox();
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_txt->printDialogueText(_npcMaxStrings[0]);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
int r = runDialogue(-1, 7, _characters[0].name, _characters[1].name, _characters[2].name, _characters[3].name,
|
||||
_characters[4].name, _characters[5].name, _abortStrings[0]) - 1;
|
||||
|
||||
@ -1376,6 +1447,8 @@ void EoBCoreEngine::setupDialogueButtons(int presetfirst, int numStr, va_list &a
|
||||
_dialogueNumButtons = numStr;
|
||||
_dialogueHighlightedButton = 0;
|
||||
|
||||
Screen::FontId of = _screen->setFont((_flags.gameID == GI_EOB2 && _flags.platform == Common::kPlatformFMTowns) ? Screen::FID_8_FNT : _screen->_currentFont);
|
||||
|
||||
for (int i = 0; i < numStr; i++) {
|
||||
const char *s = va_arg(args, const char *);
|
||||
if (s)
|
||||
@ -1396,6 +1469,8 @@ void EoBCoreEngine::setupDialogueButtons(int presetfirst, int numStr, va_list &a
|
||||
|
||||
drawDialogueButtons();
|
||||
|
||||
_screen->setFont(of);
|
||||
|
||||
if (!shouldQuit())
|
||||
removeInputTop();
|
||||
}
|
||||
@ -1448,6 +1523,7 @@ void EoBCoreEngine::drawSequenceBitmap(const char *file, int destRect, int x1, i
|
||||
int page = ((flags & 2) || destRect) ? 0 : 6;
|
||||
|
||||
if (scumm_stricmp(_dialogueLastBitmap, file)) {
|
||||
_screen->clearPage(2);
|
||||
if (!destRect) {
|
||||
if (!(flags & 1)) {
|
||||
_screen->loadEoBBitmap("BORDER", 0, 3, 3, 2);
|
||||
@ -1622,7 +1698,9 @@ void EoBCoreEngine::displayParchment(int id) {
|
||||
// display text
|
||||
Common::SeekableReadStream *s = _res->createReadStream("TEXT.DAT");
|
||||
_screen->loadFileDataToPage(s, 5, 32000);
|
||||
_screen->set16bitShadingLevel(4);
|
||||
gui_drawBox(0, 0, 176, 175, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_txt->setupField(12, 1);
|
||||
if (_flags.gameID == GI_EOB2)
|
||||
id++;
|
||||
@ -1792,6 +1870,30 @@ bool EoBCoreEngine::checkPassword() {
|
||||
return true;
|
||||
}
|
||||
|
||||
Common::String EoBCoreEngine::convertAsciiToSjis(Common::String str) {
|
||||
if (_flags.platform != Common::kPlatformFMTowns)
|
||||
return str;
|
||||
|
||||
Common::String n;
|
||||
const char *src = str.c_str();
|
||||
int pos = 0;
|
||||
for (uint32 i = 0; i < str.size(); ++i) {
|
||||
if (src[i] & 0x80) {
|
||||
n.insertChar(src[i++], pos++);
|
||||
n.insertChar(src[i], pos++);
|
||||
} else if (src[i] >= 32 && src[i] <= 64) {
|
||||
n.insertChar(_ascii2SjisTables[1][(src[i] - 32) * 2], pos++);
|
||||
n.insertChar(_ascii2SjisTables[1][(src[i] - 32) * 2 + 1], pos++);
|
||||
} else if ((src[i] >= 97 && src[i] <= 122) || (src[i] >= 65 && src[i] <= 90)) {
|
||||
char c = (src[i] >= 97) ? src[i] - 97 : src[i] - 65;
|
||||
n.insertChar(_ascii2SjisTables2[0][c * 2], pos++);
|
||||
n.insertChar(_ascii2SjisTables2[0][c * 2 + 1], pos++);
|
||||
}
|
||||
}
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
void EoBCoreEngine::useSlotWeapon(int charIndex, int slotIndex, Item item) {
|
||||
EoBCharacter *c = &_characters[charIndex];
|
||||
int tp = item ? _items[item].type : 0;
|
||||
|
@ -77,7 +77,7 @@ struct EoBGuiButtonDef {
|
||||
struct EoBCharacter {
|
||||
uint8 id;
|
||||
uint8 flags;
|
||||
char name[11];
|
||||
char name[21];
|
||||
int8 strengthCur;
|
||||
int8 strengthMax;
|
||||
int8 strengthExtCur;
|
||||
@ -476,11 +476,15 @@ protected:
|
||||
const uint8 *_expObjectAnimTbl3;
|
||||
int _expObjectAnimTbl3Size;
|
||||
|
||||
const char *const *_ascii2SjisTables;
|
||||
const char *const *_ascii2SjisTables2;
|
||||
|
||||
// Monsters
|
||||
void loadMonsterShapes(const char *filename, int monsterIndex, bool hasDecorations, int encodeTableIndex);
|
||||
void releaseMonsterShapes(int first, int num);
|
||||
uint8 *loadTownsShape(Common::SeekableReadStream *stream);
|
||||
virtual void generateMonsterPalettes(const char *file, int16 monsterIndex) {}
|
||||
virtual void loadMonsterDecoration(const char *file, int16 monsterIndex) {}
|
||||
virtual void loadMonsterDecoration(Common::SeekableReadStream *stream, int16 monsterIndex) {}
|
||||
const uint8 *loadMonsterProperties(const uint8 *data);
|
||||
const uint8 *loadActiveMonsterData(const uint8 *data, int level);
|
||||
void initMonster(int index, int unit, uint16 block, int pos, int dir, int type, int shpIndex, int mode, int i, int randItem, int fixedItem);
|
||||
@ -632,7 +636,6 @@ protected:
|
||||
const uint8 *_dscItemTileIndex;
|
||||
const uint8 *_dscItemShapeMap;
|
||||
|
||||
const uint8 *_dscDoorScaleOffs;
|
||||
const uint8 *_dscDoorScaleMult1;
|
||||
const uint8 *_dscDoorScaleMult2;
|
||||
const uint8 *_dscDoorScaleMult3;
|
||||
@ -745,7 +748,7 @@ protected:
|
||||
static const uint8 _buttonList8[];
|
||||
int _buttonList8Size;
|
||||
|
||||
const EoBGuiButtonDef *_buttonDefs;
|
||||
EoBGuiButtonDef *_buttonDefs;
|
||||
|
||||
const char *const *_characterGuiStringsHp;
|
||||
const char *const *_characterGuiStringsWp;
|
||||
@ -832,6 +835,8 @@ protected:
|
||||
void seq_portal();
|
||||
bool checkPassword();
|
||||
|
||||
Common::String convertAsciiToSjis(Common::String str);
|
||||
|
||||
virtual int resurrectionSelectDialogue() = 0;
|
||||
virtual void useHorn(int charIndex, int weaponSlot) {}
|
||||
virtual bool checkPartyStatusExtra() = 0;
|
||||
@ -1120,6 +1125,7 @@ protected:
|
||||
const EoBMenuButtonDef *_menuButtonDefs;
|
||||
|
||||
bool _configMouse;
|
||||
bool _config2431;
|
||||
|
||||
const char *const *_menuStringsMain;
|
||||
const char *const *_menuStringsSaveLoad;
|
||||
@ -1142,12 +1148,15 @@ protected:
|
||||
const char *_errorSlotEmptyString;
|
||||
const char *_errorSlotNoNameString;
|
||||
const char *_menuOkString;
|
||||
|
||||
const char *const *_2431Strings;
|
||||
const char *const *_katakanaLines;
|
||||
const char *const *_katakanaSelectStrings;
|
||||
const char *const *_menuStringsTransfer;
|
||||
const char *const *_transferStringsScummVM;
|
||||
const char *const *_menuStringsSpec;
|
||||
const char *const *_menuStringsSpellNo;
|
||||
const char *const *_menuYesNoStrings;
|
||||
const char *const *_saveNamePatterns;
|
||||
|
||||
const uint8 *_spellLevelsMage;
|
||||
int _spellLevelsMageSize;
|
||||
|
@ -103,7 +103,7 @@ void EoBCoreEngine::gui_drawCharPortraitWithStats(int index) {
|
||||
if (index == _exchangeCharacterId)
|
||||
_screen->printText(_characterGuiStringsSt[0], x2 + 2, y2 + 2, 8, guiSettings()->colors.fill);
|
||||
else
|
||||
_screen->printText(c->name, x2 + 2, y2 + 2, txtCol1, guiSettings()->colors.fill);
|
||||
_screen->printText(c->name, x2 + 2, y2 + (_flags.platform == Common::kPlatformFMTowns ? 1 : 2), txtCol1, guiSettings()->colors.fill);
|
||||
|
||||
gui_drawFaceShape(index);
|
||||
gui_drawWeaponSlot(index, 0);
|
||||
@ -256,8 +256,10 @@ void EoBCoreEngine::gui_drawFaceShape(int index) {
|
||||
if (c->hitPointsCur < 1)
|
||||
_screen->drawShape(_screen->_curPage, _disabledCharGrid, x, y, 0);
|
||||
|
||||
if (c->flags & 8 || c->flags & 2 || c->effectFlags & 0x140) {
|
||||
_screen->setFadeTable(_greyFadingTable);
|
||||
_screen->setShapeFadingLevel(0);
|
||||
}
|
||||
}
|
||||
|
||||
void EoBCoreEngine::gui_drawWeaponSlot(int charIndex, int slot) {
|
||||
@ -527,8 +529,10 @@ void EoBCoreEngine::gui_drawCompass(bool force) {
|
||||
}
|
||||
|
||||
void EoBCoreEngine::gui_drawDialogueBox() {
|
||||
_screen->set16bitShadingLevel(4);
|
||||
gui_drawBox(0, 121, 320, 79, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
txt()->clearCurDim();
|
||||
_screen->set16bitShadingLevel(0);
|
||||
}
|
||||
|
||||
void EoBCoreEngine::gui_drawSpellbook() {
|
||||
@ -563,7 +567,9 @@ void EoBCoreEngine::gui_drawSpellbook() {
|
||||
gui_drawBox(i * 21 + 71, 122, 21, 9, col1, col2, col3);
|
||||
_screen->printText(_magicStrings7[i], i * 21 + 73, 123, 12, 0);
|
||||
} else {
|
||||
_screen->set16bitShadingLevel(4);
|
||||
gui_drawBox(i * 18 + 68, 121, 18, 9, col1, col2, col3);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->printText(Common::String::format("%d", i + 1).c_str(), i * 18 + 75, 123, 12, 0);
|
||||
}
|
||||
}
|
||||
@ -571,7 +577,9 @@ void EoBCoreEngine::gui_drawSpellbook() {
|
||||
if (_flags.gameID == GI_EOB1)
|
||||
gui_drawBox(71, 131, 105, 44, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
else {
|
||||
_screen->set16bitShadingLevel(4);
|
||||
gui_drawBox(68, 130, 108, 47, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
gui_drawBox(68, 168, 78, 9, guiSettings()->colors.extraFrame1, guiSettings()->colors.extraFrame2, guiSettings()->colors.extraFill);
|
||||
gui_drawBox(146, 168, 14, 9, guiSettings()->colors.extraFrame1, guiSettings()->colors.extraFrame2, guiSettings()->colors.extraFill);
|
||||
gui_drawBox(160, 168, 16, 9, guiSettings()->colors.extraFrame1, guiSettings()->colors.extraFrame2, guiSettings()->colors.extraFill);
|
||||
@ -600,6 +608,7 @@ void EoBCoreEngine::gui_drawSpellbook() {
|
||||
int d = _openBookAvailableSpells[_openBookSpellLevel * 10 + _openBookSpellListOffset + i];
|
||||
if (_openBookSpellSelectedItem == i) {
|
||||
if (d >= 0 && i < 6 && (i + _openBookSpellListOffset) < 9) {
|
||||
_screen->fillRect(textXs, 132 + 6 * i, textXs + _screen->getTextWidth(_openBookSpellList[d]) - 1, 137 + 6 * i, textCol2);
|
||||
_screen->printText(_openBookSpellList[d], textXs, 132 + 6 * i, textCol1, textCol2);
|
||||
} else if (i == 6) {
|
||||
if (_flags.gameID == GI_EOB2)
|
||||
@ -1073,6 +1082,7 @@ int EoBCoreEngine::clickedInventoryNextPage(Button *button) {
|
||||
int EoBCoreEngine::clickedPortraitRestore(Button *button) {
|
||||
_currentControlMode = 0;
|
||||
_screen->_curPage = 2;
|
||||
_screen->fillRect(0, 0, 143, 167, 0);
|
||||
_screen->copyRegion(0, 0, 0, 0, 144, 168, 5, _screen->_curPage, Screen::CR_NO_P_CHECK);
|
||||
gui_drawAllCharPortraitsWithStats();
|
||||
_screen->_curPage = 0;
|
||||
@ -1178,6 +1188,8 @@ int EoBCoreEngine::clickedSceneSpecial(Button *button) {
|
||||
|
||||
int EoBCoreEngine::clickedSpellbookAbort(Button *button) {
|
||||
_updateFlags = 0;
|
||||
_screen->fillRect(64, 121, 175, 176, 0, 0);
|
||||
_screen->fillRect(64, 121, 175, 176, 0, 2);
|
||||
_screen->copyRegion(0, 0, 64, 121, 112, 56, 10, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
gui_drawCompass(true);
|
||||
@ -1372,8 +1384,8 @@ GUI_EoB::GUI_EoB(EoBCoreEngine *vm) : GUI(vm), _vm(vm), _screen(vm->_screen) {
|
||||
|
||||
_saveSlotStringsTemp = new char*[6];
|
||||
for (int i = 0; i < 6; i++) {
|
||||
_saveSlotStringsTemp[i] = new char[20];
|
||||
memset(_saveSlotStringsTemp[i], 0, 20);
|
||||
_saveSlotStringsTemp[i] = new char[26];
|
||||
memset(_saveSlotStringsTemp[i], 0, 26);
|
||||
}
|
||||
_saveSlotIdTemp = new int16[6];
|
||||
_savegameOffset = 0;
|
||||
@ -2030,6 +2042,7 @@ void GUI_EoB::runCampMenu() {
|
||||
int newMenu = 0;
|
||||
int lastMenu = -1;
|
||||
bool redrawPortraits = false;
|
||||
bool keepButtons = false;
|
||||
|
||||
_charSelectRedraw = false;
|
||||
_needRest = false;
|
||||
@ -2040,6 +2053,7 @@ void GUI_EoB::runCampMenu() {
|
||||
updateOptionsStrings();
|
||||
|
||||
if (newMenu != -1) {
|
||||
if (!keepButtons) {
|
||||
releaseButtons(buttonList);
|
||||
|
||||
_vm->_menuDefs[0].titleStrId = newMenu ? 1 : 56;
|
||||
@ -2054,9 +2068,11 @@ void GUI_EoB::runCampMenu() {
|
||||
highlightButton = buttonList;
|
||||
prevHighlightButton = 0;
|
||||
}
|
||||
}
|
||||
|
||||
lastMenu = newMenu;
|
||||
newMenu = -1;
|
||||
keepButtons = false;
|
||||
}
|
||||
|
||||
int inputFlag = _vm->checkInput(buttonList, false, 0) & 0x80FF;
|
||||
@ -2089,6 +2105,8 @@ void GUI_EoB::runCampMenu() {
|
||||
if (prevHighlightButton) {
|
||||
int dir = (inputFlag == _vm->_keyMap[Common::KEYCODE_UP]) ? -1 : 1;
|
||||
int s = prevHighlightButton->index + dir;
|
||||
if (lastMenu == 2 && _vm->gameFlags().platform == Common::kPlatformFMTowns)
|
||||
s += 32;
|
||||
int a = _vm->_menuDefs[lastMenu].firstButtonStrId + 1;
|
||||
int b = a + _vm->_menuDefs[lastMenu].numButtons - 1;
|
||||
|
||||
@ -2102,10 +2120,12 @@ void GUI_EoB::runCampMenu() {
|
||||
s += dir;
|
||||
} while (!_vm->shouldQuit());
|
||||
|
||||
if (lastMenu == 2 && _vm->gameFlags().platform == Common::kPlatformFMTowns)
|
||||
s -= 32;
|
||||
highlightButton = _vm->gui_getButton(buttonList, s);
|
||||
}
|
||||
|
||||
} else if (inputFlag > 0x8000 && inputFlag < 0x8010) {
|
||||
} else if (inputFlag > 0x8000 && inputFlag < 0x8011) {
|
||||
int i = 0;
|
||||
int cnt = 0;
|
||||
|
||||
@ -2148,7 +2168,7 @@ void GUI_EoB::runCampMenu() {
|
||||
// fall through
|
||||
|
||||
case 0x800C:
|
||||
case 0x800F:
|
||||
case 0x8010:
|
||||
if (lastMenu == 1 || lastMenu == 2)
|
||||
newMenu = 0;
|
||||
else if (inputFlag == _vm->_keyMap[Common::KEYCODE_ESCAPE])
|
||||
@ -2199,13 +2219,24 @@ void GUI_EoB::runCampMenu() {
|
||||
case 0x800D:
|
||||
_vm->_configSounds ^= true;
|
||||
_vm->_configMusic = _vm->_configSounds ? 1 : 0;
|
||||
keepButtons = true;
|
||||
newMenu = 2;
|
||||
break;
|
||||
|
||||
case 0x800E:
|
||||
_vm->_configHpBarGraphs ^= true;
|
||||
newMenu = 2;
|
||||
redrawPortraits = true;
|
||||
redrawPortraits = keepButtons = true;
|
||||
break;
|
||||
|
||||
case 0x800F:
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
_vm->_config2431 ^= true;
|
||||
newMenu = 2;
|
||||
redrawPortraits = keepButtons = true;
|
||||
} else {
|
||||
newMenu = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -2233,7 +2264,7 @@ void GUI_EoB::runCampMenu() {
|
||||
|
||||
if (prevHighlightButton != highlightButton && newMenu == -1 && runLoop) {
|
||||
drawMenuButton(prevHighlightButton, false, false, true);
|
||||
drawMenuButton(highlightButton, false, true, true);
|
||||
drawMenuButton(highlightButton, false, true, false);
|
||||
_screen->updateScreen();
|
||||
prevHighlightButton = highlightButton;
|
||||
}
|
||||
@ -2322,7 +2353,7 @@ bool GUI_EoB::confirmDialogue2(int dim, int id, int deflt) {
|
||||
|
||||
if (newHighlight != lastHighlight) {
|
||||
for (int i = 0; i < 2; i++)
|
||||
_screen->printShadedText(_vm->_menuYesNoStrings[i], x[i] + 16 - (strlen(_vm->_menuYesNoStrings[i]) << 2) + 1, y + 3, i == newHighlight ? 6 : 15, 0);
|
||||
_screen->printShadedText(_vm->_menuYesNoStrings[i], x[i] + 16 - (_screen->getTextWidth(_vm->_menuYesNoStrings[i]) / 2) + 1, y + 3, i == newHighlight ? 6 : 15, 0);
|
||||
_screen->updateScreen();
|
||||
lastHighlight = newHighlight;
|
||||
}
|
||||
@ -2349,9 +2380,9 @@ void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
|
||||
drawTextBox(dim, id);
|
||||
const ScreenDim *dm = _screen->getScreenDim(dim);
|
||||
|
||||
int bx = ((dm->sx + dm->w) << 3) - ((strlen(_vm->_menuOkString) << 3) + 16);
|
||||
int bx = ((dm->sx + dm->w) << 3) - (_screen->getTextWidth(_vm->_menuOkString) + 16);
|
||||
int by = dm->sy + dm->h - 19;
|
||||
int bw = (strlen(_vm->_menuOkString) << 3) + 7;
|
||||
int bw = _screen->getTextWidth(_vm->_menuOkString) + 7;
|
||||
|
||||
drawMenuButtonBox(bx, by, bw, 14, false, false);
|
||||
_screen->printShadedText(_vm->_menuOkString, bx + 4, by + 3, buttonTextCol, 0);
|
||||
@ -2382,8 +2413,6 @@ void GUI_EoB::messageDialogue(int dim, int id, int buttonTextCol) {
|
||||
}
|
||||
|
||||
void GUI_EoB::messageDialogue2(int dim, int id, int buttonTextCol) {
|
||||
drawMenuButtonBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, false, false);
|
||||
|
||||
_screen->_curPage = 2;
|
||||
_screen->setClearScreenDim(dim);
|
||||
drawMenuButtonBox(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, false, false);
|
||||
@ -2391,9 +2420,9 @@ void GUI_EoB::messageDialogue2(int dim, int id, int buttonTextCol) {
|
||||
_screen->_curPage = 0;
|
||||
_screen->copyRegion(_screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->sx << 3, _screen->_curDim->sy, _screen->_curDim->w << 3, _screen->_curDim->h, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
|
||||
int x = (_screen->_curDim->sx << 3) + (_screen->_curDim->w << 2) - (strlen(_vm->_menuOkString) << 2);
|
||||
int x = (_screen->_curDim->sx << 3) + (_screen->_curDim->w << 2) - (_screen->getTextWidth(_vm->_menuOkString) / 2);
|
||||
int y = _screen->_curDim->sy + _screen->_curDim->h - 21;
|
||||
int w = (strlen(_vm->_menuOkString) << 3) + 8;
|
||||
int w = _screen->getTextWidth(_vm->_menuOkString) + 8;
|
||||
drawMenuButtonBox(x, y, w, 14, false, false);
|
||||
_screen->printShadedText(_vm->_menuOkString, x + 4, y + 3, buttonTextCol, 0);
|
||||
_screen->updateScreen();
|
||||
@ -2410,7 +2439,9 @@ void GUI_EoB::messageDialogue2(int dim, int id, int buttonTextCol) {
|
||||
}
|
||||
}
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_vm->gui_drawBox(x, y, w, 14, _vm->guiSettings()->colors.frame2, _vm->guiSettings()->colors.fill, -1);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->updateScreen();
|
||||
_vm->_system->delayMillis(80);
|
||||
drawMenuButtonBox(x, y, w, 14, false, false);
|
||||
@ -2456,7 +2487,7 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
#endif
|
||||
|
||||
uint8 cursorState = 1;
|
||||
char sufx[] = " ";
|
||||
char sufx[3] = " \0";
|
||||
|
||||
int len = strlen(dest);
|
||||
if (len > destMaxLen) {
|
||||
@ -2469,12 +2500,17 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
pos--;
|
||||
|
||||
_screen->copyRegion((x - 1) << 3, y, 0, 191, (destMaxLen + 2) << 3, 9, 0, 2, Screen::CR_NO_P_CHECK);
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
|
||||
_screen->copyRegion(0, 0, 160, 0, 160, 128, 2, 2, Screen::CR_NO_P_CHECK);
|
||||
_screen->printShadedText(dest, x << 3, y, textColor1, textColor2);
|
||||
|
||||
uint32 next = _vm->_system->getMillis() + 2 * _vm->_tickLength;
|
||||
sufx[0] = (pos < len) ? dest[pos] : 32;
|
||||
_screen->printText(sufx, (x + pos) << 3, y, textColor1, cursorColor);
|
||||
|
||||
_menuCur = -1;
|
||||
printKatakanaOptions(0);
|
||||
|
||||
int in = 0;
|
||||
|
||||
do {
|
||||
@ -2487,32 +2523,57 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
_screen->copyRegion((pos + 1) << 3, 191, (x + pos) << 3, y, 8, 9, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->printShadedText(sufx, (x + pos) << 3, y, textColor1, textColor2);
|
||||
} else {
|
||||
_screen->fillRect((x + pos) << 3, y, ((x + pos) << 3) + 7, y + 7, cursorColor);
|
||||
_screen->printText(sufx, (x + pos) << 3, y, textColor1, cursorColor);
|
||||
}
|
||||
|
||||
_screen->updateScreen();
|
||||
cursorState ^= 1;
|
||||
next = _vm->_system->getMillis() + 2 * _vm->_tickLength;
|
||||
next = _vm->_system->getMillis() + 4 * _vm->_tickLength;
|
||||
}
|
||||
|
||||
_vm->updateInput();
|
||||
in = checkKatakanaSelection();
|
||||
|
||||
for (Common::List<KyraEngine_v1::Event>::const_iterator evt = _vm->_eventList.begin(); evt != _vm->_eventList.end(); ++evt) {
|
||||
if (evt->event.type == Common::EVENT_KEYDOWN) {
|
||||
_keyPressed = evt->event.kbd;
|
||||
in = _keyPressed.ascii;
|
||||
|
||||
if (_vm->_flags.platform == Common::kPlatformFMTowns && _keyPressed.ascii > 31 && _keyPressed.ascii < 123) {
|
||||
Common::String s;
|
||||
s.insertChar(in & 0xff, 0);
|
||||
s = _vm->convertAsciiToSjis(s);
|
||||
if (s.empty()) {
|
||||
in = 0;
|
||||
} else {
|
||||
_csjis[0] = s[0];
|
||||
_csjis[1] = s[1];
|
||||
_csjis[2] = 0;
|
||||
in = 0x89;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
_vm->removeInputTop();
|
||||
}
|
||||
|
||||
if (_keyPressed.keycode == Common::KEYCODE_BACKSPACE) {
|
||||
if (pos >= len && len > 0) {
|
||||
dest[--len] = 0;
|
||||
pos--;
|
||||
|
||||
} else if (pos > 0) {
|
||||
for (int i = pos; i < destMaxLen; i++)
|
||||
if (pos > 0 && pos < len ) {
|
||||
for (int i = pos; i < len; i++) {
|
||||
if (dest[i * 2] & 0x80) {
|
||||
dest[(i - 1) * 2] = dest[i * 2];
|
||||
dest[(i - 1) * 2 + 1] = dest[i * 2 + 1];
|
||||
} else {
|
||||
dest[i - 1] = dest[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (pos > 0) {
|
||||
if (dest[(len - 1) * 2] & 0x80)
|
||||
dest[--len * 2] = 0;
|
||||
else
|
||||
dest[--len] = 0;
|
||||
pos--;
|
||||
}
|
||||
@ -2525,29 +2586,46 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
if (pos < len && pos < (destMaxLen - 1))
|
||||
pos++;
|
||||
|
||||
} else if (in > 31 && in < 126) {
|
||||
} else if ((in > 31 && in < 126) || (in == 0x89)) {
|
||||
if (!(in == 32 && pos == 0)) {
|
||||
if (in >= 97 && in <= 122)
|
||||
in -= 32;
|
||||
|
||||
if (pos < len) {
|
||||
for (int i = destMaxLen - 1; i >= pos; i--)
|
||||
for (int i = destMaxLen - 2; i >= pos; i--) {
|
||||
if (in == 0x89) {
|
||||
dest[(i + 1) * 2] = dest[i * 2];
|
||||
dest[(i + 1) * 2 + 1] = dest[i * 2 + 1];
|
||||
} else {
|
||||
dest[i + 1] = dest[i];
|
||||
}
|
||||
}
|
||||
|
||||
if (in == 0x89) {
|
||||
dest[pos * 2] = _csjis[0];
|
||||
dest[pos++ * 2 + 1] = _csjis[1];
|
||||
if (len == destMaxLen)
|
||||
dest[len * 2] = 0;
|
||||
} else {
|
||||
dest[pos++] = in;
|
||||
|
||||
if (len == destMaxLen)
|
||||
dest[len] = 0;
|
||||
|
||||
}
|
||||
} else {
|
||||
if (pos == destMaxLen) {
|
||||
pos--;
|
||||
len--;
|
||||
}
|
||||
|
||||
if (in == 0x89) {
|
||||
dest[pos * 2] = _csjis[0];
|
||||
dest[pos * 2 + 1] = _csjis[1];
|
||||
dest[++pos * 2] = 0;
|
||||
} else {
|
||||
dest[pos++] = in;
|
||||
dest[pos] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (++len > destMaxLen)
|
||||
len = destMaxLen;
|
||||
@ -2559,7 +2637,18 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
|
||||
_screen->copyRegion(0, 191, (x - 1) << 3, y, (destMaxLen + 2) << 3, 9, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->printShadedText(dest, x << 3, y, textColor1, textColor2);
|
||||
|
||||
if (_vm->_flags.platform == Common::kPlatformFMTowns) {
|
||||
if (pos < len) {
|
||||
sufx[0] = dest[pos * 2];
|
||||
sufx[1] = dest[pos * 2 + 1];
|
||||
} else {
|
||||
sufx[0] = 32;
|
||||
sufx[1] = 0;
|
||||
}
|
||||
} else {
|
||||
sufx[0] = (pos < len) ? dest[pos] : 32;
|
||||
}
|
||||
|
||||
if (cursorState)
|
||||
_screen->printText(sufx, (x + pos) << 3, y, textColor1, cursorColor);
|
||||
@ -2576,6 +2665,108 @@ int GUI_EoB::getTextInput(char *dest, int x, int y, int destMaxLen, int textColo
|
||||
return _keyPressed.keycode == Common::KEYCODE_ESCAPE ? -1 : len;
|
||||
}
|
||||
|
||||
int GUI_EoB::checkKatakanaSelection() {
|
||||
if (_vm->_flags.platform != Common::kPlatformFMTowns)
|
||||
return 0;
|
||||
|
||||
static uint16 kanaSelXCrds[] = { 224, 272, 186 };
|
||||
Common::Point mousePos = _vm->getMousePos();
|
||||
int highlight = -1;
|
||||
_csjis[0] = _csjis[2] = 0;
|
||||
|
||||
for (int y = 112; y < 168; y += 16) {
|
||||
for (int x = 152; x < 288; x += 8) {
|
||||
if (!_vm->posWithinRect(mousePos.x, mousePos.y, x, y, x + 9, y + 9))
|
||||
continue;
|
||||
|
||||
int lineOffs = (y - 112) >> 4;
|
||||
int column = (x - 152) >> 2;
|
||||
|
||||
_csjis[0] = _vm->_katakanaLines[_currentKanaPage * 4 + lineOffs][column];
|
||||
_csjis[1] = _vm->_katakanaLines[_currentKanaPage * 4 + lineOffs][column + 1];
|
||||
|
||||
if (_csjis[0] != '\x81' || _csjis[1] != '\x40') {
|
||||
highlight = lineOffs << 8 | column;
|
||||
_screen->printShadedText(_csjis, x & ~7, y & ~15, 6, 0);
|
||||
}
|
||||
|
||||
x = 288; y = 168;
|
||||
}
|
||||
}
|
||||
|
||||
if (highlight == -1) {
|
||||
for (int i = 0; i < 3; i++) {
|
||||
if (!_vm->posWithinRect(mousePos.x, mousePos.y, kanaSelXCrds[i], 176, kanaSelXCrds[i] + _screen->getTextWidth(_vm->_katakanaSelectStrings[i]), 184))
|
||||
continue;
|
||||
|
||||
highlight = 0x400 | i;
|
||||
_screen->printShadedText(_vm->_katakanaSelectStrings[i], kanaSelXCrds[i], 176, 6, 0);
|
||||
i = 3;
|
||||
}
|
||||
}
|
||||
|
||||
int in = 0;
|
||||
for (Common::List<KyraEngine_v1::Event>::const_iterator evt = _vm->_eventList.begin(); evt != _vm->_eventList.end(); ++evt) {
|
||||
if (evt->event.type == Common::EVENT_LBUTTONDOWN)
|
||||
in = 1;
|
||||
}
|
||||
|
||||
if ((highlight == -1 || highlight == _menuCur) && !in)
|
||||
return 0;
|
||||
|
||||
if (_menuCur != -1) {
|
||||
if (_menuCur & 0x400) {
|
||||
_screen->printShadedText(_vm->_katakanaSelectStrings[_menuCur & 3], kanaSelXCrds[_menuCur & 3], 176, 15, 0);
|
||||
} else {
|
||||
char osjis[3];
|
||||
osjis[0] = _vm->_katakanaLines[_currentKanaPage * 4 + (_menuCur >> 8)][_menuCur & 0xFF];
|
||||
osjis[1] = _vm->_katakanaLines[_currentKanaPage * 4 + (_menuCur >> 8)][(_menuCur & 0xFF) + 1];
|
||||
osjis[2] = 0;
|
||||
_screen->printShadedText(osjis, 152 + ((_menuCur & 0xFF) << 2), 112 + ((_menuCur >> 4) & ~0x0F), 15, 0);
|
||||
}
|
||||
}
|
||||
|
||||
_menuCur = highlight;
|
||||
|
||||
if (in && highlight != -1) {
|
||||
if (highlight & 0x400) {
|
||||
switch (highlight & 3) {
|
||||
case 0:
|
||||
printKatakanaOptions((_currentKanaPage + 1) % 3);
|
||||
break;
|
||||
case 1:
|
||||
_keyPressed.keycode = Common::KEYCODE_RETURN;
|
||||
break;
|
||||
case 2:
|
||||
_keyPressed.keycode = Common::KEYCODE_BACKSPACE;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
} else if (_csjis[0]) {
|
||||
if (_csjis[0] == '\x81' && _csjis[1] == '\x51')
|
||||
_csjis[1] = '\x40';
|
||||
return 0x89;
|
||||
}
|
||||
}
|
||||
|
||||
return in;
|
||||
}
|
||||
|
||||
void GUI_EoB::printKatakanaOptions(int page) {
|
||||
if (_vm->_flags.platform != Common::kPlatformFMTowns)
|
||||
return;
|
||||
|
||||
_currentKanaPage = page;
|
||||
_screen->copyRegion(160, 44, 144, 108, 160, 84, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
for (int i = 0; i < 4; i++)
|
||||
_screen->printShadedText(_vm->_katakanaLines[page * 4 + i], 152, (i << 4) + 112, 15, 0);
|
||||
|
||||
static uint16 kanaSelCrds[] = { 224, 272, 186 };
|
||||
for (int i = 0; i < 3; i++)
|
||||
_screen->printShadedText(_vm->_katakanaSelectStrings[i], kanaSelCrds[i], 176, 15, 0);
|
||||
}
|
||||
|
||||
void GUI_EoB::transferWaitBox() {
|
||||
const ScreenDim *dm = _screen->getScreenDim(11);
|
||||
int xo = dm->sx;
|
||||
@ -2698,10 +2889,21 @@ bool GUI_EoB::runSaveMenu(int x, int y) {
|
||||
|
||||
int fx = (x + 1) << 3;
|
||||
int fy = y + slot * 17 + 23;
|
||||
Screen::FontId of = _screen->_currentFont;
|
||||
_screen->set16bitShadingLevel(4);
|
||||
|
||||
for (int in = -1; in == -1 && !_vm->shouldQuit();) {
|
||||
_screen->fillRect(fx - 2, fy, fx + 160, fy + 8, _vm->guiSettings()->colors.fill);
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
TimeDate td;
|
||||
_vm->_system->getTimeAndDate(td);
|
||||
Common::strlcpy(_saveSlotStringsTemp[slot], Common::String::format(_vm->_saveNamePatterns[_vm->_currentLevel * 2 + _vm->_currentSub], td.tm_mon + 1, td.tm_mday, td.tm_hour, td.tm_min).c_str(), 25);
|
||||
in = strlen(_saveSlotStringsTemp[slot]);
|
||||
of = _vm->screen()->setFont(Screen::FID_6_FNT);
|
||||
y++;
|
||||
} else {
|
||||
in = getTextInput(_saveSlotStringsTemp[slot], x + 1, fy, 19, 2, 0, 8);
|
||||
}
|
||||
if (in == -1) {
|
||||
useSlot = false;
|
||||
break;
|
||||
@ -2719,6 +2921,9 @@ bool GUI_EoB::runSaveMenu(int x, int y) {
|
||||
|
||||
_screen->fillRect(fx - 2, fy, fx + 160, fy + 8, _vm->guiSettings()->colors.fill);
|
||||
_screen->printShadedText(_saveSlotStringsTemp[slot], (x + 1) << 3, fy, 15, 0);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->setFont(of);
|
||||
_screen->updateScreen();
|
||||
|
||||
Graphics::Surface thumb;
|
||||
createScreenThumbnail(thumb);
|
||||
@ -2831,7 +3036,9 @@ int GUI_EoB::selectSaveSlotDialogue(int x, int y, int id) {
|
||||
// Display highlighted slot index in the bottom left corner to avoid people getting lost with the 990 save slots
|
||||
_screen->setFont(Screen::FID_6_FNT);
|
||||
int sli = (newHighlight == 6) ? _savegameOffset : (_savegameOffset + newHighlight);
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_screen->printText(Common::String::format("%03d/989", sli).c_str(), _saveSlotX + 5, _saveSlotY + 135, _vm->guiSettings()->colors.frame2, _vm->guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
|
||||
_screen->updateScreen();
|
||||
@ -2990,7 +3197,9 @@ void GUI_EoB::runMemorizePrayMenu(int charIndex, int spellType) {
|
||||
|
||||
if (updateDesc) {
|
||||
updateDesc = false;
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_screen->printShadedText(Common::String::format(_vm->_menuStringsMgc[1], np[lastHighLightButton] - numAssignedSpellsPerBookPage[lastHighLightButton], np[lastHighLightButton]).c_str(), 8, 38, 9, _vm->guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
}
|
||||
|
||||
if (newHighLightText < 0)
|
||||
@ -3664,6 +3873,13 @@ int GUI_EoB::selectCharacterDialogue(int id) {
|
||||
|
||||
result = -2;
|
||||
int hlCur = -1;
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
if (found[i] != -1) {
|
||||
hlCur = i;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Screen::FontId of = _screen->setFont(Screen::FID_6_FNT);
|
||||
|
||||
while (result == -2 && !_vm->shouldQuit()) {
|
||||
@ -3788,6 +4004,8 @@ Button *GUI_EoB::initMenu(int id) {
|
||||
b->index = m->firstButtonStrId + i + 1;
|
||||
if (id == 4 && _vm->game() == GI_EOB1)
|
||||
b->index -= 14;
|
||||
else if (id == 2 && _vm->gameFlags().platform == Common::kPlatformFMTowns)
|
||||
b->index -= 32;
|
||||
|
||||
b->data0Val2 = 12;
|
||||
b->data1Val2 = b->data2Val2 = 15;
|
||||
@ -3830,7 +4048,7 @@ void GUI_EoB::drawMenuButton(Button *b, bool clicked, bool highlight, bool noFil
|
||||
int yOffs = 3;
|
||||
|
||||
if (d->flags & 4) {
|
||||
xOffs = ((b->width - (strlen(s) << 3)) >> 1) + 1;
|
||||
xOffs = ((b->width - _screen->getTextWidth(s)) >> 1) + 1;
|
||||
yOffs = (b->height - 7) >> 1;
|
||||
}
|
||||
|
||||
@ -3850,8 +4068,10 @@ void GUI_EoB::drawMenuButtonBox(int x, int y, int w, int h, bool clicked, bool n
|
||||
if (clicked)
|
||||
col1 = col2 = _vm->guiSettings()->colors.fill;
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_vm->gui_drawBox(x, y, w, h, col1, col2, -1);
|
||||
_vm->gui_drawBox(x + 1, y + 1, w - 2, h - 2, _vm->guiSettings()->colors.frame1, _vm->guiSettings()->colors.frame2, noFill ? -1 : _vm->guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
}
|
||||
|
||||
void GUI_EoB::drawTextBox(int dim, int id) {
|
||||
@ -3893,7 +4113,14 @@ void GUI_EoB::drawSaveSlotButton(int slot, int redrawBox, int textCol) {
|
||||
if (redrawBox)
|
||||
drawMenuButtonBox(x, y, w, 14, (redrawBox - 1) ? true : false, false);
|
||||
|
||||
Screen::FontId fnt = _screen->_currentFont;
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
fnt = _vm->screen()->setFont(Screen::FID_6_FNT);
|
||||
y++;
|
||||
}
|
||||
|
||||
_screen->printShadedText(s, x + 4, y + 3, textCol, 0);
|
||||
_vm->screen()->setFont(fnt);
|
||||
}
|
||||
|
||||
void GUI_EoB::memorizePrayMenuPrintString(int spellId, int bookPageIndex, int spellType, bool noFill, bool highLight) {
|
||||
@ -3902,17 +4129,28 @@ void GUI_EoB::memorizePrayMenuPrintString(int spellId, int bookPageIndex, int sp
|
||||
|
||||
int y = bookPageIndex * 9 + 50;
|
||||
int col1 = (_vm->_configRenderMode == Common::kRenderCGA) ? 1 : 15;
|
||||
_screen->set16bitShadingLevel(4);
|
||||
|
||||
if (spellId) {
|
||||
Common::String s(Common::String::format(_vm->_menuStringsMgc[0], spellType ? _vm->_clericSpellList[spellId] : _vm->_mageSpellList[spellId], _numAssignedSpellsOfType[spellId * 2 - 2]));
|
||||
Common::String s;
|
||||
if (_vm->_flags.platform == Common::kPlatformFMTowns) {
|
||||
s = spellType ? _vm->_clericSpellList[spellId] : _vm->_mageSpellList[spellId];
|
||||
for (int i = s.size() >> 1; i < 17; ++i)
|
||||
s.insertChar(' ', s.size());
|
||||
s.insertChar((char)(_numAssignedSpellsOfType[spellId * 2 - 2] + 48), s.size());
|
||||
} else {
|
||||
s = Common::String::format(_vm->_menuStringsMgc[0], spellType ? _vm->_clericSpellList[spellId] : _vm->_mageSpellList[spellId], _numAssignedSpellsOfType[spellId * 2 - 2]);
|
||||
}
|
||||
|
||||
if (noFill)
|
||||
_screen->printText(s.c_str(), 8, y, highLight ? 6 : col1, 0);
|
||||
else
|
||||
_screen->printShadedText(s.c_str(), 8, y, highLight ? 6 : col1, _vm->guiSettings()->colors.fill);
|
||||
|
||||
} else {
|
||||
_screen->fillRect(6, y, 168, y + 8, _vm->guiSettings()->colors.fill);
|
||||
}
|
||||
|
||||
_screen->set16bitShadingLevel(0);
|
||||
}
|
||||
|
||||
void GUI_EoB::updateOptionsStrings() {
|
||||
@ -3924,7 +4162,7 @@ void GUI_EoB::updateOptionsStrings() {
|
||||
Common::strlcpy(_menuStringsPrefsTemp[0], Common::String::format(_vm->_menuStringsPrefs[0], _vm->_menuStringsOnOff[_vm->_configMusic ? 0 : 1]).c_str(), strlen(_vm->_menuStringsPrefs[0]) + 8);
|
||||
Common::strlcpy(_menuStringsPrefsTemp[1], Common::String::format(_vm->_menuStringsPrefs[1], _vm->_menuStringsOnOff[_vm->_configSounds ? 0 : 1]).c_str(), strlen(_vm->_menuStringsPrefs[1]) + 8);
|
||||
Common::strlcpy(_menuStringsPrefsTemp[2], Common::String::format(_vm->_menuStringsPrefs[2], _vm->_menuStringsOnOff[_vm->_configHpBarGraphs ? 0 : 1]).c_str(), strlen(_vm->_menuStringsPrefs[2]) + 8);
|
||||
Common::strlcpy(_menuStringsPrefsTemp[3], Common::String::format(_vm->_menuStringsPrefs[3], _vm->_menuStringsOnOff[_vm->_configMouse ? 0 : 1]).c_str(), strlen(_vm->_menuStringsPrefs[3]) + 8);
|
||||
Common::strlcpy(_menuStringsPrefsTemp[3], Common::String::format(_vm->_menuStringsPrefs[3], _vm->gameFlags().platform == Common::kPlatformFMTowns ? _vm->_2431Strings[_vm->_config2431 ? 0 : 1] : _vm->_menuStringsOnOff[_vm->_configMouse ? 0 : 1]).c_str(), strlen(_vm->_menuStringsPrefs[3]) + 8);
|
||||
}
|
||||
|
||||
const char *GUI_EoB::getMenuString(int id) {
|
||||
@ -4010,12 +4248,12 @@ void GUI_EoB::setupSaveMenuSlots() {
|
||||
for (int i = 0; i < 6; ++i) {
|
||||
if (_savegameOffset + i < _savegameListSize) {
|
||||
if (_savegameList[i + _savegameOffset]) {
|
||||
Common::strlcpy(_saveSlotStringsTemp[i], _savegameList[i + _savegameOffset], 20);
|
||||
Common::strlcpy(_saveSlotStringsTemp[i], _savegameList[i + _savegameOffset], 25);
|
||||
_saveSlotIdTemp[i] = i + _savegameOffset;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Common::strlcpy(_saveSlotStringsTemp[i], _vm->_saveLoadStrings[1], 20);
|
||||
Common::strlcpy(_saveSlotStringsTemp[i], _vm->_saveLoadStrings[1], 25);
|
||||
_saveSlotIdTemp[i] = -1;
|
||||
}
|
||||
}
|
||||
@ -4055,14 +4293,13 @@ void GUI_EoB::restParty_updateRestTime(int hours, bool init) {
|
||||
_screen->printShadedText(getMenuString(42), (_screen->_curDim->sx + 1) << 3, _screen->_curDim->sy + 5, 9, 0);
|
||||
}
|
||||
|
||||
_screen->setCurPage(2);
|
||||
_screen->printShadedText(Common::String::format(_vm->_menuStringsRest2[3], hours).c_str(), (_screen->_curDim->sx + 1) << 3, _screen->_curDim->sy + 20, 15, _vm->guiSettings()->colors.fill);
|
||||
_screen->setCurPage(0);
|
||||
_screen->copyRegion(((_screen->_curDim->sx + 1) << 3) - 1, _screen->_curDim->sy + 20, ((_screen->_curDim->sx + 1) << 3) - 1, _screen->_curDim->sy + 20, 144, 8, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_screen->fillRect((_screen->_curDim->sx + 1) << 3, _screen->_curDim->sy + 20, ((_screen->_curDim->sx + 19) << 3) + 1, _screen->_curDim->sy + 29, _vm->guiSettings()->colors.fill);
|
||||
_screen->printShadedText(Common::String::format(_vm->_menuStringsRest2[3], hours).c_str(), (_screen->_curDim->sx + 1) << 3, _screen->_curDim->sy + 20, 15, _vm->guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->updateScreen();
|
||||
|
||||
_vm->delay(160);
|
||||
|
||||
_screen->setScreenDim(od);
|
||||
_screen->setFont(of);
|
||||
}
|
||||
|
@ -154,6 +154,13 @@ private:
|
||||
static const EoBRect16 _highlightFrames[];
|
||||
static const uint8 _highlightColorTableVGA[];
|
||||
static const uint8 _highlightColorTableEGA[];
|
||||
|
||||
// FM-Towns specific
|
||||
int checkKatakanaSelection();
|
||||
void printKatakanaOptions(int page);
|
||||
|
||||
int _currentKanaPage;
|
||||
char _csjis[3];
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
@ -444,7 +444,7 @@ void EoBCoreEngine::printFullItemName(Item item) {
|
||||
tmpString = (itm->flags & 0x40) ? nameId : nameUnid;
|
||||
}
|
||||
|
||||
_txt->printMessage(tmpString.c_str());
|
||||
_txt->printMessage(convertAsciiToSjis(tmpString).c_str());
|
||||
}
|
||||
|
||||
void EoBCoreEngine::identifyQueuedItems(Item itemQueue) {
|
||||
|
@ -46,6 +46,7 @@ KyraRpgEngine::KyraRpgEngine(OSystem *system, const GameFlags &flags) : KyraEngi
|
||||
_vcnTransitionMask = 0;
|
||||
_vcnShift = 0;
|
||||
_vcnColTable = 0;
|
||||
_vcnBpp = flags.useHiColorMode ? 2 : 1;
|
||||
_vmpPtr = 0;
|
||||
_blockBrightness = _wllVcnOffset = 0;
|
||||
_blockDrawingBuffer = 0;
|
||||
@ -84,7 +85,7 @@ KyraRpgEngine::KyraRpgEngine(OSystem *system, const GameFlags &flags) : KyraEngi
|
||||
|
||||
_dscShapeX = 0;
|
||||
_dscTileIndex = 0;
|
||||
_dscUnk2 = 0;
|
||||
_dscDoorScaleOffs = 0;
|
||||
_dscDim1 = 0;
|
||||
_dscDim2 = 0;
|
||||
_dscBlockMap = 0;
|
||||
@ -168,8 +169,9 @@ Common::Error KyraRpgEngine::init() {
|
||||
|
||||
_blockDrawingBuffer = new uint16[1320];
|
||||
memset(_blockDrawingBuffer, 0, 1320 * sizeof(uint16));
|
||||
_sceneWindowBuffer = new uint8[21120];
|
||||
memset(_sceneWindowBuffer, 0, 21120);
|
||||
int windowBufferSize = _flags.useHiColorMode ? 42240 : 21120;
|
||||
_sceneWindowBuffer = new uint8[windowBufferSize];
|
||||
memset(_sceneWindowBuffer, 0, windowBufferSize);
|
||||
|
||||
_lvlShapeTop = new int16[18];
|
||||
memset(_lvlShapeTop, 0, 18 * sizeof(int16));
|
||||
@ -187,7 +189,7 @@ Common::Error KyraRpgEngine::init() {
|
||||
|
||||
initStaticResource();
|
||||
|
||||
_envSfxDistThreshold = (_sound->getSfxType() == Sound::kAdLib || _sound->getSfxType() == Sound::kPCSpkr) ? 15 : 3;
|
||||
_envSfxDistThreshold = (_flags.gameID == GI_EOB2 || _sound->getSfxType() == Sound::kAdLib || _sound->getSfxType() == Sound::kPCSpkr) ? 15 : 3;
|
||||
|
||||
_dialogueButtonLabelColor1 = guiSettings()->buttons.labelColor1;
|
||||
_dialogueButtonLabelColor2 = guiSettings()->buttons.labelColor2;
|
||||
@ -204,7 +206,7 @@ bool KyraRpgEngine::posWithinRect(int posX, int posY, int x1, int y1, int x2, in
|
||||
|
||||
void KyraRpgEngine::drawDialogueButtons() {
|
||||
int cp = screen()->setCurPage(0);
|
||||
Screen::FontId of = screen()->setFont(_flags.lang == Common::JA_JPN && _flags.use16ColorMode ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT);
|
||||
Screen::FontId of = screen()->setFont((_flags.lang == Common::JA_JPN && _flags.use16ColorMode) ? Screen::FID_SJIS_FNT : ((_flags.gameID == GI_EOB2 && _flags.platform == Common::kPlatformFMTowns) ? Screen::FID_8_FNT : Screen::FID_6_FNT));
|
||||
|
||||
for (int i = 0; i < _dialogueNumButtons; i++) {
|
||||
int x = _dialogueButtonPosX[i];
|
||||
@ -213,8 +215,10 @@ void KyraRpgEngine::drawDialogueButtons() {
|
||||
screen()->printText(_dialogueButtonString[i], (x + 37 - (screen()->getTextWidth(_dialogueButtonString[i])) / 2) & ~3,
|
||||
((_dialogueButtonYoffs + _dialogueButtonPosY[i]) + 2) & ~7, _dialogueHighlightedButton == i ? 0xC1 : 0xE1, 0);
|
||||
} else {
|
||||
int sjisYOffset = (_flags.lang == Common::JA_JPN && (_dialogueButtonString[i][0] & 0x80)) ? 2 : 0;
|
||||
int sjisYOffset = (_flags.gameID == GI_EOB2 && _flags.platform == Common::kPlatformFMTowns) ? 1 : ((_flags.lang == Common::JA_JPN && (_dialogueButtonString[i][0] & 0x80)) ? 2 : 0);
|
||||
screen()->set16bitShadingLevel(4);
|
||||
gui_drawBox(x, (_dialogueButtonYoffs + _dialogueButtonPosY[i]), _dialogueButtonWidth, guiSettings()->buttons.height, guiSettings()->colors.frame1, guiSettings()->colors.frame2, guiSettings()->colors.fill);
|
||||
screen()->set16bitShadingLevel(0);
|
||||
screen()->printText(_dialogueButtonString[i], x + (_dialogueButtonWidth >> 1) - (screen()->getTextWidth(_dialogueButtonString[i])) / 2,
|
||||
(_dialogueButtonYoffs + _dialogueButtonPosY[i]) + 2 - sjisYOffset, _dialogueHighlightedButton == i ? _dialogueButtonLabelColor1 : _dialogueButtonLabelColor2, 0);
|
||||
}
|
||||
@ -348,7 +352,7 @@ bool KyraRpgEngine::snd_processEnvironmentalSoundEffect(int soundId, int block)
|
||||
}
|
||||
|
||||
_environmentSfx = soundId;
|
||||
_environmentSfxVol = (15 - ((block || (_flags.gameID == GI_LOL && dist < 2)) ? dist : 0)) << 4;
|
||||
_environmentSfxVol = (_flags.gameID == GI_EOB2 && _flags.platform == Common::kPlatformFMTowns) ? (dist ? (16 - dist) * 8 - 1 : 127) : ((15 - ((block || (_flags.gameID == GI_LOL && dist < 2)) ? dist : 0)) << 4);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -227,6 +227,7 @@ protected:
|
||||
uint8 *_vcnTransitionMask;
|
||||
uint8 *_vcnShift;
|
||||
uint8 *_vcnColTable;
|
||||
uint8 _vcnBpp;
|
||||
uint16 *_blockDrawingBuffer;
|
||||
uint8 *_sceneWindowBuffer;
|
||||
uint8 _blockBrightness;
|
||||
@ -263,7 +264,7 @@ protected:
|
||||
const int8 *_dscDim1;
|
||||
const int8 *_dscDim2;
|
||||
const int16 *_dscShapeX;
|
||||
const uint8 *_dscUnk2;
|
||||
const uint8 *_dscDoorScaleOffs;
|
||||
const uint8 *_dscBlockMap;
|
||||
const int8 *_dscBlockIndex;
|
||||
const uint8 *_dscTileIndex;
|
||||
|
@ -378,21 +378,21 @@ void KyraEngine_v1::setupKeyMap() {
|
||||
{ KC(KP1), 93, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(PAGEDOWN), 103, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(KP3), 103, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(F1), 112, 99, UNKNOWN_KEYCODE },
|
||||
{ KC(F2), 113, 100, UNKNOWN_KEYCODE },
|
||||
{ KC(F3), 114, 101, UNKNOWN_KEYCODE },
|
||||
{ KC(F4), 115, 102, UNKNOWN_KEYCODE },
|
||||
{ KC(F5), 116, 103, UNKNOWN_KEYCODE },
|
||||
{ KC(F6), 117, 104, UNKNOWN_KEYCODE },
|
||||
{ KC(F1), 112, 99, 93 },
|
||||
{ KC(F2), 113, 100, 94 },
|
||||
{ KC(F3), 114, 101, 95 },
|
||||
{ KC(F4), 115, 102, 96 },
|
||||
{ KC(F5), 116, 103, 97 },
|
||||
{ KC(F6), 117, 104, 98 },
|
||||
{ KC(a), 31, 31, UNKNOWN_KEYCODE },
|
||||
{ KC(b), 50, 50, UNKNOWN_KEYCODE },
|
||||
{ KC(b), 50, 50, 66 },
|
||||
{ KC(c), 48, 48, 67 },
|
||||
{ KC(d), 33, 33, UNKNOWN_KEYCODE },
|
||||
{ KC(d), 33, 33, 68 },
|
||||
{ KC(e), 19, 19, UNKNOWN_KEYCODE },
|
||||
{ KC(f), 34, 34, UNKNOWN_KEYCODE },
|
||||
{ KC(i), 24, 24, UNKNOWN_KEYCODE },
|
||||
{ KC(k), 38, 38, UNKNOWN_KEYCODE },
|
||||
{ KC(m), 52, 52, UNKNOWN_KEYCODE },
|
||||
{ KC(f), 34, 34, 70 },
|
||||
{ KC(i), 24, 24, 24 },
|
||||
{ KC(k), 38, 38, 75 },
|
||||
{ KC(m), 52, 52, 77 },
|
||||
{ KC(n), 51, 51, UNKNOWN_KEYCODE },
|
||||
{ KC(o), 25, 25, 79 },
|
||||
{ KC(p), 26, 26, 80 },
|
||||
@ -411,22 +411,22 @@ void KyraEngine_v1::setupKeyMap() {
|
||||
{ KC(7), 8, UNKNOWN_KEYCODE, 55 },
|
||||
{ KC(SLASH), 55, 55, 47 },
|
||||
{ KC(ESCAPE), 110, 1, 27 },
|
||||
{ KC(MINUS), 12, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(KP_MINUS), 105, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(PLUS), 13, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(KP_PLUS), 106, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(MINUS), 12, UNKNOWN_KEYCODE, 45 },
|
||||
{ KC(KP_MINUS), 105, UNKNOWN_KEYCODE, 45 },
|
||||
{ KC(PLUS), 13, UNKNOWN_KEYCODE, 43 },
|
||||
{ KC(KP_PLUS), 106, UNKNOWN_KEYCODE, 43 },
|
||||
|
||||
// Multiple mappings for the keys to the right of the 'M' key,
|
||||
// since these are different for QWERTZ, QWERTY and AZERTY keyboards.
|
||||
// QWERTZ
|
||||
{ KC(COMMA), 53, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(PERIOD), 54, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(COMMA), 53, UNKNOWN_KEYCODE, 60 },
|
||||
{ KC(PERIOD), 54, UNKNOWN_KEYCODE, 62 },
|
||||
// AZERTY
|
||||
{ KC(SEMICOLON), 53, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(COLON), 54, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(SEMICOLON), 53, UNKNOWN_KEYCODE, 60 },
|
||||
{ KC(COLON), 54, UNKNOWN_KEYCODE, 62 },
|
||||
// QWERTY
|
||||
{ KC(LESS), 53, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE },
|
||||
{ KC(GREATER), 54, UNKNOWN_KEYCODE, UNKNOWN_KEYCODE }
|
||||
{ KC(LESS), 53, UNKNOWN_KEYCODE, 60 },
|
||||
{ KC(GREATER), 54, UNKNOWN_KEYCODE, 62 }
|
||||
};
|
||||
#undef KC
|
||||
#undef UNKNOWN_KEYCODE
|
||||
|
@ -420,14 +420,14 @@ void EoBCoreEngine::sparkEffectDefensive(int charIndex) {
|
||||
void EoBCoreEngine::sparkEffectOffensive() {
|
||||
disableSysTimer(2);
|
||||
_screen->copyRegion(0, 0, 0, 0, 176, 120, 0, 2, Screen::CR_NO_P_CHECK);
|
||||
int sh = _flags.useHiColorMode ? 9 : 8;
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
_screen->copyRegionToBuffer(0, _sparkEffectOfX[i], _sparkEffectOfY[i], 16, 16, &_spellAnimBuffer[i << 8]);
|
||||
_screen->updateScreen();
|
||||
_screen->copyRegionToBuffer(0, _sparkEffectOfX[i], _sparkEffectOfY[i], 16, 16, &_spellAnimBuffer[i << sh]);
|
||||
|
||||
for (int i = 0; i < 11; i++) {
|
||||
for (int ii = 0; ii < 16; ii++)
|
||||
_screen->copyBlockToPage(2, _sparkEffectOfX[ii], _sparkEffectOfY[ii], 16, 16, &_spellAnimBuffer[ii << 8]);
|
||||
_screen->copyBlockToPage(2, _sparkEffectOfX[ii], _sparkEffectOfY[ii], 16, 16, &_spellAnimBuffer[ii << sh]);
|
||||
|
||||
for (int ii = 0; ii < 16; ii++) {
|
||||
int shpIndex = (_sparkEffectOfFlags1[i] & _sparkEffectOfFlags2[ii]) >> _sparkEffectOfShift[ii];
|
||||
@ -440,7 +440,7 @@ void EoBCoreEngine::sparkEffectOffensive() {
|
||||
}
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
_screen->copyBlockToPage(0, _sparkEffectOfX[i], _sparkEffectOfY[i], 16, 16, &_spellAnimBuffer[i << 8]);
|
||||
_screen->copyBlockToPage(0, _sparkEffectOfX[i], _sparkEffectOfY[i], 16, 16, &_spellAnimBuffer[i << sh]);
|
||||
|
||||
_screen->updateScreen();
|
||||
enableSysTimer(2);
|
||||
|
@ -120,6 +120,7 @@ MODULE_OBJS += \
|
||||
script_eob.o \
|
||||
sequences_eob.o \
|
||||
sequences_darkmoon.o \
|
||||
sound_towns_darkmoon.o \
|
||||
sprites_eob.o \
|
||||
staticres_eob.o \
|
||||
timer_eob.o
|
||||
|
@ -255,7 +255,6 @@ enum KyraResources {
|
||||
kRpgCommonDscShapeIndex,
|
||||
kRpgCommonDscX,
|
||||
kRpgCommonDscTileIndex,
|
||||
kRpgCommonDscUnk2,
|
||||
kRpgCommonDscDoorShapeIndex,
|
||||
kRpgCommonDscDimData1,
|
||||
kRpgCommonDscDimData2,
|
||||
@ -266,6 +265,7 @@ enum KyraResources {
|
||||
kRpgCommonDscDoorFrameY2,
|
||||
kRpgCommonDscDoorFrameIndex1,
|
||||
kRpgCommonDscDoorFrameIndex2,
|
||||
kRpgCommonDscDoorScaleOffs,
|
||||
kRpgCommonDscBlockIndex,
|
||||
|
||||
kEoBBaseChargenStrings1,
|
||||
@ -400,7 +400,6 @@ enum KyraResources {
|
||||
kEoBBaseWllFlagPreset,
|
||||
kEoBBaseDscShapeCoords,
|
||||
|
||||
kEoBBaseDscDoorScaleOffs,
|
||||
kEoBBaseDscDoorScaleMult1,
|
||||
kEoBBaseDscDoorScaleMult2,
|
||||
kEoBBaseDscDoorScaleMult3,
|
||||
@ -554,6 +553,7 @@ enum KyraResources {
|
||||
kEoB1Npc7Strings,
|
||||
|
||||
kEoB2MainMenuStrings,
|
||||
kEoB2MainMenuUtilStrings,
|
||||
|
||||
kEoB2TransferPortraitFrames,
|
||||
kEoB2TransferConvertTable,
|
||||
@ -609,6 +609,7 @@ enum KyraResources {
|
||||
kEoB2IntroAnimData41,
|
||||
kEoB2IntroAnimData42,
|
||||
kEoB2IntroAnimData43,
|
||||
|
||||
kEoB2IntroShapes00,
|
||||
kEoB2IntroShapes01,
|
||||
kEoB2IntroShapes04,
|
||||
@ -660,6 +661,257 @@ enum KyraResources {
|
||||
kEoB2WallOfForceNumH,
|
||||
kEoB2WallOfForceShpId,
|
||||
|
||||
kEoB2IntroCpsDataStreet1,
|
||||
kEoB2IntroCpsDataStreet2,
|
||||
kEoB2IntroCpsDataDoorway1,
|
||||
kEoB2IntroCpsDataDoorway2,
|
||||
kEoB2IntroCpsDataWestwood,
|
||||
kEoB2IntroCpsDataWinding,
|
||||
kEoB2IntroCpsDataKhelban2,
|
||||
kEoB2IntroCpsDataKhelban1,
|
||||
kEoB2IntroCpsDataKhelban3,
|
||||
kEoB2IntroCpsDataKhelban4,
|
||||
kEoB2IntroCpsDataCoin,
|
||||
kEoB2IntroCpsDataKhelban5,
|
||||
kEoB2IntroCpsDataKhelban6,
|
||||
|
||||
kEoB2FinaleCpsDataDragon1,
|
||||
kEoB2FinaleCpsDataDragon2,
|
||||
kEoB2FinaleCpsDataHurry1,
|
||||
kEoB2FinaleCpsDataHurry2,
|
||||
kEoB2FinaleCpsDataDestroy0,
|
||||
kEoB2FinaleCpsDataDestroy1,
|
||||
kEoB2FinaleCpsDataDestroy2,
|
||||
kEoB2FinaleCpsDataMagic,
|
||||
kEoB2FinaleCpsDataDestroy3,
|
||||
kEoB2FinaleCpsDataCredits2,
|
||||
kEoB2FinaleCpsDataCredits3,
|
||||
kEoB2FinaleCpsDataHeroes,
|
||||
kEoB2FinaleCpsDataThanks,
|
||||
|
||||
kEoB2ItemIconShapeData00,
|
||||
kEoB2ItemIconShapeData01,
|
||||
kEoB2ItemIconShapeData02,
|
||||
kEoB2ItemIconShapeData03,
|
||||
kEoB2ItemIconShapeData04,
|
||||
kEoB2ItemIconShapeData05,
|
||||
kEoB2ItemIconShapeData06,
|
||||
kEoB2ItemIconShapeData07,
|
||||
kEoB2ItemIconShapeData08,
|
||||
kEoB2ItemIconShapeData09,
|
||||
kEoB2ItemIconShapeData10,
|
||||
kEoB2ItemIconShapeData11,
|
||||
kEoB2ItemIconShapeData12,
|
||||
kEoB2ItemIconShapeData13,
|
||||
kEoB2ItemIconShapeData14,
|
||||
kEoB2ItemIconShapeData15,
|
||||
kEoB2ItemIconShapeData16,
|
||||
kEoB2ItemIconShapeData17,
|
||||
kEoB2ItemIconShapeData18,
|
||||
kEoB2ItemIconShapeData19,
|
||||
kEoB2ItemIconShapeData20,
|
||||
kEoB2ItemIconShapeData21,
|
||||
kEoB2ItemIconShapeData22,
|
||||
kEoB2ItemIconShapeData23,
|
||||
kEoB2ItemIconShapeData24,
|
||||
kEoB2ItemIconShapeData25,
|
||||
kEoB2ItemIconShapeData26,
|
||||
kEoB2ItemIconShapeData27,
|
||||
kEoB2ItemIconShapeData28,
|
||||
kEoB2ItemIconShapeData29,
|
||||
kEoB2ItemIconShapeData30,
|
||||
kEoB2ItemIconShapeData31,
|
||||
kEoB2ItemIconShapeData32,
|
||||
kEoB2ItemIconShapeData33,
|
||||
kEoB2ItemIconShapeData34,
|
||||
kEoB2ItemIconShapeData35,
|
||||
kEoB2ItemIconShapeData36,
|
||||
kEoB2ItemIconShapeData37,
|
||||
kEoB2ItemIconShapeData38,
|
||||
kEoB2ItemIconShapeData39,
|
||||
kEoB2ItemIconShapeData40,
|
||||
kEoB2ItemIconShapeData41,
|
||||
kEoB2ItemIconShapeData42,
|
||||
kEoB2ItemIconShapeData43,
|
||||
kEoB2ItemIconShapeData44,
|
||||
kEoB2ItemIconShapeData45,
|
||||
kEoB2ItemIconShapeData46,
|
||||
kEoB2ItemIconShapeData47,
|
||||
kEoB2ItemIconShapeData48,
|
||||
kEoB2ItemIconShapeData49,
|
||||
kEoB2ItemIconShapeData50,
|
||||
kEoB2ItemIconShapeData51,
|
||||
kEoB2ItemIconShapeData52,
|
||||
kEoB2ItemIconShapeData53,
|
||||
kEoB2ItemIconShapeData54,
|
||||
kEoB2ItemIconShapeData55,
|
||||
kEoB2ItemIconShapeData56,
|
||||
kEoB2ItemIconShapeData57,
|
||||
kEoB2ItemIconShapeData58,
|
||||
kEoB2ItemIconShapeData59,
|
||||
kEoB2ItemIconShapeData60,
|
||||
kEoB2ItemIconShapeData61,
|
||||
kEoB2ItemIconShapeData62,
|
||||
kEoB2ItemIconShapeData63,
|
||||
kEoB2ItemIconShapeData64,
|
||||
kEoB2ItemIconShapeData65,
|
||||
kEoB2ItemIconShapeData66,
|
||||
kEoB2ItemIconShapeData67,
|
||||
kEoB2ItemIconShapeData68,
|
||||
kEoB2ItemIconShapeData69,
|
||||
kEoB2ItemIconShapeData70,
|
||||
kEoB2ItemIconShapeData71,
|
||||
kEoB2ItemIconShapeData72,
|
||||
kEoB2ItemIconShapeData73,
|
||||
kEoB2ItemIconShapeData74,
|
||||
kEoB2ItemIconShapeData75,
|
||||
kEoB2ItemIconShapeData76,
|
||||
kEoB2ItemIconShapeData77,
|
||||
kEoB2ItemIconShapeData78,
|
||||
kEoB2ItemIconShapeData79,
|
||||
kEoB2ItemIconShapeData80,
|
||||
kEoB2ItemIconShapeData81,
|
||||
kEoB2ItemIconShapeData82,
|
||||
kEoB2ItemIconShapeData83,
|
||||
kEoB2ItemIconShapeData84,
|
||||
kEoB2ItemIconShapeData85,
|
||||
kEoB2ItemIconShapeData86,
|
||||
kEoB2ItemIconShapeData87,
|
||||
kEoB2ItemIconShapeData88,
|
||||
kEoB2ItemIconShapeData89,
|
||||
kEoB2ItemIconShapeData90,
|
||||
kEoB2ItemIconShapeData91,
|
||||
kEoB2ItemIconShapeData92,
|
||||
kEoB2ItemIconShapeData93,
|
||||
kEoB2ItemIconShapeData94,
|
||||
kEoB2ItemIconShapeData95,
|
||||
kEoB2ItemIconShapeData96,
|
||||
kEoB2ItemIconShapeData97,
|
||||
kEoB2ItemIconShapeData98,
|
||||
kEoB2ItemIconShapeData99,
|
||||
kEoB2ItemIconShapeData100,
|
||||
kEoB2ItemIconShapeData101,
|
||||
kEoB2ItemIconShapeData102,
|
||||
kEoB2ItemIconShapeData103,
|
||||
kEoB2ItemIconShapeData104,
|
||||
kEoB2ItemIconShapeData105,
|
||||
kEoB2ItemIconShapeData106,
|
||||
kEoB2ItemIconShapeData107,
|
||||
kEoB2ItemIconShapeData108,
|
||||
kEoB2ItemIconShapeData109,
|
||||
kEoB2ItemIconShapeData110,
|
||||
kEoB2ItemIconShapeData111,
|
||||
|
||||
kEoB2LargeItemsShapeData00,
|
||||
kEoB2LargeItemsShapeData01,
|
||||
kEoB2LargeItemsShapeData02,
|
||||
kEoB2LargeItemsShapeData03,
|
||||
kEoB2LargeItemsShapeData04,
|
||||
kEoB2LargeItemsShapeData05,
|
||||
kEoB2LargeItemsShapeData06,
|
||||
kEoB2LargeItemsShapeData07,
|
||||
kEoB2LargeItemsShapeData08,
|
||||
kEoB2LargeItemsShapeData09,
|
||||
kEoB2LargeItemsShapeData10,
|
||||
|
||||
kEoB2SmallItemsShapeData00,
|
||||
kEoB2SmallItemsShapeData01,
|
||||
kEoB2SmallItemsShapeData02,
|
||||
kEoB2SmallItemsShapeData03,
|
||||
kEoB2SmallItemsShapeData04,
|
||||
kEoB2SmallItemsShapeData05,
|
||||
kEoB2SmallItemsShapeData06,
|
||||
kEoB2SmallItemsShapeData07,
|
||||
kEoB2SmallItemsShapeData08,
|
||||
kEoB2SmallItemsShapeData09,
|
||||
kEoB2SmallItemsShapeData10,
|
||||
kEoB2SmallItemsShapeData11,
|
||||
kEoB2SmallItemsShapeData12,
|
||||
kEoB2SmallItemsShapeData13,
|
||||
kEoB2SmallItemsShapeData14,
|
||||
kEoB2SmallItemsShapeData15,
|
||||
kEoB2SmallItemsShapeData16,
|
||||
kEoB2SmallItemsShapeData17,
|
||||
kEoB2SmallItemsShapeData18,
|
||||
kEoB2SmallItemsShapeData19,
|
||||
kEoB2SmallItemsShapeData20,
|
||||
kEoB2SmallItemsShapeData21,
|
||||
kEoB2SmallItemsShapeData22,
|
||||
kEoB2SmallItemsShapeData23,
|
||||
kEoB2SmallItemsShapeData24,
|
||||
kEoB2SmallItemsShapeData25,
|
||||
|
||||
kEoB2ThrownShapeData00,
|
||||
kEoB2ThrownShapeData01,
|
||||
kEoB2ThrownShapeData02,
|
||||
kEoB2ThrownShapeData03,
|
||||
kEoB2ThrownShapeData04,
|
||||
kEoB2ThrownShapeData05,
|
||||
kEoB2ThrownShapeData06,
|
||||
kEoB2ThrownShapeData07,
|
||||
kEoB2ThrownShapeData08,
|
||||
|
||||
kEoB2SpellShapeData00,
|
||||
kEoB2SpellShapeData01,
|
||||
kEoB2SpellShapeData02,
|
||||
kEoB2SpellShapeData03,
|
||||
|
||||
kEoB2TeleporterShapeData00,
|
||||
kEoB2TeleporterShapeData01,
|
||||
kEoB2TeleporterShapeData02,
|
||||
kEoB2TeleporterShapeData03,
|
||||
kEoB2TeleporterShapeData04,
|
||||
kEoB2TeleporterShapeData05,
|
||||
|
||||
kEoB2LightningColumnShapeData,
|
||||
kEoB2DeadCharShapeData,
|
||||
kEoB2DisabledCharGridShapeData,
|
||||
kEoB2WeaponSlotGridShapeData,
|
||||
kEoB2SmallGridShapeData,
|
||||
kEoB2WideGridShapeData,
|
||||
kEoB2RedSplatShapeData,
|
||||
kEoB2GreenSplatShapeData,
|
||||
|
||||
kEoB2FirebeamShapeData00,
|
||||
kEoB2FirebeamShapeData01,
|
||||
kEoB2FirebeamShapeData02,
|
||||
|
||||
kEoB2SparkShapeData00,
|
||||
kEoB2SparkShapeData01,
|
||||
kEoB2SparkShapeData02,
|
||||
|
||||
kEoB2CompassShapeData00,
|
||||
kEoB2CompassShapeData01,
|
||||
kEoB2CompassShapeData02,
|
||||
kEoB2CompassShapeData03,
|
||||
kEoB2CompassShapeData04,
|
||||
kEoB2CompassShapeData05,
|
||||
kEoB2CompassShapeData06,
|
||||
kEoB2CompassShapeData07,
|
||||
kEoB2CompassShapeData08,
|
||||
kEoB2CompassShapeData09,
|
||||
kEoB2CompassShapeData10,
|
||||
kEoB2CompassShapeData11,
|
||||
|
||||
kEoB2WallOfForceShapeData00,
|
||||
kEoB2WallOfForceShapeData01,
|
||||
kEoB2WallOfForceShapeData02,
|
||||
kEoB2WallOfForceShapeData03,
|
||||
kEoB2WallOfForceShapeData04,
|
||||
kEoB2WallOfForceShapeData05,
|
||||
|
||||
kEoB2UtilMenuStrings,
|
||||
kEoB2Config2431Strings,
|
||||
kEoB2KatakanaLines,
|
||||
kEoB2KanaSelectStrings,
|
||||
kEoB2FontDmpSearchTbl,
|
||||
kEoB2Ascii2SjisTables,
|
||||
kEoB2Ascii2SjisTables2,
|
||||
kEoB2SaveNamePatterns,
|
||||
kEoB2PcmSoundEffectsIngame,
|
||||
kEoB2PcmSoundEffectsIntro,
|
||||
kEoB2PcmSoundEffectsFinale,
|
||||
|
||||
kLoLIngamePakFiles,
|
||||
kLoLCharacterDefs,
|
||||
kLoLIngameSfxFiles,
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "graphics/thumbnail.h"
|
||||
#include "graphics/surface.h"
|
||||
|
||||
#define CURRENT_SAVE_VERSION 17
|
||||
#define CURRENT_SAVE_VERSION 18
|
||||
|
||||
#define GF_FLOPPY (1 << 0)
|
||||
#define GF_TALKIE (1 << 1)
|
||||
|
@ -38,6 +38,7 @@ namespace Kyra {
|
||||
Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
// Special slot id -1 for EOB1 party transfer
|
||||
const char *fileName = (slot == -1) ? _savegameFilename.c_str() : getSavegameFilename(slot);
|
||||
setHandItem(-1);
|
||||
|
||||
SaveHeader header;
|
||||
Common::InSaveFile *saveFile = openSaveForReading(fileName, header, (slot != -1));
|
||||
@ -54,7 +55,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
EoBCharacter *c = &_characters[i];
|
||||
c->id = in.readByte();
|
||||
c->flags = in.readByte();
|
||||
in.read(c->name, 11);
|
||||
in.read(c->name, (header.version < 18) ? 11 : 21);
|
||||
c->strengthCur = in.readSByte();
|
||||
c->strengthMax = in.readSByte();
|
||||
c->strengthExtCur = in.readSByte();
|
||||
@ -273,6 +274,9 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
}
|
||||
|
||||
loadLevel(_currentLevel, _currentSub);
|
||||
if (_flags.platform == Common::kPlatformFMTowns && _gameToLoad != -1)
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
|
||||
_sceneUpdateRequired = true;
|
||||
_screen->setFont(Screen::FID_6_FNT);
|
||||
|
||||
@ -283,6 +287,9 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
}
|
||||
}
|
||||
|
||||
if (!_updateFlags)
|
||||
_screen->fillRect(64, 121, 175, 176, 0, 2);
|
||||
|
||||
_screen->setCurPage(0);
|
||||
gui_drawPlayField(false);
|
||||
|
||||
@ -316,6 +323,7 @@ Common::Error EoBCoreEngine::loadGameState(int slot) {
|
||||
Common::Error EoBCoreEngine::saveGameStateIntern(int slot, const char *saveName, const Graphics::Surface *thumbnail) {
|
||||
Common::String saveNameTmp;
|
||||
const char *fileName = 0;
|
||||
setHandItem(-1);
|
||||
|
||||
// Special slot id -1 to create final save for party transfer
|
||||
if (slot == -1) {
|
||||
@ -345,7 +353,7 @@ Common::Error EoBCoreEngine::saveGameStateIntern(int slot, const char *saveName,
|
||||
|
||||
out->writeByte(c->id);
|
||||
out->writeByte(c->flags);
|
||||
out->write(c->name, 11);
|
||||
out->write(c->name, 21);
|
||||
out->writeSByte(c->strengthCur);
|
||||
out->writeSByte(c->strengthMax);
|
||||
out->writeSByte(c->strengthExtCur);
|
||||
@ -525,6 +533,8 @@ Common::Error EoBCoreEngine::saveGameStateIntern(int slot, const char *saveName,
|
||||
|
||||
_gui->notifyUpdateSaveSlotsList();
|
||||
|
||||
setHandItem(_itemInHand);
|
||||
|
||||
return Common::kNoError;
|
||||
}
|
||||
|
||||
@ -636,13 +646,27 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
|
||||
Common::SeekableSubReadStreamEndian in(fs, 0, fs->size(), _flags.platform == Common::kPlatformAmiga, DisposeAfterUse::YES);
|
||||
|
||||
// detect source platform
|
||||
Common::Platform sourcePlatform = Common::kPlatformDOS;
|
||||
in.seek(32);
|
||||
uint16 testSJIS = in.readByte();
|
||||
in.seek(53);
|
||||
int8 testStr = in.readSByte();
|
||||
in.seek(66);
|
||||
int8 testChr = in.readSByte();
|
||||
in.seek(0);
|
||||
if (testStr >= 0 && testStr <= 25 && testChr >= 0 && testChr <= 25) {
|
||||
if (testSJIS >= 0xE0 || (testSJIS > 0x80 && testSJIS < 0xA0))
|
||||
sourcePlatform = Common::kPlatformFMTowns;
|
||||
}
|
||||
|
||||
if (_flags.gameID == GI_EOB1) {
|
||||
// Nothing to read here for EOB 1. Original EOB 1 has
|
||||
// only one save slot without save file description.
|
||||
desc = "<IMPORTED GAME>";
|
||||
} else {
|
||||
char tempStr[20];
|
||||
in.read(tempStr, 20);
|
||||
char tempStr[30];
|
||||
in.read(tempStr, sourcePlatform == Common::kPlatformFMTowns ? 30 : 20);
|
||||
desc = tempStr;
|
||||
}
|
||||
|
||||
@ -650,7 +674,9 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
EoBCharacter *c = &_characters[i];
|
||||
c->id = in.readByte();
|
||||
c->flags = in.readByte();
|
||||
in.read(c->name, 11);
|
||||
in.read(c->name, sourcePlatform == Common::kPlatformFMTowns ? 21 : 11);
|
||||
if (_flags.platform != sourcePlatform)
|
||||
c->name[10] = '\0';
|
||||
c->strengthCur = in.readSByte();
|
||||
c->strengthMax = in.readSByte();
|
||||
c->strengthExtCur = in.readSByte();
|
||||
@ -696,7 +722,7 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
c->effectFlags = in.readUint32();
|
||||
if (c->effectFlags && _flags.gameID == GI_EOB1) {
|
||||
// Spell effect flags are completely different in EOB I. We only use EOB II style flags in ScummVM.
|
||||
// Doesn't matter much, since these are the temporary spell effects only anyway.
|
||||
// Doesn't matter much, since these are only temporary spell effects.
|
||||
warning("EoBCoreEngine::readOriginalSaveFile(): Unhandled character effect flags encountered in original EOB1 save file '%s' ('%s')", file.c_str(), desc.c_str());
|
||||
c->effectFlags = 0;
|
||||
}
|
||||
@ -716,7 +742,7 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
_partyEffectFlags = (_flags.gameID == GI_EOB1) ? in.readUint16() : in.readUint32();
|
||||
if (_partyEffectFlags && _flags.gameID == GI_EOB1) {
|
||||
// Spell effect flags are completely different in EOB I. We only use EOB II style flags in ScummVM.
|
||||
// Doesn't matter much, since these are the temporary spell effects only anyway.
|
||||
// Doesn't matter much, since these are only temporary spell effects.
|
||||
warning("EoBCoreEngine::readOriginalSaveFile(): Unhandled party effect flags encountered in original EOB1 save file '%s' ('%s')", file.c_str(), desc.c_str());
|
||||
_partyEffectFlags = 0;
|
||||
}
|
||||
@ -742,7 +768,7 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
}
|
||||
|
||||
int numParts = (_flags.gameID == GI_EOB1) ? 12 : 17;
|
||||
int partSize = (_flags.gameID == GI_EOB1) ? 2040 : 2130;
|
||||
int partSize = (sourcePlatform == Common::kPlatformFMTowns) ? 5030 : (_flags.gameID == GI_EOB1 ? 2040 : 2130);
|
||||
uint32 nextPart = in.pos();
|
||||
uint8 *cmpData = new uint8[1200];
|
||||
|
||||
@ -777,8 +803,12 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
memset(lw, 0, 5 * sizeof(WallOfForce));
|
||||
l->wallsOfForce = lw;
|
||||
|
||||
if (sourcePlatform == Common::kPlatformFMTowns) {
|
||||
in.read(l->wallsXorData, 4096);
|
||||
} else {
|
||||
in.read(cmpData, 1200);
|
||||
_screen->decodeFrame4(cmpData, l->wallsXorData, 4096);
|
||||
}
|
||||
_curBlockFile = getBlockFileName(i + 1, 0);
|
||||
const uint8 *p = getBlockFileData();
|
||||
uint16 len = READ_LE_UINT16(p + 4);
|
||||
@ -790,6 +820,9 @@ Common::String EoBCoreEngine::readOriginalSaveFile(Common::String &file) {
|
||||
*d++ ^= p[ii * len + iii];
|
||||
}
|
||||
|
||||
if (sourcePlatform == Common::kPlatformFMTowns)
|
||||
in.skip(4);
|
||||
|
||||
for (int ii = 0; ii < 30; ii++) {
|
||||
EoBMonsterInPlay *m = &lm[ii];
|
||||
m->type = in.readByte();
|
||||
@ -998,8 +1031,8 @@ bool EoBCoreEngine::saveAsOriginalSaveFile(int slot) {
|
||||
Common::OutSaveFile *out = new Common::OutSaveFile(nf.createWriteStream());
|
||||
|
||||
if (_flags.gameID == GI_EOB2) {
|
||||
static const char tempStr[20] = "SCUMMVM EXPORT ";
|
||||
out->write(tempStr, 20);
|
||||
static const char tempStr[31] = "SCUMMVM EXPORT ";
|
||||
out->write(tempStr, (_flags.platform == Common::kPlatformFMTowns) ? 30 : 20);
|
||||
}
|
||||
|
||||
completeDoorOperations();
|
||||
@ -1014,7 +1047,7 @@ bool EoBCoreEngine::saveAsOriginalSaveFile(int slot) {
|
||||
EoBCharacter *c = &_characters[i];
|
||||
out->writeByte(c->id);
|
||||
out->writeByte(c->flags);
|
||||
out->write(c->name, 11);
|
||||
out->write(c->name, (_flags.platform == Common::kPlatformFMTowns) ? 21 : 11);
|
||||
out->writeSByte(c->strengthCur);
|
||||
out->writeSByte(c->strengthMax);
|
||||
out->writeSByte(c->strengthExtCur);
|
||||
@ -1110,13 +1143,14 @@ bool EoBCoreEngine::saveAsOriginalSaveFile(int slot) {
|
||||
}
|
||||
|
||||
int numParts = (_flags.gameID == GI_EOB1) ? 12 : 17;
|
||||
int partSize = (_flags.gameID == GI_EOB1) ? 2040 : 2130;
|
||||
uint8 *tempData = new uint8[4096];
|
||||
int partSize = (_flags.platform == Common::kPlatformFMTowns) ? 5030 :(_flags.gameID == GI_EOB1) ? 2040 : 2130;
|
||||
|
||||
uint8 *tempData = new uint8[5030];
|
||||
uint8 *cmpData = new uint8[1200];
|
||||
|
||||
for (int i = 0; i < numParts; i++) {
|
||||
LevelTempData *l = _lvlTempData[i];
|
||||
memset(tempData, 0, 4096);
|
||||
memset(tempData, 0, 5030);
|
||||
memset(cmpData, 0, 1200);
|
||||
|
||||
if (!l || !(_hasTempDataFlags & (1 << i))) {
|
||||
@ -1135,11 +1169,18 @@ bool EoBCoreEngine::saveAsOriginalSaveFile(int slot) {
|
||||
*d++ = l->wallsXorData[ii * len + iii] ^ p[ii * len + iii];
|
||||
}
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
out->write(tempData, 4096);
|
||||
} else {
|
||||
uint32 outsize = encodeFrame4(tempData, cmpData, 4096);
|
||||
if (outsize > 1200)
|
||||
error("Map compression failure: size of map = %d", outsize);
|
||||
|
||||
out->write(cmpData, 1200);
|
||||
}
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns)
|
||||
out->writeUint32BE(0);
|
||||
|
||||
for (int ii = 0; ii < 30; ii++) {
|
||||
EoBMonsterInPlay *m = &((EoBMonsterInPlay*)l->monsters)[ii];
|
||||
|
@ -36,6 +36,8 @@ namespace Kyra {
|
||||
void EoBCoreEngine::loadLevel(int level, int sub) {
|
||||
_currentLevel = level;
|
||||
_currentSub = sub;
|
||||
if (!_loading)
|
||||
setHandItem(-1);
|
||||
uint32 end = _system->getMillis() + 500;
|
||||
|
||||
readLevelFileData(level);
|
||||
@ -99,12 +101,13 @@ void EoBCoreEngine::loadLevel(int level, int sub) {
|
||||
_sceneDrawPage1 = 2;
|
||||
_sceneDrawPage2 = 1;
|
||||
_screen->setCurPage(0);
|
||||
setHandItem(_itemInHand);
|
||||
}
|
||||
|
||||
void EoBCoreEngine::readLevelFileData(int level) {
|
||||
Common::String file;
|
||||
Common::SeekableReadStream *s = 0;
|
||||
static const char *const suffix[] = { "INF", "DRO", "ELO", 0 };
|
||||
static const char *const suffix[] = { "INF", "DRO", "ELO", "JOT", 0 };
|
||||
|
||||
for (const char *const *sf = suffix; *sf && !s; sf++) {
|
||||
file = Common::String::format("LEVEL%d.%s", level, *sf);
|
||||
@ -112,7 +115,7 @@ void EoBCoreEngine::readLevelFileData(int level) {
|
||||
}
|
||||
|
||||
if (!s)
|
||||
error("Failed to load level file LEVEL%d.INF/DRO/ELO", level);
|
||||
error("Failed to load level file LEVEL%d.INF/DRO/ELO/JOT", level);
|
||||
|
||||
if (s->readUint16LE() + 2 == s->size()) {
|
||||
if (s->readUint16LE() == 4) {
|
||||
@ -148,7 +151,7 @@ Common::String EoBCoreEngine::initLevelData(int sub) {
|
||||
|
||||
const char *vmpPattern = (_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)) ? "%s.EMP" : "%s.VMP";
|
||||
Common::SeekableReadStream *s = _res->createReadStream(Common::String::format(vmpPattern, (const char *)pos));
|
||||
uint16 size = s->readUint16LE();
|
||||
uint16 size = (_flags.platform == Common::kPlatformFMTowns) ? 2916 : s->readUint16LE();
|
||||
delete[] _vmpPtr;
|
||||
_vmpPtr = new uint16[size];
|
||||
for (int i = 0; i < size; i++)
|
||||
@ -175,7 +178,15 @@ Common::String EoBCoreEngine::initLevelData(int sub) {
|
||||
if (_flags.gameID == GI_EOB2 || _configRenderMode != Common::kRenderEGA)
|
||||
_screen->loadPalette(tmpStr.c_str(), _screen->getPalette(0));
|
||||
|
||||
if (_configRenderMode != Common::kRenderCGA) {
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
uint16 *src = (uint16*)_screen->getPalette(0).getData();
|
||||
_screen->createFadeTable16bit(src, (uint16*)_greenFadingTable, 4, 75);
|
||||
_screen->createFadeTable16bit(src, (uint16*)_blackFadingTable, 12, 200);
|
||||
_screen->createFadeTable16bit(src, (uint16*)_blueFadingTable, 10, 85);
|
||||
_screen->createFadeTable16bit(src, (uint16*)_lightBlueFadingTable, 11, 125);
|
||||
_screen->createFadeTable16bit(src, (uint16*)_greyFadingTable, 0, 85);
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
} else if (_configRenderMode != Common::kRenderCGA) {
|
||||
Palette backupPal(256);
|
||||
backupPal.copy(_screen->getPalette(0), 224, 32, 224);
|
||||
_screen->getPalette(0).fill(224, 32, 0x3F);
|
||||
@ -283,7 +294,14 @@ void EoBCoreEngine::loadVcnData(const char *file, const uint8 *cgaMapping) {
|
||||
if (file)
|
||||
strcpy(_lastBlockDataFile, file);
|
||||
|
||||
const char *filePattern = (_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)) ? "%s.ECN" : "%s.VCN";
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
uint32 size;
|
||||
delete[] _vcnBlocks;
|
||||
_vcnBlocks = _res->fileData(Common::String::format("%s.VCC", _lastBlockDataFile).c_str(), &size);
|
||||
return;
|
||||
}
|
||||
|
||||
const char *filePattern = ((_flags.gameID == GI_EOB1 && (_configRenderMode == Common::kRenderEGA || _configRenderMode == Common::kRenderCGA)) ? "%s.ECN" : "%s.VCN");
|
||||
_screen->loadBitmap(Common::String::format(filePattern, _lastBlockDataFile).c_str(), 3, 3, 0);
|
||||
const uint8 *pos = _screen->getCPagePtr(3);
|
||||
|
||||
|
@ -1425,7 +1425,7 @@ void LoLEngine::drawSceneShapes(int) {
|
||||
if (!(w & 8))
|
||||
continue;
|
||||
|
||||
uint16 v = 20 * (s - (s < 23 ? _dscUnk2[s] : 0));
|
||||
uint16 v = 20 * (s - (s < 23 ? _dscDoorScaleOffs[s] : 0));
|
||||
if (v > 80)
|
||||
v = 80;
|
||||
|
||||
|
@ -348,6 +348,7 @@ bool KyraRpgEngine::checkSceneUpdateNeed(int block) {
|
||||
void KyraRpgEngine::drawVcnBlocks() {
|
||||
uint8 *d = _sceneWindowBuffer;
|
||||
uint16 *bdb = _blockDrawingBuffer;
|
||||
uint16 *hiColorPal = screen()->get16bitPalette();
|
||||
|
||||
for (int y = 0; y < 15; y++) {
|
||||
for (int x = 0; x < 22; x++) {
|
||||
@ -369,9 +370,9 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
vcnOffset &= 0x3FFF;
|
||||
}
|
||||
|
||||
uint8 *src = 0;
|
||||
const uint8 *src = 0;
|
||||
if (vcnOffset) {
|
||||
src = &_vcnBlocks[vcnOffset << 5];
|
||||
src = &_vcnBlocks[vcnOffset << (4 + _vcnBpp)];
|
||||
wllVcnOffset = _wllVcnOffset;
|
||||
} else {
|
||||
// floor/ceiling blocks
|
||||
@ -381,36 +382,46 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
vcnOffset &= 0x3FFF;
|
||||
}
|
||||
|
||||
src = (_vcfBlocks ? _vcfBlocks : _vcnBlocks) + (vcnOffset << 5);
|
||||
src = (_vcfBlocks ? _vcfBlocks : _vcnBlocks) + (vcnOffset << (4 + _vcnBpp));
|
||||
}
|
||||
|
||||
uint8 shift = _vcnShift ? _vcnShift[vcnOffset] : _blockBrightness;
|
||||
|
||||
if (horizontalFlip) {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
src += 3;
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
src += ((_vcnBpp << 2) - 1);
|
||||
for (int blockX = 0; blockX < 4 * _vcnBpp; blockX++) {
|
||||
if (_vcnBpp == 2) {
|
||||
*(uint16*)d = hiColorPal[*src--];
|
||||
d += 2;
|
||||
} else {
|
||||
uint8 bl = *src--;
|
||||
*d++ = _vcnColTable[((bl & 0x0F) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((bl >> 4) + wllVcnOffset) | shift];
|
||||
}
|
||||
src += 5;
|
||||
d += 168;
|
||||
}
|
||||
src += ((_vcnBpp << 2) + 1);
|
||||
d += 168 * _vcnBpp;
|
||||
}
|
||||
} else {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
for (int blockX = 0; blockX < 4 * _vcnBpp; blockX++) {
|
||||
if (_vcnBpp == 2) {
|
||||
*(uint16*)d = hiColorPal[*src++];
|
||||
d += 2;
|
||||
} else {
|
||||
uint8 bl = *src++;
|
||||
*d++ = _vcnColTable[((bl >> 4) + wllVcnOffset) | shift];
|
||||
*d++ = _vcnColTable[((bl & 0x0F) + wllVcnOffset) | shift];
|
||||
}
|
||||
d += 168;
|
||||
}
|
||||
d += 168 * _vcnBpp;
|
||||
}
|
||||
}
|
||||
d -= 1400;
|
||||
d -= 1400 * _vcnBpp;
|
||||
|
||||
if (vcnExtraOffsetWll) {
|
||||
d -= 8;
|
||||
d -= 8 * _vcnBpp;
|
||||
horizontalFlip = false;
|
||||
|
||||
if (vcnExtraOffsetWll & 0x4000) {
|
||||
@ -419,14 +430,20 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
}
|
||||
|
||||
shift = _vcnShift ? _vcnShift[vcnExtraOffsetWll] : _blockBrightness;
|
||||
src = &_vcnBlocks[vcnExtraOffsetWll << 5];
|
||||
src = &_vcnBlocks[vcnExtraOffsetWll << (4 + _vcnBpp)];
|
||||
uint8 *maskTable = _vcnTransitionMask ? &_vcnTransitionMask[vcnExtraOffsetWll << 5] : 0;
|
||||
|
||||
if (horizontalFlip) {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
src += 3;
|
||||
src += ((_vcnBpp << 2) - 1);
|
||||
maskTable += 3;
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
for (int blockX = 0; blockX < 4 * _vcnBpp; blockX++) {
|
||||
if (_vcnBpp == 2) {
|
||||
uint8 bl = *src--;
|
||||
if (bl)
|
||||
*(uint16*)d = hiColorPal[bl];
|
||||
d += 2;
|
||||
} else {
|
||||
uint8 bl = *src--;
|
||||
uint8 mask = _vcnTransitionMask ? *maskTable-- : 0;
|
||||
uint8 h = _vcnColTable[((bl & 0x0F) + wllVcnRmdOffset) | shift];
|
||||
@ -444,13 +461,20 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
*d = l;
|
||||
d++;
|
||||
}
|
||||
src += 5;
|
||||
}
|
||||
src += ((_vcnBpp << 2) + 1);
|
||||
maskTable += 5;
|
||||
d += 168;
|
||||
d += 168 * _vcnBpp;
|
||||
}
|
||||
} else {
|
||||
for (int blockY = 0; blockY < 8; blockY++) {
|
||||
for (int blockX = 0; blockX < 4; blockX++) {
|
||||
for (int blockX = 0; blockX < 4 * _vcnBpp; blockX++) {
|
||||
if (_vcnBpp == 2) {
|
||||
uint8 bl = *src++;
|
||||
if (bl)
|
||||
*(uint16*)d = hiColorPal[bl];
|
||||
d += 2;
|
||||
} else {
|
||||
uint8 bl = *src++;
|
||||
uint8 mask = _vcnTransitionMask ? *maskTable++ : 0;
|
||||
uint8 h = _vcnColTable[((bl >> 4) + wllVcnRmdOffset) | shift];
|
||||
@ -468,13 +492,14 @@ void KyraRpgEngine::drawVcnBlocks() {
|
||||
*d = l;
|
||||
d++;
|
||||
}
|
||||
d += 168;
|
||||
}
|
||||
d += 168 * _vcnBpp;
|
||||
}
|
||||
}
|
||||
d -= 1400;
|
||||
d -= 1400 * _vcnBpp;
|
||||
}
|
||||
}
|
||||
d += 1232;
|
||||
d += 1232 * _vcnBpp;
|
||||
}
|
||||
|
||||
screen()->copyBlockToPage(_sceneDrawPage1, _sceneXoffset, 0, 176, 120, _sceneWindowBuffer);
|
||||
|
@ -739,10 +739,13 @@ void Screen::copyWsaRect(int x, int y, int w, int h, int dimState, int plotFunc,
|
||||
}
|
||||
}
|
||||
|
||||
uint8 Screen::getPagePixel(int pageNum, int x, int y) {
|
||||
int Screen::getPagePixel(int pageNum, int x, int y) {
|
||||
assert(pageNum < SCREEN_PAGE_NUM);
|
||||
assert(x >= 0 && x < SCREEN_W && y >= 0 && y < SCREEN_H);
|
||||
if (_bytesPerPixel == 1)
|
||||
return _pagePtrs[pageNum][y * SCREEN_W + x];
|
||||
else
|
||||
return ((uint16*)_pagePtrs[pageNum])[y * SCREEN_W + x];
|
||||
}
|
||||
|
||||
void Screen::setPagePixel(int pageNum, int x, int y, uint8 color) {
|
||||
@ -762,7 +765,7 @@ void Screen::setPagePixel(int pageNum, int x, int y, uint8 color) {
|
||||
}
|
||||
|
||||
if (_bytesPerPixel == 2) {
|
||||
*(uint16*)(&_pagePtrs[pageNum][y * SCREEN_W * 2 + x * 2]) = _16bitPalette[color];
|
||||
((uint16*)_pagePtrs[pageNum])[y * SCREEN_W + x] = _16bitPalette[color];
|
||||
} else {
|
||||
_pagePtrs[pageNum][y * SCREEN_W + x] = color;
|
||||
}
|
||||
@ -781,12 +784,12 @@ void Screen::fadeToBlack(int delay, const UpdateFunctor *upFunc) {
|
||||
}
|
||||
|
||||
void Screen::fadePalette(const Palette &pal, int delay, const UpdateFunctor *upFunc) {
|
||||
if (_renderMode == Common::kRenderEGA)
|
||||
if (_renderMode == Common::kRenderEGA || _bytesPerPixel == 2)
|
||||
setScreenPalette(pal);
|
||||
|
||||
updateScreen();
|
||||
|
||||
if (_renderMode == Common::kRenderCGA || _renderMode == Common::kRenderEGA)
|
||||
if (_renderMode == Common::kRenderCGA || _renderMode == Common::kRenderEGA || _bytesPerPixel == 2)
|
||||
return;
|
||||
|
||||
int diff = 0, delayInc = 0;
|
||||
@ -1056,7 +1059,7 @@ void Screen::copyRegion(int x1, int y1, int x2, int y2, int w, int h, int srcPag
|
||||
|
||||
void Screen::copyRegionToBuffer(int pageNum, int x, int y, int w, int h, uint8 *dest) {
|
||||
if (y < 0) {
|
||||
dest += (-y) * w;
|
||||
dest += (-y) * w * _bytesPerPixel;
|
||||
h += y;
|
||||
y = 0;
|
||||
} else if (y + h > SCREEN_H) {
|
||||
@ -1064,7 +1067,7 @@ void Screen::copyRegionToBuffer(int pageNum, int x, int y, int w, int h, uint8 *
|
||||
}
|
||||
|
||||
if (x < 0) {
|
||||
dest += -x;
|
||||
dest += -x * _bytesPerPixel;
|
||||
w += x;
|
||||
x = 0;
|
||||
} else if (x + w > SCREEN_W) {
|
||||
@ -1093,7 +1096,7 @@ void Screen::copyPage(uint8 srcPage, uint8 dstPage) {
|
||||
|
||||
void Screen::copyBlockToPage(int pageNum, int x, int y, int w, int h, const uint8 *src) {
|
||||
if (y < 0) {
|
||||
src += (-y) * w;
|
||||
src += (-y) * w * _bytesPerPixel;
|
||||
h += y;
|
||||
y = 0;
|
||||
} else if (y + h > SCREEN_H) {
|
||||
@ -1101,7 +1104,7 @@ void Screen::copyBlockToPage(int pageNum, int x, int y, int w, int h, const uint
|
||||
}
|
||||
|
||||
if (x < 0) {
|
||||
src += -x;
|
||||
src += -x * _bytesPerPixel;
|
||||
w += x;
|
||||
x = 0;
|
||||
} else if (x + w > SCREEN_W) {
|
||||
@ -1398,7 +1401,7 @@ int Screen::getFontWidth() const {
|
||||
|
||||
int Screen::getCharWidth(uint16 c) const {
|
||||
const int width = _fonts[_currentFont]->getCharWidth(c);
|
||||
return width + ((_currentFont != FID_SJIS_FNT) ? _charWidth : 0);
|
||||
return width + ((_currentFont != FID_SJIS_FNT && _currentFont != FID_SJIS_LARGE_FNT && _currentFont != FID_SJIS_SMALL_FNT) ? _charWidth : 0);
|
||||
}
|
||||
|
||||
int Screen::getTextWidth(const char *str) {
|
||||
@ -1408,8 +1411,8 @@ int Screen::getTextWidth(const char *str) {
|
||||
FontId curFont = _currentFont;
|
||||
|
||||
while (1) {
|
||||
if (_sjisMixedFontMode)
|
||||
setFont((*str & 0x80) ? FID_SJIS_FNT : curFont);
|
||||
if (_sjisMixedFontMode && curFont != FID_SJIS_FNT && curFont != FID_SJIS_LARGE_FNT && curFont != FID_SJIS_SMALL_FNT)
|
||||
setFont((*str & 0x80) ? ((_vm->game() == GI_EOB2 && curFont == FID_6_FNT) ? FID_SJIS_SMALL_FNT : FID_SJIS_FNT) : curFont);
|
||||
|
||||
uint c = fetchChar(str);
|
||||
|
||||
@ -1455,8 +1458,8 @@ void Screen::printText(const char *str, int x, int y, uint8 color1, uint8 color2
|
||||
return;
|
||||
|
||||
while (1) {
|
||||
if (_sjisMixedFontMode)
|
||||
setFont((*str & 0x80) ? FID_SJIS_FNT : curFont);
|
||||
if (_sjisMixedFontMode && curFont != FID_SJIS_FNT && curFont != FID_SJIS_LARGE_FNT && curFont != FID_SJIS_SMALL_FNT)
|
||||
setFont((*str & 0x80) ? ((_vm->game() == GI_EOB2 && curFont == FID_6_FNT) ? FID_SJIS_SMALL_FNT : FID_SJIS_FNT) : curFont);
|
||||
|
||||
uint8 charHeightFnt = getFontHeight();
|
||||
|
||||
@ -1483,7 +1486,7 @@ void Screen::printText(const char *str, int x, int y, uint8 color1, uint8 color2
|
||||
}
|
||||
|
||||
uint16 Screen::fetchChar(const char *&s) const {
|
||||
if (_currentFont != FID_SJIS_FNT)
|
||||
if (_currentFont != FID_SJIS_FNT && _currentFont != FID_SJIS_LARGE_FNT && _currentFont != FID_SJIS_SMALL_FNT)
|
||||
return (uint8)*s++;
|
||||
|
||||
uint16 ch = (uint8)*s++;
|
||||
@ -1515,7 +1518,7 @@ void Screen::drawChar(uint16 c, int x, int y) {
|
||||
return;
|
||||
}
|
||||
|
||||
int bpp = (_currentFont == Screen::FID_SJIS_FNT) ? 1 : 2;
|
||||
int bpp = (_currentFont == Screen::FID_SJIS_FNT || _currentFont == Screen::FID_SJIS_SMALL_FNT) ? 1 : 2;
|
||||
destPage += (y * 2) * 640 * bpp + (x * 2 * bpp);
|
||||
|
||||
fnt->drawChar(c, destPage, 640, bpp);
|
||||
@ -3472,7 +3475,7 @@ void Screen::copyOverlayRegion(int x, int y, int x2, int y2, int w, int h, int s
|
||||
|
||||
while (h--) {
|
||||
for (x = 0; x < w; ++x)
|
||||
memcpy(dst, src, w);
|
||||
memmove(dst, src, w);
|
||||
dst += 640;
|
||||
src += 640;
|
||||
}
|
||||
@ -3486,7 +3489,7 @@ void Screen::crossFadeRegion(int x1, int y1, int x2, int y2, int w, int h, int s
|
||||
hideMouse();
|
||||
|
||||
uint16 *wB = (uint16 *)_pagePtrs[14];
|
||||
uint8 *hB = _pagePtrs[14] + 640;
|
||||
uint8 *hB = _pagePtrs[14] + 640 * _bytesPerPixel;
|
||||
|
||||
for (int i = 0; i < w; i++)
|
||||
wB[i] = i;
|
||||
@ -3515,6 +3518,9 @@ void Screen::crossFadeRegion(int x1, int y1, int x2, int y2, int w, int h, int s
|
||||
if (++iH >= h)
|
||||
iH = 0;
|
||||
|
||||
if (_bytesPerPixel == 2)
|
||||
((uint16*)d)[dY * 320 + dX] = ((uint16*)s)[sY * 320 + sX];
|
||||
else
|
||||
d[dY * 320 + dX] = s[sY * 320 + sX];
|
||||
addDirtyRect(dX, dY, 1, 1);
|
||||
}
|
||||
@ -3815,16 +3821,6 @@ void SJISFont::drawChar(uint16 c, byte *dst, int pitch, int) const {
|
||||
_font->drawChar(dst, c, 640, 1, color1, color2, 640, 400);
|
||||
}
|
||||
|
||||
SJISFontLarge::SJISFontLarge(Graphics::FontSJIS *font) : SJISFont(font, 0, false, false, false, 0) {
|
||||
_sjisWidth = _font->getMaxFontWidth();
|
||||
_fontHeight = _font->getFontHeight();
|
||||
_asciiWidth = _font->getCharWidth('a');
|
||||
}
|
||||
|
||||
void SJISFontLarge::drawChar(uint16 c, byte *dst, int pitch) const {
|
||||
_font->drawChar(dst, c, 320, 1, _colorMap[1], _colorMap[0], 320, 200);
|
||||
}
|
||||
|
||||
#pragma mark -
|
||||
|
||||
Palette::Palette(const int numColors) : _palData(0), _numColors(numColors) {
|
||||
|
@ -145,10 +145,10 @@ private:
|
||||
|
||||
#ifdef ENABLE_EOB
|
||||
/**
|
||||
* Implementation of the Font interface for old DOS fonts used
|
||||
* in EOB and EOB II.
|
||||
*
|
||||
*/
|
||||
* Implementation of the Font interface for old DOS fonts used
|
||||
* in EOB and EOB II.
|
||||
*
|
||||
*/
|
||||
class OldDOSFont : public Font {
|
||||
public:
|
||||
OldDOSFont(Common::RenderMode mode);
|
||||
@ -249,18 +249,6 @@ private:
|
||||
const int _sjisWidthOffset;
|
||||
};
|
||||
|
||||
/**
|
||||
* SJISFont variant used in the intro and outro of EOB II FM-Towns. It appears twice as large, since it is not rendered on the hires overlay pages
|
||||
*/
|
||||
class SJISFontLarge : public SJISFont {
|
||||
public:
|
||||
SJISFontLarge(Graphics::FontSJIS *font);
|
||||
virtual ~SJISFontLarge() { unload(); }
|
||||
|
||||
virtual bool usesOverlay() const { return false; }
|
||||
virtual void drawChar(uint16 c, byte *dst, int pitch) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* A class that manages KYRA palettes.
|
||||
*
|
||||
@ -426,6 +414,7 @@ public:
|
||||
FID_INTRO_FNT,
|
||||
FID_SJIS_FNT,
|
||||
FID_SJIS_LARGE_FNT,
|
||||
FID_SJIS_SMALL_FNT,
|
||||
FID_NUM
|
||||
};
|
||||
|
||||
@ -466,7 +455,7 @@ public:
|
||||
|
||||
void clearPage(int pageNum);
|
||||
|
||||
uint8 getPagePixel(int pageNum, int x, int y);
|
||||
int getPagePixel(int pageNum, int x, int y);
|
||||
void setPagePixel(int pageNum, int x, int y, uint8 color);
|
||||
|
||||
const uint8 *getCPagePtr(int pageNum) const;
|
||||
@ -499,7 +488,7 @@ public:
|
||||
void drawBox(int x1, int y1, int x2, int y2, int color);
|
||||
|
||||
// font/text handling
|
||||
bool loadFont(FontId fontId, const char *filename);
|
||||
virtual bool loadFont(FontId fontId, const char *filename);
|
||||
FontId setFont(FontId fontId);
|
||||
|
||||
int getFontHeight() const;
|
||||
@ -584,6 +573,7 @@ public:
|
||||
// RPG specific, this does not belong here
|
||||
void crossFadeRegion(int x1, int y1, int x2, int y2, int w, int h, int srcPage, int dstPage);
|
||||
|
||||
uint16 *get16bitPalette() { return _16bitPalette; }
|
||||
void set16bitShadingLevel(int lvl) { _16bitShadingLevel = lvl; }
|
||||
|
||||
protected:
|
||||
|
@ -34,6 +34,7 @@
|
||||
|
||||
#include "graphics/cursorman.h"
|
||||
#include "graphics/palette.h"
|
||||
#include "graphics/sjis.h"
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
@ -46,7 +47,7 @@ Screen_EoB::Screen_EoB(EoBCoreEngine *vm, OSystem *system) : Screen(vm, system,
|
||||
_gfxX = _gfxY = 0;
|
||||
_gfxCol = 0;
|
||||
_dsTempPage = 0;
|
||||
_convertHiColorBuffer = 0;
|
||||
_shpBuffer = _convertHiColorBuffer = 0;
|
||||
_dsDiv = 0;
|
||||
_dsRem = 0;
|
||||
_dsScaleTrans = 0;
|
||||
@ -61,6 +62,7 @@ Screen_EoB::Screen_EoB(EoBCoreEngine *vm, OSystem *system) : Screen(vm, system,
|
||||
|
||||
Screen_EoB::~Screen_EoB() {
|
||||
delete[] _dsTempPage;
|
||||
delete[] _shpBuffer;
|
||||
delete[] _convertHiColorBuffer;
|
||||
delete[] _cgaScaleTable;
|
||||
delete[] _egaDitheringTable;
|
||||
@ -73,12 +75,21 @@ bool Screen_EoB::init() {
|
||||
if (Screen::init()) {
|
||||
int temp;
|
||||
_gfxMaxY = _vm->staticres()->loadRawData(kEoBBaseExpObjectY, temp);
|
||||
|
||||
_dsTempPage = new uint8[12000];
|
||||
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
_shpBuffer = new uint8[SCREEN_H * SCREEN_W];
|
||||
_convertHiColorBuffer = new uint8[SCREEN_H * SCREEN_W];
|
||||
enableHiColorMode(true);
|
||||
|
||||
Graphics::FontSJIS *font = Graphics::FontSJIS::createFont(Common::kPlatformFMTowns);
|
||||
if (!font)
|
||||
error("Could not load any SJIS font, neither the original nor ScummVM's 'SJIS.FNT'");
|
||||
_fonts[FID_SJIS_LARGE_FNT] = new SJISFontLarge(font);
|
||||
|
||||
loadFont(FID_SJIS_SMALL_FNT, "FONT.DMP");
|
||||
}
|
||||
|
||||
if (_vm->gameFlags().useHiRes && _renderMode == Common::kRenderEGA) {
|
||||
_useHiResEGADithering = true;
|
||||
_egaDitheringTable = new uint8[256];
|
||||
@ -124,19 +135,28 @@ void Screen_EoB::setMouseCursor(int x, int y, const byte *shape, const uint8 *ov
|
||||
int mouseH = (shape[3]);
|
||||
int colorKey = (_renderMode == Common::kRenderCGA) ? 0 : _cursorColorKey;
|
||||
|
||||
int scaleFactor = _useHiResEGADithering ? 2 : 1;
|
||||
int scaleFactor = _vm->gameFlags().useHiRes ? 2 : 1;
|
||||
int bpp = _useHiColorScreen ? 2 : 1;
|
||||
|
||||
uint8 *cursor = new uint8[mouseW * scaleFactor * bpp * mouseH * scaleFactor];
|
||||
// We use memset and copyBlockToPage instead of fillRect to make sure that the
|
||||
// color key 0xFF doesn't get converted into EGA color
|
||||
|
||||
if (_bytesPerPixel == 2) {
|
||||
colorKey = _16bitPalette[colorKey];
|
||||
for (int s = mouseW * scaleFactor * bpp * mouseH * scaleFactor; s; s -= 2)
|
||||
*(uint16*)(cursor + s - 2) = colorKey;
|
||||
} else {
|
||||
// We don't use fillRect here to make sure that the color key 0xFF doesn't get converted into EGA color
|
||||
memset(cursor, colorKey, mouseW * scaleFactor * bpp * mouseH * scaleFactor);
|
||||
}
|
||||
|
||||
copyBlockToPage(6, 0, 0, mouseW * scaleFactor, mouseH * scaleFactor, cursor);
|
||||
drawShape(6, shape, 0, 0, 0, 2, ovl);
|
||||
CursorMan.showMouse(false);
|
||||
|
||||
if (_useHiResEGADithering)
|
||||
ditherRect(getCPagePtr(6), cursor, mouseW * scaleFactor, mouseW, mouseH, colorKey);
|
||||
else if (_vm->gameFlags().useHiRes)
|
||||
scale2x(cursor, mouseW * scaleFactor, getCPagePtr(6), SCREEN_W, mouseW, mouseH);
|
||||
else
|
||||
copyRegionToBuffer(6, 0, 0, mouseW, mouseH, cursor);
|
||||
|
||||
@ -185,9 +205,13 @@ void Screen_EoB::loadFileDataToPage(Common::SeekableReadStream *s, int pageNum,
|
||||
}
|
||||
|
||||
void Screen_EoB::printShadedText(const char *string, int x, int y, int col1, int col2) {
|
||||
if (_vm->gameFlags().platform != Common::kPlatformFMTowns) {
|
||||
printText(string, x - 1, y, 12, col2);
|
||||
printText(string, x, y + 1, 12, 0);
|
||||
printText(string, x - 1, y + 1, 12, 0);
|
||||
} else if (col2) {
|
||||
fillRect(x, y, x + getTextWidth(string) - 1, y + getFontHeight() - 1, col2);
|
||||
}
|
||||
printText(string, x, y, col1, 0);
|
||||
}
|
||||
|
||||
@ -197,22 +221,28 @@ void Screen_EoB::loadShapeSetBitmap(const char *file, int tempPage, int destPage
|
||||
}
|
||||
|
||||
void Screen_EoB::loadEoBBitmap(const char *file, const uint8 *cgaMapping, int tempPage, int destPage, int convertToPage) {
|
||||
const char *filePattern = (_vm->game() == GI_EOB1 && (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA)) ? "%s.EGA" : "%s.CPS";
|
||||
const char *filePattern = _vm->gameFlags().platform == Common::kPlatformFMTowns ? "%s.SHP" : ((_vm->game() == GI_EOB1 && (_renderMode == Common::kRenderEGA || _renderMode == Common::kRenderCGA)) ? "%s.EGA" : "%s.CPS");
|
||||
Common::String tmp = Common::String::format(filePattern, file);
|
||||
Common::SeekableReadStream *s = _vm->resource()->createReadStream(tmp);
|
||||
bool loadAlternative = false;
|
||||
if (s) {
|
||||
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns) {
|
||||
if (!s)
|
||||
error("Screen_EoB::loadEoBBitmap(): Failed to load file '%s'", file);
|
||||
s->read(_shpBuffer, s->size());
|
||||
decodeSHP(_shpBuffer, destPage);
|
||||
} else if (s) {
|
||||
// This additional check is necessary since some localized versions of EOB II seem to contain invalid (size zero) cps files
|
||||
if (s->size())
|
||||
loadBitmap(tmp.c_str(), tempPage, destPage, 0);
|
||||
else
|
||||
loadAlternative = true;
|
||||
|
||||
delete s;
|
||||
} else {
|
||||
loadAlternative = true;
|
||||
}
|
||||
|
||||
delete s;
|
||||
|
||||
if (loadAlternative) {
|
||||
if (_vm->game() == GI_EOB1) {
|
||||
tmp.insertChar('1', tmp.size() - 4);
|
||||
@ -279,7 +309,7 @@ void Screen_EoB::convertPage(int srcPage, int dstPage, const uint8 *cgaMapping)
|
||||
void Screen_EoB::setScreenPalette(const Palette &pal) {
|
||||
if (_bytesPerPixel == 2) {
|
||||
for (int i = 0; i < 4; i++)
|
||||
createFadeTable16bit((const uint16*)(pal.getData()), &_16bitPalette[i * 256], 0, i * 53);
|
||||
createFadeTable16bit((const uint16*)(pal.getData()), &_16bitPalette[i * 256], 0, i * 85);
|
||||
}else if (_useHiResEGADithering && pal.getNumColors() != 16) {
|
||||
generateEGADitheringTable(pal);
|
||||
} else if (_renderMode == Common::kRenderEGA && pal.getNumColors() == 16) {
|
||||
@ -315,7 +345,7 @@ uint8 *Screen_EoB::encodeShape(uint16 x, uint16 y, uint16 w, uint16 h, bool enco
|
||||
if (_renderMode == Common::kRenderEGA && !_useHiResEGADithering)
|
||||
encode8bit = false;
|
||||
|
||||
if (_bytesPerPixel == 2) {
|
||||
if (_bytesPerPixel == 2 && encode8bit) {
|
||||
shapesize = h * (w << 3) + 4;
|
||||
shp = new uint8[shapesize];
|
||||
memset(shp, 0, shapesize);
|
||||
@ -890,6 +920,12 @@ const uint8 *Screen_EoB::generateShapeOverlay(const uint8 *shp, const uint8 *fad
|
||||
if (*shp != 2)
|
||||
return 0;
|
||||
|
||||
if (_bytesPerPixel == 2) {
|
||||
setFadeTable(fadingTable);
|
||||
setShapeFadingLevel(1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
shp += 4;
|
||||
for (int i = 0; i < 16; i++)
|
||||
_shapeOverlay[i] = fadingTable[shp[i]];
|
||||
@ -963,10 +999,14 @@ void Screen_EoB::drawExplosion(int scale, int radius, int numElements, int stepS
|
||||
int16 py = ((ptr3[i] >> 6) >> scale) + gy2;
|
||||
if (py > ymax)
|
||||
py = ymax;
|
||||
if (posWithinRect(px, py, rX1, rY1, rX2, rY2))
|
||||
if (posWithinRect(px, py, rX1, rY1, rX2, rY2)) {
|
||||
if (_bytesPerPixel == 2)
|
||||
setPagePixel16bit(0, px, py, ptr6[i]);
|
||||
else
|
||||
setPagePixel(0, px, py, ptr6[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
l = 0;
|
||||
|
||||
@ -1094,6 +1134,9 @@ void Screen_EoB::drawVortex(int numElements, int radius, int stepSize, int, int
|
||||
for (int ii = numElements - 1; ii >= 0; ii--) {
|
||||
int16 px = CLIP((xCoords[ii] >> 6) + cx, 0, SCREEN_W - 1);
|
||||
int16 py = CLIP((yCoords[ii] >> 6) + cy, 0, SCREEN_H - 1);
|
||||
if (_bytesPerPixel == 2)
|
||||
setPagePixel16bit(0, px, py, pixBackup[ii]);
|
||||
else
|
||||
setPagePixel(0, px, py, pixBackup[ii]);
|
||||
}
|
||||
}
|
||||
@ -1219,6 +1262,8 @@ int Screen_EoB::getRectSize(int w, int h) {
|
||||
|
||||
void Screen_EoB::setFadeTable(const uint8 *table) {
|
||||
_dsShapeFadingTable = table;
|
||||
if (_bytesPerPixel == 2)
|
||||
memcpy(&_16bitPalette[0x100], table, 512);
|
||||
}
|
||||
|
||||
void Screen_EoB::createFadeTable(const uint8 *palData, uint8 *dst, uint8 rootColor, uint8 weight) {
|
||||
@ -1265,6 +1310,7 @@ void Screen_EoB::createFadeTable(const uint8 *palData, uint8 *dst, uint8 rootCol
|
||||
}
|
||||
|
||||
void Screen_EoB::createFadeTable16bit(const uint16 *palData, uint16 *dst, uint16 rootColor, uint8 weight) {
|
||||
rootColor = palData[rootColor];
|
||||
uint8 r8 = (rootColor & 0x1f);
|
||||
uint8 g8 = (rootColor & 0x3E0) >> 5;
|
||||
uint8 b8 = (rootColor & 0x7C00) >> 10;
|
||||
@ -1320,7 +1366,6 @@ void Screen_EoB::createFadeTable16bit(const uint16 *palData, uint16 *dst, uint16
|
||||
|
||||
*dst++ = (b8 << 10) | (g8 << 5) | r8;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
const uint16 *Screen_EoB::getCGADitheringTable(int index) {
|
||||
@ -1331,10 +1376,69 @@ const uint8 *Screen_EoB::getEGADitheringTable() {
|
||||
return _egaDitheringTable;
|
||||
}
|
||||
|
||||
bool Screen_EoB::loadFont(FontId fontId, const char *filename) {
|
||||
if (scumm_stricmp(filename, "FONT.DMP"))
|
||||
return Screen::loadFont(fontId, filename);
|
||||
|
||||
Font *&fnt = _fonts[fontId];
|
||||
int temp;
|
||||
|
||||
const uint16 *tbl = _vm->staticres()->loadRawDataBe16(kEoB2FontDmpSearchTbl, temp);
|
||||
assert(tbl);
|
||||
|
||||
if (!fnt) {
|
||||
fnt = new SJISFont12x12(tbl);
|
||||
assert(fnt);
|
||||
}
|
||||
|
||||
Common::SeekableReadStream *file = _vm->resource()->createReadStream(filename);
|
||||
if (!file)
|
||||
error("Font file '%s' is missing", filename);
|
||||
|
||||
bool ret = fnt->load(*file);
|
||||
fnt->setColorMap(_textColorsMap);
|
||||
delete file;
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Screen_EoB::decodeSHP(const uint8 *data, int dstPage) {
|
||||
int32 bytesLeft = READ_LE_UINT32(data);
|
||||
const uint8 *src = data + 4;
|
||||
uint8 *dst = getPagePtr(dstPage);
|
||||
|
||||
if (bytesLeft < 0) {
|
||||
memcpy(dst, data, 64000);
|
||||
return;
|
||||
}
|
||||
|
||||
while (bytesLeft > 0) {
|
||||
uint8 code = *src++;
|
||||
bytesLeft--;
|
||||
|
||||
for (int i = 8; i; i--) {
|
||||
if (code & 0x80) {
|
||||
uint16 copyOffs = (src[0] << 4) | (src[1] >> 4);
|
||||
uint8 count = (src[1] & 0x0F) + 3;
|
||||
src += 2;
|
||||
bytesLeft -= 2;
|
||||
const uint8 *copySrc = dst - 1 - copyOffs;
|
||||
while (count--)
|
||||
*dst++ = *copySrc++;
|
||||
} else if (bytesLeft) {
|
||||
*dst++ = *src++;
|
||||
bytesLeft--;
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
code <<= 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Screen_EoB::convertToHiColor(int page) {
|
||||
if (!_16bitPalette)
|
||||
return;
|
||||
uint16 *dst = (uint16 *)getCPagePtr(page);
|
||||
uint16 *dst = (uint16 *)getPagePtr(page);
|
||||
memcpy(_convertHiColorBuffer, dst, SCREEN_H * SCREEN_W);
|
||||
uint8 *src = _convertHiColorBuffer;
|
||||
for (int s = SCREEN_H * SCREEN_W; s; --s)
|
||||
@ -1483,6 +1587,17 @@ bool Screen_EoB::posWithinRect(int posX, int posY, int x1, int y1, int x2, int y
|
||||
return true;
|
||||
}
|
||||
|
||||
void Screen_EoB::setPagePixel16bit(int pageNum, int x, int y, uint16 color) {
|
||||
assert(pageNum < SCREEN_PAGE_NUM);
|
||||
assert(x >= 0 && x < SCREEN_W && y >= 0 && y < SCREEN_H);
|
||||
assert(_bytesPerPixel == 2);
|
||||
|
||||
if (pageNum == 0 || pageNum == 1)
|
||||
addDirtyRect(x, y, 1, 1);
|
||||
|
||||
((uint16*)_pagePtrs[pageNum])[y * SCREEN_W + x] = color;
|
||||
}
|
||||
|
||||
void Screen_EoB::generateEGADitheringTable(const Palette &pal) {
|
||||
assert(_egaDitheringTable);
|
||||
const uint8 *src = pal.getData();
|
||||
@ -1795,6 +1910,66 @@ void OldDOSFont::unload() {
|
||||
_bitmapOffsets = 0;
|
||||
}
|
||||
|
||||
SJISFontLarge::SJISFontLarge(Graphics::FontSJIS *font) : SJISFont(font, 0, false, false, false, 0) {
|
||||
_sjisWidth = _font->getMaxFontWidth();
|
||||
_fontHeight = _font->getFontHeight();
|
||||
_asciiWidth = _font->getCharWidth('a');
|
||||
}
|
||||
|
||||
void SJISFontLarge::drawChar(uint16 c, byte *dst, int pitch, int) const {
|
||||
_font->drawChar(dst, c, 320, 1, _colorMap[1], _colorMap[0], 320, 200);
|
||||
}
|
||||
|
||||
SJISFont12x12::SJISFont12x12(const uint16 *searchTable) : _height(6), _width(6), _data(0) {
|
||||
assert(searchTable);
|
||||
for (int i = 0; i < 148; i++)
|
||||
_searchTable[searchTable[i]] = i + 1;
|
||||
}
|
||||
|
||||
bool SJISFont12x12::load(Common::SeekableReadStream &file) {
|
||||
delete[] _data;
|
||||
int size = 148 * 24;
|
||||
if (file.size() < size)
|
||||
return false;
|
||||
|
||||
_data = new uint8[size];
|
||||
file.read(_data, size);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SJISFont12x12::unload() {
|
||||
delete[] _data;
|
||||
_data = 0;
|
||||
_searchTable.clear();
|
||||
}
|
||||
|
||||
void SJISFont12x12::drawChar(uint16 c, byte *dst, int pitch, int) const {
|
||||
int offs = _searchTable[c];
|
||||
if (!offs)
|
||||
return;
|
||||
|
||||
const uint8 *src = _data + (offs - 1) * 24;
|
||||
uint8 color1 = _colorMap[1];
|
||||
|
||||
int bt = 0;
|
||||
uint16 chr = 0;
|
||||
|
||||
for (int i = 0; i < 192; ++i) {
|
||||
if (!bt) {
|
||||
chr = *src++;
|
||||
bt = 8;
|
||||
}
|
||||
if (chr & 0x80)
|
||||
*dst = color1;
|
||||
dst++;
|
||||
if (--bt)
|
||||
chr <<= 1;
|
||||
else if (i & 8)
|
||||
dst += (pitch - 16);
|
||||
}
|
||||
}
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
||||
#endif // ENABLE_EOB
|
||||
|
@ -82,8 +82,13 @@ public:
|
||||
const uint16 *getCGADitheringTable(int index);
|
||||
const uint8 *getEGADitheringTable();
|
||||
|
||||
bool loadFont(FontId fontId, const char *filename);
|
||||
|
||||
// FM-Towns specific
|
||||
void decodeSHP(const uint8 *data, int dstPage);
|
||||
void convertToHiColor(int page);
|
||||
void shadeRect(int x1, int y1, int x2, int y2, int shadingLevel);
|
||||
|
||||
private:
|
||||
void updateDirtyRects();
|
||||
void ditherRect(const uint8 *src, uint8 *dst, int dstPitch, int srcW, int srcH, int colorKey = -1);
|
||||
@ -93,13 +98,15 @@ private:
|
||||
void scaleShapeProcessLine4Bit(uint8 *&dst, const uint8 *&src);
|
||||
bool posWithinRect(int posX, int posY, int x1, int y1, int x2, int y2);
|
||||
|
||||
void setPagePixel16bit(int pageNum, int x, int y, uint16 color);
|
||||
|
||||
void generateEGADitheringTable(const Palette &pal);
|
||||
void generateCGADitheringTables(const uint8 *mappingData);
|
||||
|
||||
int _dsDiv, _dsRem, _dsScaleTrans;
|
||||
uint8 *_cgaScaleTable;
|
||||
int16 _gfxX, _gfxY;
|
||||
uint8 _gfxCol;
|
||||
uint16 _gfxCol;
|
||||
const uint8 *_gfxMaxY;
|
||||
|
||||
int16 _dsX1, _dsX2, _dsY1, _dsY2;
|
||||
@ -109,6 +116,7 @@ private:
|
||||
uint8 _shapeOverlay[16];
|
||||
|
||||
uint8 *_dsTempPage;
|
||||
uint8 *_shpBuffer;
|
||||
uint8 *_convertHiColorBuffer;
|
||||
|
||||
uint16 *_cgaDitheringTables[2];
|
||||
@ -122,6 +130,44 @@ private:
|
||||
static const int _screenDimTableCount;
|
||||
};
|
||||
|
||||
/**
|
||||
* SJIS Font variant used in the intro and outro of EOB II FM-Towns. It appears twice as large, since it is not rendered on the hires overlay pages
|
||||
*/
|
||||
class SJISFontLarge : public SJISFont {
|
||||
public:
|
||||
SJISFontLarge(Graphics::FontSJIS *font);
|
||||
virtual ~SJISFontLarge() { unload(); }
|
||||
|
||||
virtual bool usesOverlay() const { return false; }
|
||||
virtual void drawChar(uint16 c, byte *dst, int pitch, int) const;
|
||||
};
|
||||
|
||||
/**
|
||||
* 12 x 12 SJIS font for EOB II FM-Towns. The data for this font comes from a file, not from the font rom.
|
||||
*/
|
||||
class SJISFont12x12 : public Font {
|
||||
public:
|
||||
SJISFont12x12(const uint16 *searchTable);
|
||||
virtual ~SJISFont12x12() { unload(); }
|
||||
|
||||
virtual bool load(Common::SeekableReadStream &file);
|
||||
virtual bool usesOverlay() const { return true; }
|
||||
virtual int getHeight() const { return _height; }
|
||||
virtual int getWidth() const { return _width; }
|
||||
virtual int getCharWidth(uint16 c) const { return _width; }
|
||||
virtual void setColorMap(const uint8 *src) { _colorMap = src; }
|
||||
virtual void drawChar(uint16 c, byte *dst, int pitch, int) const;
|
||||
|
||||
private:
|
||||
void unload();
|
||||
|
||||
uint8 *_data;
|
||||
Common::HashMap<uint16, uint8> _searchTable;
|
||||
|
||||
const uint8 *_colorMap;
|
||||
const int _height, _width;
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
||||
#endif // ENABLE_EOB
|
||||
|
@ -1495,6 +1495,7 @@ int EoBInfProcessor::oeob_sequence(int8 *data) {
|
||||
break;
|
||||
|
||||
case -1:
|
||||
if (_vm->gameFlags().platform == Common::kPlatformDOS)
|
||||
_vm->_runFlag = _vm->checkPassword();
|
||||
break;
|
||||
|
||||
|
@ -41,18 +41,7 @@ public:
|
||||
kFinale
|
||||
};
|
||||
|
||||
struct Config {
|
||||
Config(Mode m, const char *const *str, const char *const *cps, const char *const *pal, const DarkMoonShapeDef **shp, const DarkMoonAnimCommand **anim, bool paletteFading) : mode(m), strings(str), cpsFiles(cps), palFiles(pal), shapeDefs(shp), animData(anim), palFading(paletteFading) {}
|
||||
Mode mode;
|
||||
const char *const *strings;
|
||||
const char *const *cpsFiles;
|
||||
const char *const *palFiles;
|
||||
const DarkMoonShapeDef **shapeDefs;
|
||||
const DarkMoonAnimCommand **animData;
|
||||
bool palFading;
|
||||
};
|
||||
|
||||
DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *vm, Screen_EoB *screen, const Config *config);
|
||||
DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *vm, Screen_EoB *screen, Mode mode);
|
||||
~DarkmoonSequenceHelper();
|
||||
|
||||
void loadScene(int index, int pageNum);
|
||||
@ -79,9 +68,28 @@ private:
|
||||
OSystem *_system;
|
||||
DarkMoonEngine *_vm;
|
||||
Screen_EoB *_screen;
|
||||
|
||||
struct Config {
|
||||
Config(const char *const *str, const char *const *cpsfiles, const uint8 **cpsdata, const char *const *pal, const DarkMoonShapeDef **shp, const DarkMoonAnimCommand **anim, bool loadScenePalette, bool paletteFading, bool animCmdRestorePalette, bool shapeBackgroundFading, int animPalOffset, int animType1ShapeDim, bool animCmd5SetPalette, int animCmd5ExtraPage) : strings(str), cpsFiles(cpsfiles), cpsData(cpsdata), palFiles(pal), shapeDefs(shp), animData(anim), loadScenePal(loadScenePalette), palFading(paletteFading), animCmdRestorePal(animCmdRestorePalette), shpBackgroundFading(shapeBackgroundFading), animPalOffs(animPalOffset), animCmd1ShapeFrame(animType1ShapeDim), animCmd5SetPal(animCmd5SetPalette), animCmd5AltPage(animCmd5ExtraPage) {}
|
||||
const char *const *strings;
|
||||
const char *const *cpsFiles;
|
||||
const uint8 **cpsData;
|
||||
const char *const *palFiles;
|
||||
const DarkMoonShapeDef **shapeDefs;
|
||||
const DarkMoonAnimCommand **animData;
|
||||
bool loadScenePal;
|
||||
bool palFading;
|
||||
bool animCmdRestorePal;
|
||||
bool shpBackgroundFading;
|
||||
int animPalOffs;
|
||||
int animCmd1ShapeFrame;
|
||||
bool animCmd5SetPal;
|
||||
int animCmd5AltPage;
|
||||
};
|
||||
|
||||
const Config *_config;
|
||||
|
||||
Palette *_palettes[12];
|
||||
Palette *_palettes[13];
|
||||
uint8 *_fadingTables[7];
|
||||
|
||||
const uint8 **_shapes;
|
||||
@ -89,13 +97,22 @@ private:
|
||||
uint32 _fadePalTimer;
|
||||
int _fadePalRate;
|
||||
int _fadePalIndex;
|
||||
|
||||
Screen::FontId _prevFont;
|
||||
|
||||
static const char *const _palFilesIntroVGA[];
|
||||
static const char *const _palFilesIntroEGA[];
|
||||
static const char *const _palFilesFinaleVGA[];
|
||||
static const char *const _palFilesFinaleEGA[];
|
||||
};
|
||||
|
||||
int DarkMoonEngine::mainMenu() {
|
||||
int menuChoice = _menuChoiceInit;
|
||||
_menuChoiceInit = 0;
|
||||
|
||||
_sound->selectAudioResourceSet(kMusicIntro);
|
||||
_sound->loadSoundFile("INTRO");
|
||||
|
||||
Screen::FontId of = _screen->_currentFont;
|
||||
int op = 0;
|
||||
Common::SeekableReadStream *s = 0;
|
||||
@ -103,6 +120,11 @@ int DarkMoonEngine::mainMenu() {
|
||||
while (menuChoice >= 0 && !shouldQuit()) {
|
||||
switch (menuChoice) {
|
||||
case 0: {
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
_screen->loadPalette("MENU.PAL", _screen->getPalette(0));
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
_screen->loadEoBBitmap("MENU", 0, 3, 3, 2);
|
||||
} else {
|
||||
s = _res->createReadStream("XENU.CPS");
|
||||
if (s) {
|
||||
s->read(_screen->getPalette(0).getData(), 768);
|
||||
@ -114,6 +136,7 @@ int DarkMoonEngine::mainMenu() {
|
||||
|
||||
if (_configRenderMode == Common::kRenderEGA)
|
||||
_screen->loadPalette("MENU.EGA", _screen->getPalette(0));
|
||||
}
|
||||
|
||||
_screen->setScreenPalette(_screen->getPalette(0));
|
||||
_screen->convertPage(3, 2, 0);
|
||||
@ -121,10 +144,11 @@ int DarkMoonEngine::mainMenu() {
|
||||
of = _screen->setFont(Screen::FID_6_FNT);
|
||||
op = _screen->setCurPage(2);
|
||||
Common::String versionString(Common::String::format("ScummVM %s", gScummVMVersion));
|
||||
_screen->printText(versionString.c_str(), 267 - versionString.size() * 6, 160, 13, 0);
|
||||
_screen->printText(versionString.c_str(), 267 - versionString.size() * 6, _flags.platform == Common::kPlatformFMTowns ? 152 : 160, 13, 0);
|
||||
_screen->setFont(of);
|
||||
_screen->_curPage = op;
|
||||
_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->shadeRect(78, 99, 249, 141, 4);
|
||||
_screen->updateScreen();
|
||||
_allowImport = true;
|
||||
menuChoice = mainMenuLoop();
|
||||
@ -172,12 +196,30 @@ int DarkMoonEngine::mainMenuLoop() {
|
||||
sel = _gui->simpleMenu_process(6, _mainMenuStrings, 0, -1, 0);
|
||||
} while ((sel < 0 || sel > 5) && !shouldQuit());
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns && sel == 2) {
|
||||
townsUtilitiesMenu();
|
||||
sel = -1;
|
||||
}
|
||||
|
||||
return sel + 1;
|
||||
}
|
||||
|
||||
void DarkMoonEngine::townsUtilitiesMenu() {
|
||||
_screen->copyRegion(78, 99, 78, 99, 172, 43, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
int sel = -1;
|
||||
do {
|
||||
_gui->simpleMenu_setup(8, 0, _utilMenuStrings, -1, 0, 0);
|
||||
while (sel == -1 && !shouldQuit())
|
||||
sel = _gui->simpleMenu_process(8, _utilMenuStrings, 0, -1, 0);
|
||||
if (sel == 0) {
|
||||
_config2431 ^= true;
|
||||
sel = -1;
|
||||
}
|
||||
} while ((sel < 0 || sel > 1) && !shouldQuit());
|
||||
}
|
||||
|
||||
void DarkMoonEngine::seq_playIntro() {
|
||||
DarkmoonSequenceHelper::Config config(DarkmoonSequenceHelper::kIntro, _introStrings, _cpsFilesIntro, _configRenderMode == Common::kRenderEGA ? _palFilesIntroEGA : _palFilesIntroVGA, _shapesIntro, _animIntro, false);
|
||||
DarkmoonSequenceHelper sq(_system, this, _screen, &config);
|
||||
DarkmoonSequenceHelper sq(_system, this, _screen, DarkmoonSequenceHelper::kIntro);
|
||||
|
||||
_screen->setCurPage(0);
|
||||
_screen->clearCurPage();
|
||||
@ -206,13 +248,13 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.animCommand(6, 18);
|
||||
sq.animCommand(0);
|
||||
|
||||
sq.waitForSongNotifier(1);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 229 : 1);
|
||||
|
||||
sq.animCommand(_configRenderMode == Common::kRenderEGA ? 12 : 11);
|
||||
sq.animCommand(7, 6);
|
||||
sq.animCommand(2, 6);
|
||||
|
||||
sq.waitForSongNotifier(2);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 447 : 2);
|
||||
|
||||
sq.animCommand(_configRenderMode == Common::kRenderEGA ? 39 : 38);
|
||||
sq.animCommand(3);
|
||||
@ -221,7 +263,7 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.animCommand(0, 6);
|
||||
sq.animCommand(2);
|
||||
|
||||
sq.waitForSongNotifier(3);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 670 : 3);
|
||||
|
||||
_screen->setClearScreenDim(17);
|
||||
_screen->setCurPage(2);
|
||||
@ -249,7 +291,7 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.printText(3, 16); // The message was urgent.
|
||||
|
||||
sq.loadScene(1, 2);
|
||||
sq.waitForSongNotifier(4);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 1380 : 4);
|
||||
|
||||
// intro scroll
|
||||
if (!skipFlag() && !shouldQuit()) {
|
||||
@ -310,7 +352,7 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.animCommand(14);
|
||||
sq.loadScene(5, 2);
|
||||
|
||||
sq.waitForSongNotifier(5);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 2037 : 5);
|
||||
|
||||
sq.fadeText();
|
||||
_screen->clearCurPage();
|
||||
@ -365,7 +407,7 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.loadScene(9, 2);
|
||||
sq.fadeText();
|
||||
|
||||
sq.waitForSongNotifier(6);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 3000 : 6);
|
||||
|
||||
sq.update(2);
|
||||
sq.animCommand(34);
|
||||
@ -470,12 +512,12 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
sq.fadeText();
|
||||
sq.animCommand(29);
|
||||
|
||||
sq.waitForSongNotifier(7);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 4475 : 7);
|
||||
|
||||
sq.animCommand(30);
|
||||
sq.animCommand(31);
|
||||
|
||||
sq.waitForSongNotifier(8, true);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 4825 : 8, true);
|
||||
|
||||
if (skipFlag() || shouldQuit()) {
|
||||
snd_fadeOut();
|
||||
@ -496,17 +538,16 @@ void DarkMoonEngine::seq_playIntro() {
|
||||
}
|
||||
|
||||
void DarkMoonEngine::seq_playFinale() {
|
||||
DarkmoonSequenceHelper::Config config(DarkmoonSequenceHelper::kFinale, _finaleStrings, _cpsFilesFinale, _configRenderMode == Common::kRenderEGA ? _palFilesFinaleEGA : _palFilesFinaleVGA, _shapesFinale, _animFinale, true);
|
||||
DarkmoonSequenceHelper sq(_system, this, _screen, &config);
|
||||
DarkmoonSequenceHelper sq(_system, this, _screen, DarkmoonSequenceHelper::kFinale);
|
||||
|
||||
_screen->setCurPage(0);
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
|
||||
_sound->loadSoundFile("FINALE1");
|
||||
_sound->loadSoundFile(_flags.platform == Common::kPlatformFMTowns ? "FINALE" : "FINALE1");
|
||||
snd_stopSound();
|
||||
sq.delay(3);
|
||||
|
||||
_screen->clearCurPage();
|
||||
_screen->clearPage(2);
|
||||
_screen->updateScreen();
|
||||
|
||||
sq.loadScene(0, 2);
|
||||
@ -532,7 +573,7 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
sq.fadeText();
|
||||
sq.animCommand(2);
|
||||
|
||||
sq.waitForSongNotifier(1);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 475 : 1);
|
||||
|
||||
sq.printText(1, 10); // Suddenly, your friend Khelben appears
|
||||
sq.animCommand(4);
|
||||
@ -624,7 +665,7 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
|
||||
sq.loadScene(4, 2);
|
||||
|
||||
sq.waitForSongNotifier(2);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 2030 : 2);
|
||||
|
||||
_screen->clearCurPage();
|
||||
sq.update(2);
|
||||
@ -637,7 +678,7 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
sq.delay(90);
|
||||
sq.fadeText();
|
||||
|
||||
sq.waitForSongNotifier(3);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 2200 : 3);
|
||||
|
||||
if (!skipFlag() && !shouldQuit())
|
||||
snd_playSoundEffect(7);
|
||||
@ -669,7 +710,7 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
sq.delay(72);
|
||||
sq.fadeText();
|
||||
|
||||
sq.waitForSongNotifier(4);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 2752 : 4);
|
||||
|
||||
if (!skipFlag() && !shouldQuit())
|
||||
snd_playSoundEffect(7);
|
||||
@ -703,7 +744,7 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
sq.fadeText();
|
||||
sq.loadScene(12, 2);
|
||||
|
||||
sq.waitForSongNotifier(5);
|
||||
sq.waitForSongNotifier(_flags.platform == Common::kPlatformFMTowns ? 3475 : 5);
|
||||
|
||||
if (!skipFlag() && !shouldQuit())
|
||||
snd_playSoundEffect(6);
|
||||
@ -782,16 +823,24 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
|
||||
sq.loadScene(10, 2);
|
||||
sq.loadScene(9, 2);
|
||||
|
||||
snd_stopSound();
|
||||
sq.delay(3);
|
||||
|
||||
if (_flags.platform != Common::kPlatformFMTowns)
|
||||
_sound->loadSoundFile("FINALE2");
|
||||
|
||||
sq.delay(18);
|
||||
if (!skipFlag() && !shouldQuit())
|
||||
snd_playSong(1);
|
||||
snd_playSong(_flags.platform == Common::kPlatformFMTowns ? 16 : 1);
|
||||
|
||||
seq_playCredits(&sq, _creditsData, 18, 2, 6, 2);
|
||||
int temp = 0;
|
||||
const uint8 *creditsData = (_flags.platform == Common::kPlatformFMTowns) ? _res->fileData("CREDITS.TXT", 0) : _staticres->loadRawData(kEoB2CreditsData, temp);
|
||||
|
||||
seq_playCredits(&sq, creditsData, 18, 2, 6, 2);
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns)
|
||||
delete[] creditsData;
|
||||
|
||||
sq.delay(90);
|
||||
|
||||
@ -817,6 +866,9 @@ void DarkMoonEngine::seq_playFinale() {
|
||||
|
||||
_screen->copyRegion(0, 0, 0, 0, 320, 200, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns)
|
||||
sq.copyPalette(12, 0);
|
||||
|
||||
sq.setPalette(9);
|
||||
sq.fadePalette(0, 18);
|
||||
|
||||
@ -831,7 +883,9 @@ void DarkMoonEngine::seq_playCredits(DarkmoonSequenceHelper *sq, const uint8 *da
|
||||
if (!data)
|
||||
return;
|
||||
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
_screen->setScreenDim(sd);
|
||||
|
||||
const ScreenDim *dm = _screen->_curDim;
|
||||
|
||||
_screen->copyRegion(dm->sx << 3, dm->sy, dm->sx << 3, dm->sy, dm->w << 3, dm->h, 0, backupPage, Screen::CR_NO_P_CHECK);
|
||||
@ -955,8 +1009,74 @@ void DarkMoonEngine::seq_playCredits(DarkmoonSequenceHelper *sq, const uint8 *da
|
||||
delete[] items[i].str;
|
||||
}
|
||||
|
||||
DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *vm, Screen_EoB *screen, const Config *config) :
|
||||
_system(system), _vm(vm), _screen(screen), _config(config) {
|
||||
DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *vm, Screen_EoB *screen, Mode mode) :
|
||||
_system(system), _vm(vm), _screen(screen) {
|
||||
|
||||
int size = 0;
|
||||
|
||||
if (mode == kIntro) {
|
||||
_config = new Config(
|
||||
_vm->staticres()->loadStrings(kEoB2IntroStrings, size),
|
||||
_vm->staticres()->loadStrings(kEoB2IntroCPSFiles, size),
|
||||
new const uint8*[13],
|
||||
_vm->_configRenderMode == Common::kRenderEGA ? _palFilesIntroEGA : _palFilesIntroVGA,
|
||||
new const DarkMoonShapeDef*[13],
|
||||
new const DarkMoonAnimCommand *[44],
|
||||
false,
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
0,
|
||||
0,
|
||||
false,
|
||||
2
|
||||
);
|
||||
|
||||
for (int i = 0; i < 44; i++)
|
||||
_config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2IntroAnimData00 + i, size);
|
||||
|
||||
for (int i = 0; i < 13; i++)
|
||||
_config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2IntroCpsDataStreet1 + i, size);
|
||||
|
||||
memset(_config->shapeDefs, 0, 13 * sizeof(DarkMoonShapeDef*));
|
||||
_config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes00, size);
|
||||
_config->shapeDefs[1] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes01, size);
|
||||
_config->shapeDefs[4] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes04, size);
|
||||
_config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2IntroShapes07, size);
|
||||
|
||||
} else {
|
||||
_config = new Config(
|
||||
_vm->staticres()->loadStrings(kEoB2FinaleStrings, size),
|
||||
_vm->staticres()->loadStrings(kEoB2FinaleCPSFiles, size),
|
||||
new const uint8*[13],
|
||||
_vm->_configRenderMode == Common::kRenderEGA ? _palFilesFinaleEGA : _palFilesFinaleVGA,
|
||||
new const DarkMoonShapeDef*[13],
|
||||
new const DarkMoonAnimCommand *[21],
|
||||
true,
|
||||
true,
|
||||
false,
|
||||
false,
|
||||
1,
|
||||
18,
|
||||
true,
|
||||
6
|
||||
);
|
||||
|
||||
for (int i = 0; i < 21; i++)
|
||||
_config->animData[i] = _vm->staticres()->loadEoB2SeqData(kEoB2FinaleAnimData00 + i, size);
|
||||
|
||||
for (int i = 0; i < 13; i++)
|
||||
_config->cpsData[i] = _vm->staticres()->loadRawData(kEoB2FinaleCpsDataDragon1 + i, size);
|
||||
|
||||
memset(_config->shapeDefs, 0, 13 * sizeof(DarkMoonShapeDef*));
|
||||
_config->shapeDefs[0] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes00, size);
|
||||
_config->shapeDefs[3] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes03, size);
|
||||
_config->shapeDefs[7] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes07, size);
|
||||
_config->shapeDefs[9] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes09, size);
|
||||
_config->shapeDefs[10] = _vm->staticres()->loadEoB2ShapeData(kEoB2FinaleShapes10, size);
|
||||
}
|
||||
|
||||
_screen->enableHiColorMode(false);
|
||||
|
||||
for (int i = 0; _config->palFiles[i]; i++) {
|
||||
if (i < 4)
|
||||
@ -966,13 +1086,16 @@ DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *
|
||||
_screen->loadPalette(_config->palFiles[i], *_palettes[i]);
|
||||
}
|
||||
|
||||
_palettes[9] = new Palette(256);
|
||||
for (int i = 9; i < 13; ++i)
|
||||
_palettes[i] = new Palette(256);
|
||||
|
||||
_palettes[9]->fill(0, 256, 0);
|
||||
_palettes[10] = new Palette(256);
|
||||
_palettes[10]->fill(0, 256, 63);
|
||||
_palettes[11] = new Palette(256);
|
||||
_palettes[11]->fill(0, 256, 0);
|
||||
|
||||
if (_vm->gameFlags().platform == Common::kPlatformFMTowns)
|
||||
_screen->loadPalette("PALETTE.COL", *_palettes[12]);
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
_fadingTables[i] = 0;
|
||||
|
||||
@ -1001,7 +1124,7 @@ DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *
|
||||
_fadePalRate = 0;
|
||||
|
||||
_screen->setScreenPalette(*_palettes[0]);
|
||||
_screen->setFont(Screen::FID_8_FNT);
|
||||
_prevFont = _screen->setFont(_vm->gameFlags().platform == Common::kPlatformFMTowns ? Screen::FID_SJIS_LARGE_FNT : Screen::FID_8_FNT);
|
||||
_screen->hideMouse();
|
||||
|
||||
_vm->delay(150);
|
||||
@ -1012,9 +1135,8 @@ DarkmoonSequenceHelper::DarkmoonSequenceHelper(OSystem *system, DarkMoonEngine *
|
||||
DarkmoonSequenceHelper::~DarkmoonSequenceHelper() {
|
||||
for (int i = 4; _config->palFiles[i]; i++)
|
||||
delete _palettes[i];
|
||||
delete _palettes[9];
|
||||
delete _palettes[10];
|
||||
delete _palettes[11];
|
||||
for (int i = 9; i < 13; ++i)
|
||||
delete _palettes[i];
|
||||
|
||||
for (int i = 0; i < 7; i++)
|
||||
delete[] _fadingTables[i];
|
||||
@ -1023,7 +1145,14 @@ DarkmoonSequenceHelper::~DarkmoonSequenceHelper() {
|
||||
delete[] _shapes[i];
|
||||
delete[] _shapes;
|
||||
|
||||
delete[] _config->animData;
|
||||
delete[] _config->shapeDefs;
|
||||
delete[] _config->cpsData;
|
||||
delete _config;
|
||||
|
||||
_screen->enableHiColorMode(true);
|
||||
_screen->clearCurPage();
|
||||
_screen->setFont(_prevFont);
|
||||
_screen->showMouse();
|
||||
_screen->updateScreen();
|
||||
|
||||
@ -1033,17 +1162,23 @@ DarkmoonSequenceHelper::~DarkmoonSequenceHelper() {
|
||||
}
|
||||
|
||||
void DarkmoonSequenceHelper::loadScene(int index, int pageNum) {
|
||||
char file[13];
|
||||
strcpy(file, _config->cpsFiles[index]);
|
||||
|
||||
Common::SeekableReadStream *s = _vm->resource()->createReadStream(file);
|
||||
char file[13] = "";
|
||||
Common::SeekableReadStream *s = 0;
|
||||
uint32 chunkID = 0;
|
||||
|
||||
if (_config->cpsFiles) {
|
||||
strcpy(file, _config->cpsFiles[index]);
|
||||
s = _vm->resource()->createReadStream(file);
|
||||
}
|
||||
|
||||
if (s) {
|
||||
chunkID = s->readUint32LE();
|
||||
s->seek(0);
|
||||
}
|
||||
|
||||
if (s && chunkID == MKTAG('F', 'O', 'R', 'M')) {
|
||||
if (_config->cpsData[index]) {
|
||||
_screen->decodeSHP(_config->cpsData[index], pageNum);
|
||||
} else if (s && chunkID == MKTAG('F', 'O', 'R', 'M')) {
|
||||
// The original code also handles files with FORM chunks and ILBM and PBM sub chunks. This will probably be necessary for Amiga versions.
|
||||
// The DOS versions do not need this, but still have the code for it. We error out for now.
|
||||
error("DarkmoonSequenceHelper::loadScene(): CPS file loading failure in scene %d - unhandled FORM chunk encountered", index);
|
||||
@ -1059,7 +1194,7 @@ void DarkmoonSequenceHelper::loadScene(int index, int pageNum) {
|
||||
if (!s)
|
||||
error("DarkmoonSequenceHelper::loadScene(): CPS file loading failure in scene %d", index);
|
||||
|
||||
if (_config->mode == kFinale)
|
||||
if (_config->loadScenePal)
|
||||
s->read(_palettes[0]->getData(), 768);
|
||||
else
|
||||
s->seek(768);
|
||||
@ -1096,8 +1231,10 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
uint32 end = 0;
|
||||
|
||||
for (const DarkMoonAnimCommand *s = _config->animData[index]; s->command != 0xFF && !_vm->skipFlag() && !_vm->shouldQuit(); s++) {
|
||||
int palIndex = _config->mode == kFinale ? (s->pal + 1) : s->pal;
|
||||
int palIndex = s->pal + _config->animPalOffs;
|
||||
int x = s->x1;
|
||||
if (x >= Screen::SCREEN_W)
|
||||
x >>= 1;
|
||||
int y = s->y1;
|
||||
int x2 = 0;
|
||||
uint16 shapeW = 0;
|
||||
@ -1109,7 +1246,7 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && s->pal)
|
||||
setPaletteWithoutTextColor(palIndex);
|
||||
delay(s->delay);
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && _config->mode == kIntro && s->pal)
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && _config->animCmdRestorePal && s->pal)
|
||||
setPaletteWithoutTextColor(0);
|
||||
break;
|
||||
|
||||
@ -1118,7 +1255,7 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
shapeW = _shapes[s->obj][2];
|
||||
shapeH = _shapes[s->obj][3];
|
||||
|
||||
if (_config->mode == kFinale) {
|
||||
if (_config->animCmd1ShapeFrame == 18) {
|
||||
_screen->setScreenDim(18);
|
||||
x -= (_screen->_curDim->sx << 3);
|
||||
y -= _screen->_curDim->sy;
|
||||
@ -1128,7 +1265,7 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
x2 = x;
|
||||
}
|
||||
|
||||
_screen->drawShape(0, _shapes[s->obj], x, y, _config->mode == kIntro ? 0 : 18);
|
||||
_screen->drawShape(0, _shapes[s->obj], x, y, _config->animCmd1ShapeFrame);
|
||||
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && s->pal)
|
||||
setPaletteWithoutTextColor(palIndex);
|
||||
@ -1137,7 +1274,7 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
|
||||
delay(s->delay);
|
||||
|
||||
if (_config->mode == kIntro) {
|
||||
if (_config->animCmd1ShapeFrame == 0) {
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && s->pal)
|
||||
setPaletteWithoutTextColor(0);
|
||||
_screen->copyRegion(x - 8, y - 8, x, y, (shapeW + 1) << 3, shapeH, 2, 0, Screen::CR_NO_P_CHECK);
|
||||
@ -1159,14 +1296,14 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
|
||||
delay(s->delay);
|
||||
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && _config->mode == kIntro && s->pal)
|
||||
if (_vm->_configRenderMode != Common::kRenderEGA && _config->animCmdRestorePal && s->pal)
|
||||
setPaletteWithoutTextColor(0);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
case 4:
|
||||
// fade shape in or out or restore background
|
||||
if (_config->mode == kFinale)
|
||||
if (!_config->shpBackgroundFading)
|
||||
break;
|
||||
|
||||
if (_vm->_configRenderMode == Common::kRenderEGA) {
|
||||
@ -1201,10 +1338,10 @@ void DarkmoonSequenceHelper::animCommand(int index, int del) {
|
||||
|
||||
case 5:
|
||||
// copy region
|
||||
if (_config->mode == kFinale && s->pal)
|
||||
if (_config->animCmd5SetPal && s->pal)
|
||||
setPaletteWithoutTextColor(palIndex);
|
||||
|
||||
_screen->copyRegion(s->x2 << 3, s->y2, s->x1, s->y1, s->w << 3, s->h, (s->obj && _config->mode == kFinale) ? 6 : 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->copyRegion(s->x2 << 3, s->y2, s->x1, s->y1, s->w << 3, s->h, s->obj ? _config->animCmd5AltPage : 2, 0, Screen::CR_NO_P_CHECK);
|
||||
_screen->updateScreen();
|
||||
delay(s->delay);
|
||||
break;
|
||||
@ -1250,8 +1387,9 @@ void DarkmoonSequenceHelper::printText(int index, int color) {
|
||||
strcpy(str, _config->strings[index]);
|
||||
|
||||
const ScreenDim *dm = _screen->_curDim;
|
||||
int fontHeight = _screen->getFontHeight() + 1;
|
||||
|
||||
for (int yOffs = 0; *str; yOffs += 9) {
|
||||
for (int yOffs = 0; *str; yOffs += fontHeight) {
|
||||
char *cr = strchr(str, 13);
|
||||
|
||||
if (cr)
|
||||
@ -1383,8 +1521,52 @@ void DarkmoonSequenceHelper::waitForSongNotifier(int index, bool introUpdateAnim
|
||||
}
|
||||
}
|
||||
|
||||
const char *const DarkmoonSequenceHelper::_palFilesIntroVGA[] = {
|
||||
"PALETTE1.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *const DarkmoonSequenceHelper::_palFilesIntroEGA[] = {
|
||||
"PALETTE0.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *const DarkmoonSequenceHelper::_palFilesFinaleVGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
"FINALE_2.PAL",
|
||||
"FINALE_3.PAL",
|
||||
"FINALE_4.PAL",
|
||||
"FINALE_5.PAL",
|
||||
"FINALE_6.PAL",
|
||||
"FINALE_7.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *const DarkmoonSequenceHelper::_palFilesFinaleEGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
"FINALE_2.PAL",
|
||||
"FINALE_3.PAL",
|
||||
"FINALE_4.PAL",
|
||||
"FINALE_5.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
void DarkMoonEngine::seq_nightmare() {
|
||||
Screen::FontId of = _screen->setFont(Screen::FID_6_FNT);
|
||||
if (_flags.lang == Common::JA_JPN)
|
||||
_screen->clearCurDim();
|
||||
_screen->copyRegion(0, 0, 0, 120, 176, 24, 12, 2, Screen::CR_NO_P_CHECK);
|
||||
|
||||
initDialogueSequence();
|
||||
@ -1416,6 +1598,7 @@ void DarkMoonEngine::seq_kheldran() {
|
||||
gui_drawDialogueBox();
|
||||
|
||||
static const char file[] = "KHELDRAN";
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_txt->printDialogueText(_kheldranStrings[0]);
|
||||
drawSequenceBitmap(file, 0, 0, 0, 0);
|
||||
_txt->printDialogueText(20, _moreStrings[0]);
|
||||
|
@ -66,6 +66,13 @@ struct SoundResourceInfo_TownsPC98V2 {
|
||||
uint cdaTableSize;
|
||||
};
|
||||
|
||||
struct SoundResourceInfo_TownsEoB {
|
||||
SoundResourceInfo_TownsEoB(const uint8 *pcmdata, uint dataSize, int pcmvolume) : pcmData(pcmdata), pcmDataSize(dataSize), pcmVolume(pcmvolume) {}
|
||||
const uint8 *pcmData;
|
||||
uint pcmDataSize;
|
||||
int pcmVolume;
|
||||
};
|
||||
|
||||
/**
|
||||
* Analog audio output device API for Kyrandia games.
|
||||
* It contains functionality to play music tracks,
|
||||
|
@ -349,6 +349,59 @@ protected:
|
||||
int _tableSfxGame_Size;
|
||||
};
|
||||
|
||||
class SoundTowns_Darkmoon : public Sound, public TownsAudioInterfacePluginDriver {
|
||||
public:
|
||||
SoundTowns_Darkmoon(KyraEngine_v1 *vm, Audio::Mixer *mixer);
|
||||
virtual ~SoundTowns_Darkmoon();
|
||||
|
||||
virtual kType getMusicType() const { return kTowns; }
|
||||
|
||||
virtual bool init();
|
||||
|
||||
void timerCallback(int timerId);
|
||||
|
||||
virtual void initAudioResourceInfo(int set, void *info);
|
||||
virtual void selectAudioResourceSet(int set);
|
||||
virtual bool hasSoundFile(uint file) const;
|
||||
virtual void loadSoundFile(uint file) {}
|
||||
virtual void loadSoundFile(Common::String name);
|
||||
|
||||
virtual void playTrack(uint8 track);
|
||||
virtual void haltTrack();
|
||||
virtual bool isPlaying() const;
|
||||
|
||||
virtual void playSoundEffect(uint8 track, uint8 volume = 0xFF);
|
||||
virtual void stopAllSoundEffects();
|
||||
|
||||
virtual void beginFadeOut();
|
||||
|
||||
virtual void updateVolumeSettings();
|
||||
|
||||
virtual int checkTrigger();
|
||||
|
||||
virtual void resetTrigger();
|
||||
|
||||
private:
|
||||
struct SoundTableEntry {
|
||||
int8 type;
|
||||
int32 para1;
|
||||
int16 para2;
|
||||
} _soundTable[120];
|
||||
|
||||
uint8 _lastSfxChan;
|
||||
uint8 _lastEnvChan;
|
||||
uint8 *_pcmData;
|
||||
uint32 _pcmDataSize;
|
||||
uint8 _pcmVol;
|
||||
|
||||
int _timer;
|
||||
int _timerSwitch;
|
||||
|
||||
SoundResourceInfo_TownsEoB *_pcmResource[3];
|
||||
|
||||
TownsAudioInterface *_intf;
|
||||
};
|
||||
|
||||
} // End of namespace Kyra
|
||||
|
||||
#endif
|
||||
|
276
engines/kyra/sound_towns_darkmoon.cpp
Normal file
276
engines/kyra/sound_towns_darkmoon.cpp
Normal file
@ -0,0 +1,276 @@
|
||||
/* 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 "kyra/sound_intern.h"
|
||||
#include "kyra/resource.h"
|
||||
|
||||
#include "common/config-manager.h"
|
||||
#include "common/system.h"
|
||||
|
||||
#include "backends/audiocd/audiocd.h"
|
||||
|
||||
#include "audio/audiostream.h"
|
||||
#include "audio/decoders/raw.h"
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
SoundTowns_Darkmoon::SoundTowns_Darkmoon(KyraEngine_v1 *vm, Audio::Mixer *mixer) : Sound(vm, mixer) {
|
||||
_intf = new TownsAudioInterface(mixer, this, false);
|
||||
_pcmData = 0;
|
||||
_pcmVol = 0;
|
||||
_timer = 0;
|
||||
_timerSwitch = 0;
|
||||
memset(_pcmResource, 0, sizeof(_pcmResource));
|
||||
}
|
||||
|
||||
SoundTowns_Darkmoon::~SoundTowns_Darkmoon() {
|
||||
for (int i = 0; i < 3; i++)
|
||||
initAudioResourceInfo(i, 0);
|
||||
delete _intf;
|
||||
delete[] _pcmData;
|
||||
}
|
||||
|
||||
bool SoundTowns_Darkmoon::init() {
|
||||
if (!_intf->init())
|
||||
return false;
|
||||
|
||||
_intf->callback(21, 255, 1);
|
||||
_intf->callback(21, 0, 1);
|
||||
_intf->callback(22, 255, 221);
|
||||
|
||||
_intf->callback(70, 0x31);
|
||||
_intf->callback(33, 1);
|
||||
_intf->callback(8, 0x47, 127);
|
||||
_intf->callback(67, 1, 127, 127);
|
||||
|
||||
_lastSfxChan = 0x46;
|
||||
_lastEnvChan = 0x40;
|
||||
|
||||
updateVolumeSettings();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::timerCallback(int timerId) {
|
||||
switch (timerId) {
|
||||
case 1:
|
||||
_timerSwitch = (_timerSwitch + 1) % 4;
|
||||
if (!_timerSwitch)
|
||||
_timer++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::initAudioResourceInfo(int set, void *info) {
|
||||
delete _pcmResource[set];
|
||||
_pcmResource[set] = info ? new SoundResourceInfo_TownsEoB(*(SoundResourceInfo_TownsEoB*)info) : 0;
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::selectAudioResourceSet(int set) {
|
||||
delete[] _pcmData;
|
||||
|
||||
if (!_pcmResource[set] || !_pcmResource[kMusicIngame])
|
||||
return;
|
||||
|
||||
_pcmDataSize = _pcmResource[kMusicIngame]->pcmDataSize;
|
||||
_pcmData = new uint8[_pcmDataSize];
|
||||
_pcmVol = _pcmResource[set]->pcmVolume;
|
||||
memcpy(_pcmData, _pcmResource[kMusicIngame]->pcmData, _pcmDataSize);
|
||||
|
||||
if (set == kMusicIngame)
|
||||
return;
|
||||
|
||||
memcpy(_pcmData, _pcmResource[set]->pcmData, _pcmResource[set]->pcmDataSize);
|
||||
}
|
||||
|
||||
bool SoundTowns_Darkmoon::hasSoundFile(uint file) const {
|
||||
return true;
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::loadSoundFile(Common::String name) {
|
||||
Common::SeekableReadStream *s = _vm->resource()->createReadStream(Common::String::format("%s.SDT", name.c_str()));
|
||||
if (!s)
|
||||
error("Failed to load sound file '%s.SDT'", name.c_str());
|
||||
|
||||
for (int i = 0; i < 120; i++) {
|
||||
_soundTable[i].type = s->readSByte();
|
||||
_soundTable[i].para1 = s->readSint32LE();
|
||||
_soundTable[i].para2 = s->readSint16LE();
|
||||
}
|
||||
|
||||
delete s;
|
||||
|
||||
uint32 bytesLeft;
|
||||
uint8 *pmb = _vm->resource()->fileData(Common::String::format("%s.PMB", name.c_str()).c_str(), &bytesLeft);
|
||||
|
||||
_vm->delay(300);
|
||||
|
||||
if (pmb) {
|
||||
uint8 *src = pmb + 8;
|
||||
for (int i = 0; i < 32; i++)
|
||||
_intf->callback(5, 0x40, i, &src[i << 7]);
|
||||
|
||||
_intf->callback(35, -1);
|
||||
src += 0x1000;
|
||||
bytesLeft -= 0x1008;
|
||||
|
||||
while (bytesLeft) {
|
||||
_intf->callback(34, src);
|
||||
uint32 len = READ_LE_UINT16(&src[12]) + 32;
|
||||
src = src + len;
|
||||
bytesLeft -= len;
|
||||
}
|
||||
|
||||
delete[] pmb;
|
||||
} else {
|
||||
warning("Sound file '%s.PMB' not found.", name.c_str());
|
||||
// TODO
|
||||
}
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::playTrack(uint8 track) {
|
||||
if (track >= 120 || !_sfxEnabled)
|
||||
return;
|
||||
|
||||
uint8 *pcm = 0;
|
||||
|
||||
switch (_soundTable[track].type) {
|
||||
case -1:
|
||||
if (track == 0)
|
||||
haltTrack();
|
||||
else if (track == 2)
|
||||
beginFadeOut();
|
||||
break;
|
||||
|
||||
case 0:
|
||||
if (_soundTable[track].para1 == -1 || (uint32)_soundTable[track].para1 > _pcmDataSize)
|
||||
return;
|
||||
|
||||
pcm = _pcmData + _soundTable[track].para1;
|
||||
WRITE_LE_UINT16(&pcm[24], _soundTable[track].para2 * 98 / 1000);
|
||||
|
||||
_intf->callback(39, 0x47);
|
||||
_intf->callback(37, 0x47, 60, track == 11 ? 127 : _pcmVol, pcm);
|
||||
break;
|
||||
|
||||
case 2:
|
||||
resetTrigger();
|
||||
g_system->getAudioCDManager()->play(_soundTable[track].para1 - 1, 1, 0, 0);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
_lastSfxChan ^= 3;
|
||||
_intf->callback(39, _lastSfxChan);
|
||||
_intf->callback(4, _lastSfxChan, _soundTable[track].para1);
|
||||
_intf->callback(1, _lastSfxChan, _soundTable[track].para2, 127);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::haltTrack() {
|
||||
_intf->callback(39, 0x47);
|
||||
_intf->callback(39, 0x46);
|
||||
_intf->callback(39, 0x45);
|
||||
|
||||
g_system->getAudioCDManager()->stop();
|
||||
}
|
||||
|
||||
bool SoundTowns_Darkmoon::isPlaying() const {
|
||||
return g_system->getAudioCDManager()->isPlaying();
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::playSoundEffect(uint8 track, uint8 volume) {
|
||||
if (!_sfxEnabled)
|
||||
return;
|
||||
|
||||
if (volume == 255)
|
||||
return playTrack(track);
|
||||
|
||||
uint8 *pcm = 0;
|
||||
|
||||
switch (_soundTable[track].type) {
|
||||
case 0:
|
||||
if (_soundTable[track].para1 == -1 || (uint32)_soundTable[track].para1 > _pcmDataSize)
|
||||
return;
|
||||
|
||||
pcm = _pcmData + _soundTable[track].para1;
|
||||
WRITE_LE_UINT16(&pcm[24], _soundTable[track].para2 * 98 / 1000);
|
||||
|
||||
_intf->callback(39, 0x47);
|
||||
_intf->callback(37, 0x47, 60, volume, pcm);
|
||||
break;
|
||||
|
||||
case 3:
|
||||
_intf->callback(2, _lastEnvChan);
|
||||
_intf->callback(4, _lastEnvChan, _soundTable[track].para1);
|
||||
_intf->callback(1, _lastEnvChan, _soundTable[track].para2, volume);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (++_lastEnvChan == 0x43)
|
||||
_lastEnvChan = 0x40;
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::stopAllSoundEffects() {
|
||||
_intf->callback(39, 0x42);
|
||||
_intf->callback(39, 0x41);
|
||||
_intf->callback(39, 0x40);
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::beginFadeOut() {
|
||||
for (int vol = 127; vol >= 0; vol -= 2) {
|
||||
_intf->callback(67, 1, vol, vol);
|
||||
_vm->delay(16);
|
||||
}
|
||||
|
||||
_intf->callback(67, 1, 0, 0);
|
||||
_intf->callback(70, 1);
|
||||
|
||||
g_system->getAudioCDManager()->stop();
|
||||
|
||||
_intf->callback(70, 0x31);
|
||||
_intf->callback(67, 1, 127, 127);
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::updateVolumeSettings() {
|
||||
bool mute = (ConfMan.hasKey("mute")) ? ConfMan.getBool("mute") : false;
|
||||
_intf->setSoundEffectVolume((mute ? 0 : ConfMan.getInt("sfx_volume")));
|
||||
}
|
||||
|
||||
int SoundTowns_Darkmoon::checkTrigger() {
|
||||
return _timer;
|
||||
}
|
||||
|
||||
void SoundTowns_Darkmoon::resetTrigger() {
|
||||
_timer = 0;
|
||||
_timerSwitch = 0;
|
||||
}
|
||||
|
||||
} // End of namespace Kyra
|
@ -33,6 +33,25 @@
|
||||
namespace Kyra {
|
||||
|
||||
void EoBCoreEngine::loadMonsterShapes(const char *filename, int monsterIndex, bool hasDecorations, int encodeTableIndex) {
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
Common::String tmp = Common::String::format("%s.MNT", filename);
|
||||
Common::SeekableReadStream *s = _res->createReadStream(tmp);
|
||||
if (!s)
|
||||
error("Screen_EoB::loadMonsterShapes(): Failed to load file '%s'", tmp.c_str());
|
||||
|
||||
for (int i = 0; i < 6; i++)
|
||||
_monsterShapes[monsterIndex + i] = loadTownsShape(s);
|
||||
|
||||
for (int i = 0; i < 6; i++) {
|
||||
for (int ii = 0; ii < 2; ii++)
|
||||
s->read(_monsterPalettes[(monsterIndex >= 18 ? i + 6 : i) * 2 + ii], 16);
|
||||
}
|
||||
|
||||
if (hasDecorations)
|
||||
loadMonsterDecoration(s, monsterIndex);
|
||||
|
||||
delete s;
|
||||
} else {
|
||||
_screen->loadShapeSetBitmap(filename, 3, 3);
|
||||
const uint16 *enc = &_encodeMonsterShpTable[encodeTableIndex << 2];
|
||||
|
||||
@ -41,9 +60,13 @@ void EoBCoreEngine::loadMonsterShapes(const char *filename, int monsterIndex, bo
|
||||
|
||||
generateMonsterPalettes(filename, monsterIndex);
|
||||
|
||||
if (hasDecorations)
|
||||
loadMonsterDecoration(filename, monsterIndex);
|
||||
|
||||
if (hasDecorations) {
|
||||
Common::SeekableReadStream *s = _res->createReadStream(Common::String::format("%s.DCR", filename));
|
||||
if (s)
|
||||
loadMonsterDecoration(s, monsterIndex);
|
||||
delete s;
|
||||
}
|
||||
}
|
||||
_screen->_curPage = 0;
|
||||
}
|
||||
|
||||
@ -56,6 +79,15 @@ void EoBCoreEngine::releaseMonsterShapes(int first, int num) {
|
||||
}
|
||||
}
|
||||
|
||||
uint8 *EoBCoreEngine::loadTownsShape(Common::SeekableReadStream *stream) {
|
||||
uint32 size = stream->readUint32LE();
|
||||
uint8 *shape= new uint8[size];
|
||||
stream->read(shape, size);
|
||||
if (shape[0] == 1)
|
||||
shape[0]++;
|
||||
return shape;
|
||||
}
|
||||
|
||||
const uint8 *EoBCoreEngine::loadMonsterProperties(const uint8 *data) {
|
||||
uint8 cmd = *data++;
|
||||
while (cmd != 0xFF) {
|
||||
|
@ -39,7 +39,7 @@
|
||||
|
||||
namespace Kyra {
|
||||
|
||||
#define RESFILE_VERSION 90
|
||||
#define RESFILE_VERSION 91
|
||||
|
||||
namespace {
|
||||
bool checkKyraDat(Common::SeekableReadStream *file) {
|
||||
|
@ -22,6 +22,7 @@
|
||||
|
||||
#include "kyra/eob.h"
|
||||
#include "kyra/resource.h"
|
||||
#include "kyra/sound_intern.h"
|
||||
|
||||
|
||||
namespace Kyra {
|
||||
@ -164,7 +165,7 @@ const ScreenDim Screen_EoB::_screenDimTable[] = {
|
||||
{ 0x01, 0x14, 0x14, 0x58, 0x0F, 0x02, 0x00, 0x00 },
|
||||
{ 0x02, 0x06, 0x23, 0x78, 0x0F, 0x02, 0x00, 0x00 },
|
||||
{ 0x09, 0x14, 0x16, 0x38, 0x0F, 0x02, 0x00, 0x00 },
|
||||
{ 0x01, 0x96, 0x26, 0x31, 0x0F, 0x00, 0x00, 0x00 },
|
||||
{ 0x01, 0x96, 0x26, 0x32, 0x0F, 0x00, 0x00, 0x00 },
|
||||
{ 0x01, 0x08, 0x26, 0x80, 0x0C, 0x0F, 0x00, 0x00 },
|
||||
{ 0x01, 0x10, 0x26, 0x14, 0x00, 0x0F, 0x06, 0x00 },
|
||||
{ 0x00, 0x10, 0x10, 0x0C, 0x00, 0x0F, 0x06, 0x00 },
|
||||
@ -407,7 +408,6 @@ void EoBCoreEngine::initStaticResource() {
|
||||
_wllFlagPreset = _staticres->loadRawData(kEoBBaseWllFlagPreset, _wllFlagPresetSize);
|
||||
_dscShapeCoords = (const int16 *)_staticres->loadRawDataBe16(kEoBBaseDscShapeCoords, temp);
|
||||
|
||||
_dscDoorScaleOffs = _staticres->loadRawData(kEoBBaseDscDoorScaleOffs, temp);
|
||||
_dscDoorScaleMult1 = _staticres->loadRawData(kEoBBaseDscDoorScaleMult1, temp);
|
||||
_dscDoorScaleMult2 = _staticres->loadRawData(kEoBBaseDscDoorScaleMult2, temp);
|
||||
_dscDoorScaleMult3 = _staticres->loadRawData(kEoBBaseDscDoorScaleMult3, temp);
|
||||
@ -471,10 +471,11 @@ void EoBCoreEngine::initStaticResource() {
|
||||
{ 0, 0, 0, 0 }
|
||||
};
|
||||
|
||||
static const char *const errorSlotEmptyString[4] = {
|
||||
static const char *const errorSlotEmptyString[5] = {
|
||||
"There is no game\rsaved in that slot!",
|
||||
"Hier ist noch kein\rSpiel gespeichert!",
|
||||
"Non c'\x0E alcun gioco\rsalvato in quella\rposizione!",
|
||||
"\r ""\x82\xBB\x82\xCC\x83""X""\x83\x8D\x83""b""\x83""g""\x82\xC9\x82\xCD\x83""Q""\x81""[""\x83\x80\x82\xAA\x83""Z""\x81""[""\x83""u\r ""\x82\xB3\x82\xEA\x82\xC4\x82\xA2\x82\xDC\x82\xB9\x82\xF1\x81""B",
|
||||
0
|
||||
};
|
||||
|
||||
@ -487,9 +488,14 @@ void EoBCoreEngine::initStaticResource() {
|
||||
} else if (_flags.lang == Common::IT_ITA) {
|
||||
_saveLoadStrings = saveLoadStrings[2];
|
||||
_errorSlotEmptyString = errorSlotEmptyString[2];
|
||||
} else {
|
||||
_saveLoadStrings = saveLoadStrings[3];
|
||||
} else if (_flags.lang == Common::JA_JPN) {
|
||||
// EOB II FM-Towns uses English here.
|
||||
// Only the empty slot warning is in Japanese.
|
||||
_saveLoadStrings = saveLoadStrings[0];
|
||||
_errorSlotEmptyString = errorSlotEmptyString[3];
|
||||
} else {
|
||||
_saveLoadStrings = saveLoadStrings[4];
|
||||
_errorSlotEmptyString = errorSlotEmptyString[4];
|
||||
}
|
||||
|
||||
_menuOkString = "OK";
|
||||
@ -602,7 +608,24 @@ void EoBCoreEngine::initButtonData() {
|
||||
{ 110, 0, 0x1100, 75, 168, 97, 6, 0 }
|
||||
};
|
||||
|
||||
_buttonDefs = buttonDefs;
|
||||
_buttonDefs = new EoBGuiButtonDef[ARRAYSIZE(buttonDefs)];
|
||||
memcpy(_buttonDefs, buttonDefs, sizeof(buttonDefs));
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
static const uint16 keyCodesFMTowns[] = {
|
||||
93, 94, 95, 96, 67, 27, 24, 349, 350, 351, 352, 80, 27, 24, 30, 0, 31, 0, 29, 0, 28, 0, 127, 18, 27, 93, 94, 95, 96,
|
||||
49, 50, 51, 52, 53, 93, 94, 95, 96, 60, 62, 32, 353, 354, 97, 98, 27, 27, 97, 98, 97, 98, 54, 49, 50, 51, 52, 53, 27
|
||||
};
|
||||
|
||||
const uint16 *c = keyCodesFMTowns;
|
||||
for (int i = 0; i < ARRAYSIZE(buttonDefs); ++i) {
|
||||
if (_buttonDefs[i].keyCode)
|
||||
_buttonDefs[i].keyCode = *c++;
|
||||
if (_buttonDefs[i].keyCode2)
|
||||
_buttonDefs[i].keyCode2 = *c++;
|
||||
}
|
||||
}
|
||||
|
||||
_buttonCallbacks.clear();
|
||||
_buttonCallbacks.reserve(ARRAYSIZE(buttonDefs));
|
||||
|
||||
@ -696,7 +719,12 @@ void EoBCoreEngine::initMenus() {
|
||||
{ 32, 40, 16, 24, 20, 3, 5 },
|
||||
{ 33, 72, 16, 24, 20, 4, 5 },
|
||||
{ 34, 104, 16, 24, 20, 5, 5 },
|
||||
{ 35, 136, 16, 24, 20, 6, 5 }
|
||||
{ 35, 136, 16, 24, 20, 6, 5 },
|
||||
// FM-Towns options menu
|
||||
{ 18, 12, 20, 158, 14, 32, 3 },
|
||||
{ 19, 12, 37, 158, 14, 50, 3 },
|
||||
{ 20, 12, 54, 158, 14, 21, 3 },
|
||||
{ 8, 128, 122, 40, 14, 19, 7 }
|
||||
};
|
||||
|
||||
_menuButtonDefs = buttonDefs;
|
||||
@ -720,6 +748,12 @@ void EoBCoreEngine::initMenus() {
|
||||
_menuDefs[4].numButtons = 8;
|
||||
_menuDefs[4].firstButtonStrId = 36;
|
||||
}
|
||||
|
||||
if (_flags.platform == Common::kPlatformFMTowns) {
|
||||
// assign FM-Towns style options menu
|
||||
_menuDefs[2].numButtons = 4;
|
||||
_menuDefs[2].firstButtonStrId = 44;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1226,35 +1260,6 @@ const uint8 EoBEngine::_monsterAcHitChanceTbl2[] = {
|
||||
void DarkMoonEngine::initStaticResource() {
|
||||
int temp;
|
||||
_mainMenuStrings = _staticres->loadStrings(kEoB2MainMenuStrings, temp);
|
||||
_introStrings = _staticres->loadStrings(kEoB2IntroStrings, temp);
|
||||
_cpsFilesIntro = _staticres->loadStrings(kEoB2IntroCPSFiles, temp);
|
||||
|
||||
_animIntro = new const DarkMoonAnimCommand*[44];
|
||||
for (int i = 0; i < 44; i++)
|
||||
_animIntro[i] = _staticres->loadEoB2SeqData(kEoB2IntroAnimData00 + i, temp);
|
||||
|
||||
_shapesIntro = new const DarkMoonShapeDef*[13];
|
||||
memset(_shapesIntro, 0, sizeof(DarkMoonShapeDef *) * 13);
|
||||
_shapesIntro[0] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes00, temp);
|
||||
_shapesIntro[1] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes01, temp);
|
||||
_shapesIntro[4] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes04, temp);
|
||||
_shapesIntro[7] = _staticres->loadEoB2ShapeData(kEoB2IntroShapes07, temp);
|
||||
|
||||
_finaleStrings = _staticres->loadStrings(kEoB2FinaleStrings, temp);
|
||||
_creditsData = _staticres->loadRawData(kEoB2CreditsData, temp);
|
||||
_cpsFilesFinale = _staticres->loadStrings(kEoB2FinaleCPSFiles, temp);
|
||||
|
||||
_animFinale = new const DarkMoonAnimCommand*[21];
|
||||
for (int i = 0; i < 21; i++)
|
||||
_animFinale[i] = _staticres->loadEoB2SeqData(kEoB2FinaleAnimData00 + i, temp);
|
||||
|
||||
_shapesFinale = new const DarkMoonShapeDef*[13];
|
||||
memset(_shapesFinale, 0, sizeof(DarkMoonShapeDef *) * 13);
|
||||
_shapesFinale[0] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes00, temp);
|
||||
_shapesFinale[3] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes03, temp);
|
||||
_shapesFinale[7] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes07, temp);
|
||||
_shapesFinale[9] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes09, temp);
|
||||
_shapesFinale[10] = _staticres->loadEoB2ShapeData(kEoB2FinaleShapes10, temp);
|
||||
|
||||
_dscDoorType5Offs = _staticres->loadRawData(kEoBBaseDscDoorType5Offs, temp);
|
||||
|
||||
@ -1273,6 +1278,26 @@ void DarkMoonEngine::initStaticResource() {
|
||||
_wallOfForceDsNumH = _staticres->loadRawData(kEoB2WallOfForceNumH, temp);
|
||||
_wallOfForceShpId = _staticres->loadRawData(kEoB2WallOfForceShpId, temp);
|
||||
|
||||
_utilMenuStrings = _staticres->loadStrings(kEoB2UtilMenuStrings, temp);
|
||||
_2431Strings = _staticres->loadStrings(kEoB2Config2431Strings, temp);
|
||||
_katakanaLines = _staticres->loadStrings(kEoB2KatakanaLines, temp);
|
||||
_katakanaSelectStrings = _staticres->loadStrings(kEoB2KanaSelectStrings, temp);
|
||||
|
||||
_ascii2SjisTables = _staticres->loadStrings(kEoB2Ascii2SjisTables, temp);
|
||||
_ascii2SjisTables2 = _staticres->loadStrings(kEoB2Ascii2SjisTables2, temp);
|
||||
_saveNamePatterns = _staticres->loadStrings(kEoB2SaveNamePatterns, temp);
|
||||
|
||||
const uint8 *data = _staticres->loadRawData(kEoB2PcmSoundEffectsIngame, temp);
|
||||
SoundResourceInfo_TownsEoB ingame(data, temp, 127);
|
||||
data = _staticres->loadRawData(kEoB2PcmSoundEffectsIntro, temp);
|
||||
SoundResourceInfo_TownsEoB intro(data, temp, 40);
|
||||
data = _staticres->loadRawData(kEoB2PcmSoundEffectsFinale, temp);
|
||||
SoundResourceInfo_TownsEoB finale(data, temp, 40);
|
||||
|
||||
_sound->initAudioResourceInfo(kMusicIngame, &ingame);
|
||||
_sound->initAudioResourceInfo(kMusicIntro, &intro);
|
||||
_sound->initAudioResourceInfo(kMusicFinale, &finale);
|
||||
|
||||
_monsterAcHitChanceTable1 = _monsterAcHitChanceTbl1;
|
||||
_monsterAcHitChanceTable2 = _monsterAcHitChanceTbl2;
|
||||
|
||||
@ -1327,49 +1352,12 @@ void DarkMoonEngine::initSpells() {
|
||||
}
|
||||
}
|
||||
|
||||
const char *const DarkMoonEngine::_palFilesIntroVGA[] = {
|
||||
"PALETTE1.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
const KyraRpgGUISettings DarkMoonEngine::_guiSettingsFMTowns = {
|
||||
{ 9, 15, 95, 11, 7, { 221, 76 }, { 187, 162 }, { 95, 95 } },
|
||||
{ 186, 181, 183, 133, 184, 17, 23, 20, 186, 181, 183, 182, 177, 180 }
|
||||
};
|
||||
|
||||
const char *const DarkMoonEngine::_palFilesIntroEGA[] = {
|
||||
"PALETTE0.PAL",
|
||||
"PALETTE3.PAL",
|
||||
"PALETTE2.PAL",
|
||||
"PALETTE4.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *const DarkMoonEngine::_palFilesFinaleVGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
"FINALE_2.PAL",
|
||||
"FINALE_3.PAL",
|
||||
"FINALE_4.PAL",
|
||||
"FINALE_5.PAL",
|
||||
"FINALE_6.PAL",
|
||||
"FINALE_7.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const char *const DarkMoonEngine::_palFilesFinaleEGA[] = {
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_1.PAL",
|
||||
"FINALE_2.PAL",
|
||||
"FINALE_3.PAL",
|
||||
"FINALE_4.PAL",
|
||||
"FINALE_5.PAL",
|
||||
"FINALE_0.PAL",
|
||||
"FINALE_0.PAL",
|
||||
0
|
||||
};
|
||||
|
||||
const KyraRpgGUISettings DarkMoonEngine::_guiSettings = {
|
||||
const KyraRpgGUISettings DarkMoonEngine::_guiSettingsDOS = {
|
||||
{ 9, 15, 95, 9, 7, { 221, 76 }, { 189, 162 }, { 95, 95 } },
|
||||
{ 186, 181, 183, 133, 184, 17, 23, 20, 186, 181, 183, 182, 177, 180 }
|
||||
};
|
||||
|
@ -81,7 +81,7 @@ void KyraRpgEngine::initStaticResource() {
|
||||
_dscTileIndex = _staticres->loadRawData(kRpgCommonDscTileIndex, temp);
|
||||
_dscDim1 = (const int8 *)_staticres->loadRawData(kRpgCommonDscDimData1, temp);
|
||||
_dscDim2 = (const int8 *)_staticres->loadRawData(kRpgCommonDscDimData2, temp);
|
||||
_dscUnk2 = _staticres->loadRawData(kRpgCommonDscUnk2, temp);
|
||||
_dscDoorScaleOffs = _staticres->loadRawData(kRpgCommonDscDoorScaleOffs, temp);
|
||||
_dscBlockMap = _staticres->loadRawData(kRpgCommonDscBlockMap, temp);
|
||||
_dscBlockIndex = (const int8 *)_staticres->loadRawData(kRpgCommonDscBlockIndex, temp);
|
||||
_dscDimMap = _staticres->loadRawData(kRpgCommonDscDimMap, temp);
|
||||
|
@ -75,10 +75,13 @@ void TextDisplayer_rpg::setupField(int dim, bool mode) {
|
||||
_textDimData[dim].color2 = _vm->guiSettings()->colors.fill;
|
||||
_screen->setScreenDim(dim);
|
||||
|
||||
if (mode)
|
||||
if (mode) {
|
||||
_screen->set16bitShadingLevel(4);
|
||||
clearCurDim();
|
||||
else
|
||||
_screen->set16bitShadingLevel(0);
|
||||
} else {
|
||||
resetDimTextPositions(dim);
|
||||
}
|
||||
}
|
||||
|
||||
void TextDisplayer_rpg::resetDimTextPositions(int dim) {
|
||||
@ -123,7 +126,8 @@ void TextDisplayer_rpg::displayText(char *str, ...) {
|
||||
int sdx = _screen->curDimIndex();
|
||||
|
||||
bool sjisTextMode = (_vm->gameFlags().lang == Common::JA_JPN && _vm->gameFlags().use16ColorMode && (sdx == 3 || sdx == 4 || sdx == 5 || sdx == 15)) ? true : false;
|
||||
int sjisOffs = sjisTextMode ? 8 : 9;
|
||||
int sjisOffs = (sjisTextMode || _vm->game() == GI_EOB2) ? 8 : 9;
|
||||
Screen::FontId of = (_vm->game() == GI_EOB2 && _vm->gameFlags().platform == Common::kPlatformFMTowns) ? _screen->setFont(Screen::FID_8_FNT) : _screen->_currentFont;
|
||||
|
||||
uint16 charsPerLine = (sd->w << 3) / (_screen->getFontWidth() + _screen->_charWidth);
|
||||
|
||||
@ -225,6 +229,8 @@ void TextDisplayer_rpg::displayText(char *str, ...) {
|
||||
|
||||
if (_numCharsLeft)
|
||||
printLine(_currentLine);
|
||||
|
||||
_screen->setFont(of);
|
||||
}
|
||||
|
||||
char TextDisplayer_rpg::parseCommand() {
|
||||
@ -283,7 +289,7 @@ void TextDisplayer_rpg::readNextPara() {
|
||||
void TextDisplayer_rpg::printLine(char *str) {
|
||||
const ScreenDim *sd = _screen->_curDim;
|
||||
int sdx = _screen->curDimIndex();
|
||||
bool sjisTextMode = (_vm->gameFlags().lang == Common::JA_JPN && _vm->gameFlags().use16ColorMode && (sdx == 3 || sdx == 4 || sdx == 5 || sdx == 15)) ? true : false;
|
||||
bool sjisTextMode = _vm->gameFlags().lang == Common::JA_JPN && (_vm->gameFlags().use16ColorMode && (sdx == 3 || sdx == 4 || sdx == 5 || sdx == 15)) ? true : false;
|
||||
|
||||
int fh = (_screen->_currentFont == Screen::FID_SJIS_FNT) ? 9 : (_screen->getFontHeight() + _screen->_charOffset);
|
||||
int lines = (sd->h - _screen->_charOffset) / fh;
|
||||
@ -301,7 +307,10 @@ void TextDisplayer_rpg::printLine(char *str) {
|
||||
if (h2)
|
||||
_screen->copyRegion(sd->sx << 3, sd->sy + fh, sd->sx << 3, sd->sy, sd->w << 3, h2, _screen->_curPage, _screen->_curPage, Screen::CR_NO_P_CHECK);
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_screen->fillRect(sd->sx << 3, sd->sy + h1, ((sd->sx + sd->w) << 3) - 1, sd->sy + sd->h - 1, _textDimData[sdx].color2);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
|
||||
if (_textDimData[sdx].line)
|
||||
_textDimData[sdx].line--;
|
||||
}
|
||||
@ -482,7 +491,7 @@ void TextDisplayer_rpg::printLine(char *str) {
|
||||
str[len] = 0;
|
||||
|
||||
_numCharsLeft = strlen(str);
|
||||
_lineWidth = sjisTextMode ? (_numCharsLeft << 2) : (_screen->_currentFont == Screen::FID_SJIS_FNT ? _numCharsLeft * 9: _screen->getTextWidth(str));
|
||||
_lineWidth = sjisTextMode ? (_numCharsLeft << 2) : (_screen->_currentFont == Screen::FID_SJIS_FNT ? _numCharsLeft * 9 : _screen->getTextWidth(str));
|
||||
|
||||
if (!_numCharsLeft && (_textDimData[sdx].column + twoByteCharOffs) <= (sd->w << 3))
|
||||
return;
|
||||
@ -499,7 +508,9 @@ void TextDisplayer_rpg::printDialogueText(int stringId, const char *pageBreakStr
|
||||
assert(strlen(str) < kEoBTextBufferSize);
|
||||
Common::strlcpy(_dialogueBuffer, str, kEoBTextBufferSize);
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
displayText(_dialogueBuffer);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
|
||||
if (pageBreakString) {
|
||||
if (pageBreakString[0]) {
|
||||
@ -566,7 +577,7 @@ void TextDisplayer_rpg::textPageBreak() {
|
||||
SWAP(_vm->_dialogueButtonLabelColor1, _vm->_dialogueButtonLabelColor2);
|
||||
|
||||
int cp = _screen->setCurPage(0);
|
||||
Screen::FontId cf = _screen->setFont((_vm->gameFlags().lang == Common::JA_JPN && _vm->gameFlags().use16ColorMode) ? Screen::FID_SJIS_FNT : Screen::FID_6_FNT);
|
||||
Screen::FontId cf = _screen->setFont((_vm->gameFlags().lang == Common::JA_JPN && _vm->gameFlags().use16ColorMode) ? Screen::FID_SJIS_FNT : ((_vm->game() == GI_EOB2 && _vm->gameFlags().platform == Common::kPlatformFMTowns) ? Screen::FID_8_FNT : Screen::FID_6_FNT));
|
||||
|
||||
if (_vm->game() == GI_LOL)
|
||||
_vm->_timer->pauseSingleTimer(11, true);
|
||||
@ -614,8 +625,11 @@ void TextDisplayer_rpg::textPageBreak() {
|
||||
_vm->gui_drawBox(x + 8, (y & ~7) - 1, 66, 10, 0xEE, 0xCC, -1);
|
||||
_screen->printText(_pageBreakString, (x + 37 - (strlen(_pageBreakString) << 1) + 4) & ~3, (y + 2) & ~7, 0xC1, 0);
|
||||
} else {
|
||||
int yOffs = (_vm->game() == GI_EOB2 && _vm->gameFlags().platform == Common::kPlatformFMTowns) ? 1 : 2;
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_vm->gui_drawBox(x, y, w, _vm->guiSettings()->buttons.height, _vm->guiSettings()->colors.frame1, _vm->guiSettings()->colors.frame2, _vm->guiSettings()->colors.fill);
|
||||
_screen->printText(_pageBreakString, x + (w >> 1) - (_vm->screen()->getTextWidth(_pageBreakString) >> 1), y + 2, _vm->_dialogueButtonLabelColor1, 0);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->printText(_pageBreakString, x + (w >> 1) - (_vm->screen()->getTextWidth(_pageBreakString) >> 1), y + yOffs, _vm->_dialogueButtonLabelColor1, 0);
|
||||
}
|
||||
|
||||
_vm->removeInputTop();
|
||||
@ -659,12 +673,14 @@ void TextDisplayer_rpg::textPageBreak() {
|
||||
}
|
||||
} while (loop && !_vm->shouldQuit());
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
if (_vm->gameFlags().use16ColorMode)
|
||||
_screen->fillRect(x + 8, y, x + 57, y + 9, _textDimData[_screen->curDimIndex()].color2);
|
||||
else
|
||||
_screen->fillRect(x, y, x + w - 1, y + 8, _textDimData[_screen->curDimIndex()].color2);
|
||||
_screen->fillRect(x, y, x + w - 1, y + _vm->guiSettings()->buttons.height - 1, _textDimData[_screen->curDimIndex()].color2);
|
||||
|
||||
clearCurDim();
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->updateScreen();
|
||||
|
||||
if (_vm->game() == GI_LOL)
|
||||
@ -709,7 +725,9 @@ void TextDisplayer_rpg::displayWaitButton() {
|
||||
|
||||
while (!_vm->processDialogue() && !_vm->shouldQuit()) {}
|
||||
|
||||
_screen->set16bitShadingLevel(4);
|
||||
_screen->fillRect(_vm->_dialogueButtonPosX[0], _vm->_dialogueButtonPosY[0], _vm->_dialogueButtonPosX[0] + _vm->_dialogueButtonWidth - 1, _vm->_dialogueButtonPosY[0] + _vm->guiSettings()->buttons.height - 1, _vm->guiSettings()->colors.fill);
|
||||
_screen->set16bitShadingLevel(0);
|
||||
_screen->updateScreen();
|
||||
_vm->_dialogueButtonWidth = 95;
|
||||
SWAP(_vm->_dialogueButtonLabelColor1, _vm->_dialogueButtonLabelColor2);
|
||||
|
Loading…
Reference in New Issue
Block a user