├── .gitattributes ├── LICENSE ├── README.md ├── SupportedGames.txt ├── assets ├── logo.png └── screen.jpg └── src ├── .gitignore ├── AUTHORS ├── COPYING ├── Doc └── Images │ └── nscumm.png ├── Engines ├── NScumm.MonoGame │ └── Platforms │ │ └── WindowsGL │ │ └── bin │ │ └── Release │ │ └── plugins │ │ ├── IO │ │ └── Nscumm.xml │ │ ├── NScumm.Scumm.dll │ │ └── NScumm.Scumm.pdb ├── NScumm.Scumm │ ├── Actor.cs │ ├── Actor0.cs │ ├── Actor2.cs │ ├── Actor3.cs │ ├── Audio │ │ ├── Amiga │ │ │ ├── IPlayerMod.cs │ │ │ ├── V2A_Sound_Base.cs │ │ │ ├── V2A_Sound_MultiLooped.cs │ │ │ ├── V2A_Sound_MultiLoopedDuration.cs │ │ │ ├── V2A_Sound_Music.cs │ │ │ ├── V2A_Sound_Single.cs │ │ │ ├── V2A_Sound_SingleLooped.cs │ │ │ ├── V2A_Sound_SingleLoopedPitchbend.cs │ │ │ ├── V2A_Sound_Special_Maniac32.cs │ │ │ ├── V2A_Sound_Special_Maniac44.cs │ │ │ ├── V2A_Sound_Special_Maniac46.cs │ │ │ ├── V2A_Sound_Special_Maniac59.cs │ │ │ ├── V2A_Sound_Special_Maniac61.cs │ │ │ ├── V2A_Sound_Special_Maniac69.cs │ │ │ ├── V2A_Sound_Special_ManiacDing.cs │ │ │ ├── V2A_Sound_Special_ManiacPhone.cs │ │ │ ├── V2A_Sound_Special_ManiacTentacle.cs │ │ │ └── V2A_Sound_Special_ManiacTypewriter.cs │ │ ├── AppleII │ │ │ ├── AppleII_SoundFunction1_FreqUpDown.cs │ │ │ ├── AppleII_SoundFunction2_SymmetricWave.cs │ │ │ ├── AppleII_SoundFunction3_AsymmetricWave.cs │ │ │ ├── AppleII_SoundFunction4_Polyphone.cs │ │ │ ├── AppleII_SoundFunction5_Noise.cs │ │ │ └── IAppleII_SoundFunction.cs │ │ ├── DefaultAudioCDManager.cs │ │ ├── IMuse │ │ │ ├── CommandQueue.cs │ │ │ ├── DeferredCommand.cs │ │ │ ├── HookDatas.cs │ │ │ ├── IImuse.cs │ │ │ ├── IInstrumentInternal.cs │ │ │ ├── IMuseDigital │ │ │ │ ├── BundleCodecs.cs │ │ │ │ ├── BundleDirCache.cs │ │ │ │ ├── BundleMgr.cs │ │ │ │ ├── IMuseDigiSndMgr.cs │ │ │ │ ├── IMuseDigital.cs │ │ │ │ ├── IMuseDigital_Music.cs │ │ │ │ ├── IMuseDigital_Script.cs │ │ │ │ ├── IMuseDigital_Tables.cs │ │ │ │ ├── IMuseDigital_Track.cs │ │ │ │ ├── ImuseTrack.cs │ │ │ │ └── SoundDesc.cs │ │ │ ├── IMuseInternal.cs │ │ │ ├── ISysEx.cs │ │ │ ├── ImTrigger.cs │ │ │ ├── Instrument.cs │ │ │ ├── InstrumentAdLib.cs │ │ │ ├── InstrumentPcSpk.cs │ │ │ ├── InstrumentProgram.cs │ │ │ ├── ParameterFader.cs │ │ │ ├── Part.cs │ │ │ ├── Player.cs │ │ │ ├── SamAndMaxSysEx.cs │ │ │ ├── ScummSysEx.cs │ │ │ └── TimerCallbackInfo.cs │ │ ├── IMusicEngine.cs │ │ ├── Players │ │ │ ├── Player_AD.cs │ │ │ ├── Player_AppleII.cs │ │ │ ├── Player_MOD.cs │ │ │ ├── Player_Mac.cs │ │ │ ├── Player_SID.cs │ │ │ ├── Player_Towns.cs │ │ │ ├── Player_Towns_v1.cs │ │ │ ├── Player_Towns_v2.cs │ │ │ ├── Player_V1.cs │ │ │ ├── Player_V2.cs │ │ │ ├── Player_V2A.cs │ │ │ ├── Player_V2Base.cs │ │ │ ├── Player_V2CMS.cs │ │ │ ├── Player_V3A.cs │ │ │ ├── Player_V3M.cs │ │ │ ├── Player_V4A.cs │ │ │ └── Player_V5M.cs │ │ ├── SampleBuffer.cs │ │ └── SampleConverter.cs │ ├── BlastObject.cs │ ├── BlastText.cs │ ├── Box.cs │ ├── BoxCoords.cs │ ├── Camera.cs │ ├── ClickArea.cs │ ├── ColorCycle.cs │ ├── CostumeData.cs │ ├── Cursor.cs │ ├── CutScene.cs │ ├── FlashLight.cs │ ├── Graphics │ │ ├── AkosRenderer.cs │ │ ├── BaseCostumeRenderer.cs │ │ ├── BompDrawData.cs │ │ ├── CharsetRenderer.cs │ │ ├── CharsetRenderer2.cs │ │ ├── CharsetRenderer3.cs │ │ ├── CharsetRendererClassic.cs │ │ ├── CharsetRendererCommon.cs │ │ ├── CharsetRendererNut.cs │ │ ├── CharsetRendererTowns3.cs │ │ ├── CharsetRendererTownsClassic.cs │ │ ├── ClassicCostumeRenderer.cs │ │ ├── CostumeRenderer0.cs │ │ ├── Gdi.cs │ │ ├── Gdi1.cs │ │ ├── Gdi2.cs │ │ ├── ICostumeRenderer.cs │ │ ├── ImageData.cs │ │ ├── NutRenderer.cs │ │ ├── Palette.cs │ │ ├── PixelNavigator.cs │ │ ├── TownsScreen.cs │ │ ├── VirtScreen.cs │ │ └── ZPlane.cs │ ├── IO │ │ ├── AkosCostumeLoader.cs │ │ ├── AkosHeader.cs │ │ ├── ChunkIterator3.cs │ │ ├── ChunkIterator5.cs │ │ ├── ClassicCostumeLoader.cs │ │ ├── CostumeLoader0.cs │ │ ├── GameInfo.cs │ │ ├── GameManager.cs │ │ ├── ICostumeLoader.cs │ │ ├── MacResManager.cs │ │ ├── Nscumm.xml │ │ ├── Nscumm.xsd │ │ ├── ResourceFile.cs │ │ ├── ResourceFile0.cs │ │ ├── ResourceFile1.cs │ │ ├── ResourceFile2.cs │ │ ├── ResourceFile3.cs │ │ ├── ResourceFile3_16.cs │ │ ├── ResourceFile4.cs │ │ ├── ResourceFile5.cs │ │ ├── ResourceFile6.cs │ │ ├── ResourceFile7.cs │ │ ├── ResourceFile8.cs │ │ ├── ResourceIndex.cs │ │ ├── ResourceIndex0.cs │ │ ├── ResourceIndex2.cs │ │ ├── ResourceIndex3.cs │ │ ├── ResourceIndex3_16.cs │ │ ├── ResourceIndex4.cs │ │ ├── ResourceIndex5.cs │ │ ├── ResourceIndex6.cs │ │ ├── ResourceIndex7.cs │ │ ├── ResourceIndex8.cs │ │ ├── ResourceManager.cs │ │ ├── ResourceManager0.cs │ │ ├── ResourceManager2.cs │ │ ├── ResourceManager3.cs │ │ ├── ResourceManager4.cs │ │ ├── ResourceManager5.cs │ │ ├── ResourceManager6.cs │ │ ├── ResourceManager7.cs │ │ ├── ResourceManager8.cs │ │ ├── ScummDiskImage.cs │ │ ├── ScummMetaEngine.cs │ │ ├── Serializer.cs │ │ └── XorStream.cs │ ├── IScummTextDecoder.cs │ ├── Insane │ │ ├── Insane.cs │ │ ├── Insane_Ben.cs │ │ ├── Insane_Enemy.cs │ │ ├── Insane_Iact.cs │ │ └── Insane_Scenes.cs │ ├── Languages │ │ ├── Language.cs │ │ ├── LanguageAttribute.cs │ │ ├── LanguageHelpers.cs │ │ ├── LanguageIsNotSupportedException.cs │ │ ├── LanguageModel.cs │ │ ├── Languages.cs │ │ └── LanguagesJSON.cs │ ├── NScumm.Scumm.csproj │ ├── NestedScript.cs │ ├── ObjectData.cs │ ├── OpCodeAttribute.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Room.cs │ ├── ScaleSlot.cs │ ├── ScriptData.cs │ ├── ScriptSlot.cs │ ├── ScummEngine.cs │ ├── ScummEngine0.cs │ ├── ScummEngine0_Actor.cs │ ├── ScummEngine0_Variable.cs │ ├── ScummEngine0_Verb.cs │ ├── ScummEngine2.cs │ ├── ScummEngine3.cs │ ├── ScummEngine3_Actor.cs │ ├── ScummEngine3_Camera.cs │ ├── ScummEngine3_Cursor.cs │ ├── ScummEngine3_Drawing.cs │ ├── ScummEngine3_Expression.cs │ ├── ScummEngine3_Inventory.cs │ ├── ScummEngine3_Light.cs │ ├── ScummEngine3_Object.cs │ ├── ScummEngine3_Room.cs │ ├── ScummEngine3_SaveLoad.cs │ ├── ScummEngine3_Script.cs │ ├── ScummEngine3_String.cs │ ├── ScummEngine3_Verb.cs │ ├── ScummEngine4.cs │ ├── ScummEngine5.cs │ ├── ScummEngine6.cs │ ├── ScummEngine6_Actor.cs │ ├── ScummEngine6_Array.cs │ ├── ScummEngine6_Audio.cs │ ├── ScummEngine6_Camera.cs │ ├── ScummEngine6_Cursor.cs │ ├── ScummEngine6_Expression.cs │ ├── ScummEngine6_Inventory.cs │ ├── ScummEngine6_Misc.cs │ ├── ScummEngine6_Object.cs │ ├── ScummEngine6_Resources.cs │ ├── ScummEngine6_Room.cs │ ├── ScummEngine6_Script.cs │ ├── ScummEngine6_String.cs │ ├── ScummEngine6_Variable.cs │ ├── ScummEngine6_Verb.cs │ ├── ScummEngine7.cs │ ├── ScummEngine7_Misc.cs │ ├── ScummEngine8.cs │ ├── ScummEngine_Actor.cs │ ├── ScummEngine_Audio.cs │ ├── ScummEngine_Box.cs │ ├── ScummEngine_Camera.cs │ ├── ScummEngine_Charset.cs │ ├── ScummEngine_Cursor.cs │ ├── ScummEngine_Drawing.cs │ ├── ScummEngine_Effect.cs │ ├── ScummEngine_Input.cs │ ├── ScummEngine_Inventory.cs │ ├── ScummEngine_Light.cs │ ├── ScummEngine_Object.cs │ ├── ScummEngine_Palette.cs │ ├── ScummEngine_Room.cs │ ├── ScummEngine_SaveLoad.cs │ ├── ScummEngine_Script.cs │ ├── ScummEngine_String.cs │ ├── ScummEngine_Variable.cs │ ├── ScummEngine_Verb.cs │ ├── ScummMath.cs │ ├── ScummText.cs │ ├── Sentence.cs │ ├── Smush │ │ ├── Codec37Decoder.cs │ │ ├── Codec47Decoder.cs │ │ ├── ImuseChannel.cs │ │ ├── SaudChannel.cs │ │ ├── SmushChannel.cs │ │ ├── SmushFont.cs │ │ ├── SmushMixer.cs │ │ ├── SmushPlayer.cs │ │ └── TrsFile.cs │ ├── Sound.cs │ ├── SubtitleText.cs │ ├── TextObject.cs │ ├── TextSlot.cs │ ├── TraceSwitches.cs │ ├── VerbSlot.cs │ └── packages.config ├── NScumm.Sky │ ├── AutoRoute.cs │ ├── Compact.cs │ ├── Control.cs │ ├── Debug.cs │ ├── Disk.cs │ ├── Grid.cs │ ├── Intro.Sequences.cs │ ├── Intro.cs │ ├── Logic.Logic.cs │ ├── Logic.Mcode.cs │ ├── Logic.cs │ ├── Mouse.cs │ ├── Music │ │ ├── AdLibChannel.cs │ │ ├── AdLibMusic.cs │ │ ├── GmChannel.cs │ │ ├── GmMusic.cs │ │ ├── Mt32Music.cs │ │ └── MusicBase.cs │ ├── NScumm.Sky.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── RawAccess.cs │ ├── RncDecoder.cs │ ├── Screen.cs │ ├── SkyDefines.cs │ ├── SkyDefines.tt │ ├── SkyEngine.cs │ ├── SkyMetaEngine.cs │ ├── SkySystem.cs │ ├── Sound.Data.cs │ ├── Sound.cs │ ├── Text.HuffTree.cs │ ├── Text.cs │ ├── sky.cpt │ └── skydefs.h └── NScumm.Sword1 │ ├── Control.cs │ ├── ControlButton.cs │ ├── EventManager.cs │ ├── Logic.Mcode.cs │ ├── Logic.cs │ ├── MemMan.cs │ ├── Menu.cs │ ├── MenuIcon.cs │ ├── Mouse.cs │ ├── MoviePlayer.cs │ ├── Music.cs │ ├── NScumm.Sword1.csproj │ ├── ObjectMan.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── RawAccess.cs │ ├── ResMan.cs │ ├── Router.cs │ ├── Screen.cs │ ├── ScriptVariableNames.cs │ ├── Sound.Defines.cs │ ├── Sound.Fx.cs │ ├── Sound.cs │ ├── StaticRes.cs │ ├── Sword1MetaEngine.cs │ ├── SwordEngine.cs │ ├── SwordObject.cs │ ├── SwordRes.RoomDefTable.cs │ ├── SwordSystem.cs │ ├── SystemVars.cs │ ├── Text.cs │ ├── swordres.cs │ ├── swordres.h │ └── swordres.tt ├── NScumm-Linux.sln ├── NScumm-WindowsGL.sln ├── NScumm-Windows_UWP.sln ├── NScumm-Windows_UWP.sln.DotSettings.user ├── NScumm.Core ├── Audio │ ├── AudioFormat.cs │ ├── CMSMusicPlugin.cs │ ├── Channel.cs │ ├── Decoders │ │ ├── AudioStreamHelper.cs │ │ ├── Ima_ADPCMStream.cs │ │ ├── RawStream.cs │ │ ├── SubLoopingAudioStream.cs │ │ ├── VocStream.cs │ │ └── XAStream.cs │ ├── DeviceHandle.cs │ ├── FixedPointFractionHelper.cs │ ├── IAudioCDManager.cs │ ├── IAudioOutput.cs │ ├── IAudioStream.cs │ ├── IMixer.cs │ ├── IMusicPluginObject.cs │ ├── ISoundRepository.cs │ ├── LoopingAudioStream.cs │ ├── Midi │ │ ├── IMidiDriver.cs │ │ ├── MidiParser.cs │ │ ├── NoteTimer.cs │ │ ├── SmfMidiParser.cs │ │ └── Tracker.cs │ ├── MidiChannel.cs │ ├── MidiDriver.cs │ ├── Mixer.cs │ ├── Mods │ │ ├── Paula.cs │ │ └── Tfmx.cs │ ├── MusicDevice.cs │ ├── MusicManager.cs │ ├── MusicPluginObject.cs │ ├── NullMidiDriver.cs │ ├── OPL │ │ ├── DosBox │ │ │ ├── DosBoxOPL.cs │ │ │ ├── DosBoxOPL_Channel.cs │ │ │ ├── DosBoxOPL_Chip.cs │ │ │ ├── DosBoxOPL_Operator.cs │ │ │ ├── DosBoxOPL_Shared.cs │ │ │ ├── OplChip.cs │ │ │ └── OplTimer.cs │ │ ├── IOpl.cs │ │ └── Mame │ │ │ ├── FmOPL.cs │ │ │ └── MameOPL.cs │ ├── PCJuniorMusicPlugin.cs │ ├── PCSpeaker.cs │ ├── PCSpeakerDriver.cs │ ├── PCSpeakerMusicPlugin.cs │ ├── QueuingAudioStream.cs │ ├── RateConverters │ │ ├── CopyRateConverter.cs │ │ ├── IRateConverter.cs │ │ ├── LinearRateConverter.cs │ │ ├── RateHelper.cs │ │ └── SimpleRateConverter.cs │ ├── SampleProviders │ │ ├── AudioSampleProvider16.cs │ │ ├── AudioSampleProviderToAudioStream.cs │ │ ├── AudioStreamToAudioSampleProvider.cs │ │ ├── IAudioSampleProvider.cs │ │ ├── MonoToStereoAudioSampleProvider16.cs │ │ └── ResampleAudioSampleProvider.cs │ ├── SoftSynth │ │ ├── Adlib.cs │ │ ├── AdlibMidiDriver.cs │ │ ├── AdlibMidiDriver_Data.cs │ │ ├── CMSEmulator.cs │ │ ├── EmulatedMidiDriver.cs │ │ ├── EnvelopeGenerator.cs │ │ ├── ExternalFilter.cs │ │ ├── FMTownsPc98 │ │ │ ├── ITownsAudioInterfacePluginDriver.cs │ │ │ ├── MidiDriver_TOWNS.cs │ │ │ ├── TownsAudioInterface.cs │ │ │ ├── TownsAudioInterfaceInternal.cs │ │ │ ├── TownsAudio_PcmChannel.cs │ │ │ ├── TownsAudio_WaveTable.cs │ │ │ ├── TownsEmuMusicPlugin.cs │ │ │ ├── TownsEuphonyDriver.cs │ │ │ ├── TownsMidiInputChannel.cs │ │ │ ├── TownsMidiOutputChannel.cs │ │ │ ├── TownsPC98_FmSynth.cs │ │ │ ├── TownsPC98_FmSynthOperator.cs │ │ │ ├── TownsPC98_FmSynthPercussionSource.cs │ │ │ └── TownsPC98_FmSynthSquareSineSource.cs │ │ ├── Filter.cs │ │ ├── ISid.cs │ │ ├── Sid.cs │ │ ├── Voice.cs │ │ └── WaveformGenerator.cs │ ├── SoundHandle.cs │ ├── SubSeekableAudioStream.cs │ ├── Timestamp.cs │ └── WaveStreamWriter.cs ├── BitStream.cs ├── Common │ └── Huffman.cs ├── Graphics │ ├── Color.cs │ ├── IGraphicsManager.cs │ ├── Point.cs │ ├── Rect.cs │ ├── Surface.cs │ ├── ThumbnailHeader.cs │ └── YUVToRGBManager.cs ├── IAudioManager.cs ├── IEnableTrace.cs ├── IEngine.cs ├── IFileStorage.cs ├── IO │ ├── GameDetected.cs │ ├── GameDetector.cs │ ├── GameSettings.cs │ ├── IGameDescriptor.cs │ ├── IMetaEngine.cs │ └── Platform.cs ├── IPlatform.cs ├── ISaveFileManager.cs ├── ISystem.cs ├── ITraceFactory.cs ├── Input │ ├── IInputManager.cs │ ├── KeyCode.cs │ ├── ScummInputState.cs │ └── ScummMouseButtonState.cs ├── NScumm.Core.csproj ├── Properties │ └── AssemblyInfo.cs ├── Rational.cs ├── ScummHelper.cs ├── ServiceLocator.cs └── Video │ ├── AudioTrack.cs │ ├── BigHuffmanTree.cs │ ├── FixedRateVideoTrack.cs │ ├── ITrack.cs │ ├── PsxStreamDecoder.Audio.cs │ ├── PsxStreamDecoder.Video.cs │ ├── PsxStreamDecoder.cs │ ├── SmackerAudioTrack.cs │ ├── SmackerDecoder.cs │ ├── SmackerVideoTrack.cs │ ├── SmallHuffmanTree.cs │ ├── Track.cs │ ├── VideoDecoder.cs │ └── VideoTrack.cs ├── NScumm.MonoGame ├── Content │ ├── Fonts │ │ ├── MenuFont.xnb │ │ └── SpriteFont.xnb │ └── Textures │ │ ├── blank.png │ │ └── blank.xnb ├── DynamicSoundEffectInstance.cs ├── Mono.Options │ └── Options.cs ├── OpenALDriver.cs ├── Platforms │ ├── Linux │ │ ├── NScumm.MonoGame.csproj │ │ ├── OpenTK.dll.config │ │ ├── Tao.Sdl.dll.config │ │ └── packages.config │ ├── UWP │ │ └── NScumm.MonoGame │ │ │ ├── App.xaml │ │ │ ├── App.xaml.cs │ │ │ ├── ApplicationInsights.config │ │ │ ├── Assets │ │ │ ├── LargeTile.scale-100.png │ │ │ ├── LargeTile.scale-125.png │ │ │ ├── LargeTile.scale-150.png │ │ │ ├── LargeTile.scale-200.png │ │ │ ├── LargeTile.scale-400.png │ │ │ ├── LockScreenLogo.scale-200.png │ │ │ ├── SmallTile.scale-100.png │ │ │ ├── SmallTile.scale-125.png │ │ │ ├── SmallTile.scale-150.png │ │ │ ├── SmallTile.scale-200.png │ │ │ ├── SmallTile.scale-400.png │ │ │ ├── SplashScreen.scale-100.png │ │ │ ├── SplashScreen.scale-125.png │ │ │ ├── SplashScreen.scale-150.png │ │ │ ├── SplashScreen.scale-200.png │ │ │ ├── SplashScreen.scale-400.png │ │ │ ├── Square150x150Logo.scale-100.png │ │ │ ├── Square150x150Logo.scale-125.png │ │ │ ├── Square150x150Logo.scale-150.png │ │ │ ├── Square150x150Logo.scale-200.png │ │ │ ├── Square150x150Logo.scale-400.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-16.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-256.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-32.png │ │ │ ├── Square44x44Logo.altform-unplated_targetsize-48.png │ │ │ ├── Square44x44Logo.scale-100.png │ │ │ ├── Square44x44Logo.scale-125.png │ │ │ ├── Square44x44Logo.scale-150.png │ │ │ ├── Square44x44Logo.scale-200.png │ │ │ ├── Square44x44Logo.scale-400.png │ │ │ ├── Square44x44Logo.targetsize-16.png │ │ │ ├── Square44x44Logo.targetsize-24.png │ │ │ ├── Square44x44Logo.targetsize-24_altform-unplated.png │ │ │ ├── Square44x44Logo.targetsize-256.png │ │ │ ├── Square44x44Logo.targetsize-32.png │ │ │ ├── Square44x44Logo.targetsize-48.png │ │ │ ├── StoreLogo.scale-100.png │ │ │ ├── StoreLogo.scale-125.png │ │ │ ├── StoreLogo.scale-150.png │ │ │ ├── StoreLogo.scale-200.png │ │ │ ├── StoreLogo.scale-400.png │ │ │ ├── Wide310x150Logo.scale-100.png │ │ │ ├── Wide310x150Logo.scale-125.png │ │ │ ├── Wide310x150Logo.scale-150.png │ │ │ ├── Wide310x150Logo.scale-200.png │ │ │ └── Wide310x150Logo.scale-400.png │ │ │ ├── Backup │ │ │ ├── NScumm.MonoGame.csproj │ │ │ └── project.json │ │ │ ├── BundleArtifacts │ │ │ ├── arm.txt │ │ │ ├── x64.txt │ │ │ └── x86.txt │ │ │ ├── Content │ │ │ ├── NScumm.mgcb │ │ │ └── ScummVM.dat │ │ │ ├── Converters │ │ │ ├── GameCountToVisibilityConverter.cs │ │ │ └── IsScanningToVisibilityConverter.cs │ │ │ ├── NScumm.MonoGame.csproj │ │ │ ├── NScumm.MonoGame.csproj.user │ │ │ ├── NScumm.MonoGame.rd.xml │ │ │ ├── NativeArchiveHelper.cs │ │ │ ├── Package.appxmanifest │ │ │ ├── Pages │ │ │ ├── GameLibraryPage.xaml │ │ │ ├── GameLibraryPage.xaml.cs │ │ │ ├── GamePage.xaml │ │ │ ├── GamePage.xaml.cs │ │ │ ├── MainMenu.xaml │ │ │ └── MainMenu.xaml.cs │ │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ └── Default.rd.xml │ │ │ ├── Services │ │ │ └── MenuService.cs │ │ │ ├── Strings │ │ │ ├── en-US │ │ │ │ └── Resources.resw │ │ │ └── fr-FR │ │ │ │ └── Resources.resw │ │ │ ├── TraceFactory.cs │ │ │ ├── ViewModels │ │ │ ├── DelegateCommand.cs │ │ │ ├── GameLibraryViewModel.cs │ │ │ ├── GameViewModel.cs │ │ │ └── ViewModel.cs │ │ │ ├── XAudio2Mixer.cs │ │ │ └── project.lock.json │ └── WindowsGL │ │ ├── App.ico │ │ ├── GameDetectorExtension.cs │ │ ├── NScumm.MonoGame.csproj │ │ ├── OpenTK.dll.config │ │ ├── Properties │ │ └── AssemblyInfo.cs │ │ ├── Services │ │ └── MenuService.cs │ │ ├── Tao.Sdl.dll.config │ │ └── packages.config ├── Program.cs ├── ScreenManager │ ├── GameScreen.cs │ ├── InputState.cs │ ├── MenuScreen.cs │ └── ScreenManager.cs ├── Screens │ ├── BackgroundScreen.cs │ ├── MainMenuScreen.cs │ └── ScummScreen.cs ├── ScummGame.cs ├── Services │ └── IMenuService.cs ├── XnaGraphicsManager.cs └── XnaInputManager.cs ├── NScumm.Unsafe ├── NScumm.Unsafe.csproj ├── Properties │ ├── AssemblyInfo.cs │ └── NScumm.Unsafe.rd.xml └── Services │ └── GCService.cs ├── Platforms ├── NScumm.Platform_Desktop │ ├── AudioManager.cs │ ├── FileStorage.cs │ ├── NScumm.Platform_Desktop.csproj │ ├── Platform.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── SaveFileManager.cs │ ├── TraceFactory.cs │ ├── WaveAudioStream.cs │ └── packages.config └── NScumm.Platform_UWP │ ├── Backup │ ├── NScumm.Platform_UWP.csproj │ └── project.json │ ├── FileStorage.cs │ ├── MD5.cs │ ├── NScumm.Platform_UWP.csproj │ ├── Properties │ ├── AssemblyInfo.cs │ └── NScumm.Platform_UWP.rd.xml │ ├── SaveFileManager.cs │ ├── WindowsUAPPlatform.cs │ ├── project.json │ └── project.lock.json ├── README.md ├── Tests ├── NScumm.Core.Tests │ ├── IO │ │ ├── ResourceIndex0Fixture.cs │ │ └── XorStreamFixture.cs │ ├── NScumm.Scumm.Tests.csproj │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ └── Resources.resx │ ├── Resources │ │ └── maniacdemo.d64 │ └── packages.config └── NScumm.Dump.Tests │ ├── AstHelper.cs │ ├── ChangeJumpToIfFixture.cs │ ├── NScumm.Dump.Tests.csproj │ ├── ReplaceJumpToGoToFixture.cs │ ├── ReplaceJumpToWhileFixtureFixture.cs │ ├── ReplacePushAndPopFixture.cs │ ├── ResolveAllTypesOfVariablesFixture.cs │ ├── ResolveVariablesAstVisitorFixture.cs │ └── packages.config ├── Tools └── NScumm.Dump │ ├── .vs │ └── NScumm.Dump │ │ └── v16 │ │ └── .suo │ ├── Ast │ ├── AstNodeBase.cs │ ├── CompilationUnit.cs │ ├── DefaultVisitor.cs │ ├── Expressions │ │ ├── ArrayLiteralExpression.cs │ │ ├── BinaryExpression.cs │ │ ├── BooleanLiteralExpression.cs │ │ ├── ElementAccess.cs │ │ ├── Expression.cs │ │ ├── IntegerLiteralExpression.cs │ │ ├── LiteralExpression.cs │ │ ├── MemberAccess.cs │ │ ├── MethodInvocation.cs │ │ ├── SimpleName.cs │ │ ├── StringLiteralExpression.cs │ │ └── UnaryExpression.cs │ ├── IAstNode.cs │ ├── IAstNodeVisitor.cs │ └── Statements │ │ ├── BlockStatement.cs │ │ ├── CaseStatement.cs │ │ ├── DoWhileStatement.cs │ │ ├── ExpressionStatement.cs │ │ ├── GoToStatement.cs │ │ ├── IfStatement.cs │ │ ├── JumpStatement.cs │ │ ├── LabelStatement.cs │ │ ├── Statement.cs │ │ └── SwitchStatement.cs │ ├── AstRewriterVisitor.cs │ ├── DumpAstVisitor.cs │ ├── IDumper.cs │ ├── ImageDumper.cs │ ├── JumpAstVisitor.cs │ ├── Mono.Options │ └── Options.cs │ ├── NScumm.Dump.csproj │ ├── Parser │ ├── ScriptParser.cs │ ├── ScriptParser0.cs │ ├── ScriptParser3.cs │ ├── ScriptParser3_Actor.cs │ ├── ScriptParser3_Audio.cs │ ├── ScriptParser3_Camera.cs │ ├── ScriptParser3_Expression.cs │ ├── ScriptParser3_Inventory.cs │ ├── ScriptParser3_Object.cs │ ├── ScriptParser3_OpCode.cs │ ├── ScriptParser3_Room.cs │ ├── ScriptParser3_Scripts.cs │ ├── ScriptParser3_Strings.cs │ ├── ScriptParser3_Variable.cs │ ├── ScriptParser3_Verb.cs │ ├── ScriptParser4.cs │ ├── ScriptParser5.cs │ ├── ScriptParser6.cs │ ├── ScriptParser6_Actor.cs │ ├── ScriptParser6_Audio.cs │ ├── ScriptParser6_Camera.cs │ ├── ScriptParser6_Expression.cs │ ├── ScriptParser6_Graphics.cs │ ├── ScriptParser6_Inventory.cs │ ├── ScriptParser6_Misc.cs │ ├── ScriptParser6_Object.cs │ ├── ScriptParser6_Resources.cs │ ├── ScriptParser6_Room.cs │ ├── ScriptParser6_Script.cs │ ├── ScriptParser6_Variables.cs │ ├── ScriptParser6_Verb.cs │ ├── ScriptParser7.cs │ └── ScriptParser8.cs │ ├── Program.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── ReplaceJumpToGoTo.cs │ ├── ReplaceJumpToIf.cs │ ├── ReplaceJumpToWhile.cs │ ├── ReplacePushAndPop.cs │ ├── ResolveAllTypesOfVariables.cs │ ├── ResolveVariablesAstVisitor.cs │ ├── ScriptDumper.cs │ ├── TextDecoder.cs │ ├── obj │ ├── Debug │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ ├── DesignTimeResolveAssemblyReferences.cache │ │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ │ ├── NScumm.Dump.csproj.AssemblyReference.cache │ │ ├── NScumm.Dump.csproj.FileListAbsolute.txt │ │ └── build.force │ └── Release │ │ ├── .NETFramework,Version=v4.5.AssemblyAttributes.cs │ │ ├── NScumm.Dump.csproj.AssemblyReference.cache │ │ └── NScumm.Dump.csproj.FileListAbsolute.txt │ └── packages.config ├── UpgradeLog.htm ├── UpgradeLog2.htm └── packages ├── Mono.Options.1.1 ├── .signature.p7s ├── Mono.Options.1.1.nupkg └── content │ └── Mono.Options │ └── Options.cs.pp ├── NFluent.1.3.1.0 ├── .signature.p7s ├── NFluent.1.3.1.0.nupkg └── lib │ ├── net35 │ ├── NFluent.dll │ └── NFluent.xml │ ├── net40 │ ├── NFluent.dll │ └── NFluent.xml │ └── portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1 │ ├── NFluent.dll │ └── NFluent.xml ├── NUnit.2.6.4 ├── .signature.p7s ├── NUnit.2.6.4.nupkg ├── lib │ ├── nunit.framework.dll │ └── nunit.framework.xml └── license.txt └── NUnit.3.0.0-beta-2 ├── .signature.p7s ├── CHANGES.txt ├── LICENSE.txt ├── NOTICES.txt ├── NUnit.3.0.0-beta-2.nupkg └── lib ├── net20 ├── nunit.framework.dll └── nunit.framework.xml ├── net40 ├── nunit.framework.dll └── nunit.framework.xml ├── net45 ├── nunit.framework.dll └── nunit.framework.xml ├── portable-net45+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1 ├── nunit.framework.dll └── nunit.framework.xml └── sl50 ├── nunit.framework.dll └── nunit.framework.xml /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 |
3 | Enhanced Scumm Engine (UWP)
4 | Source | 5 | Original Project 6 |

7 |

8 |

9 | 10 | 11 | # Important 12 | 13 | - WIP project for testing usage, original ScummVM is working better 14 | 15 | - The extended database added in hope to extend the engines list, even if the new game detected it might not work 16 | 17 | 18 | # Features 19 | 20 | - Extended games database (Future usage) 21 | 22 | - Add your custom database (As ScummVM.dat) 23 | 24 | - Fix some wrong md5 results 25 | 26 | - Async loader to avoid UI block 27 | 28 | - Export/Import Saves 29 | 30 | - Shortcuts for touch screens 31 | 32 | - Layouts improvement 33 | 34 | - Bugs fixes 35 | 36 | 37 | # Limitations 38 | 39 | - You cannot go back to the games list (for now) 40 | 41 | - Actions like clear games list requires app restart 42 | 43 | - Cannot delete specific game (for now) 44 | 45 | 46 | # Known Issue 47 | 48 | - GC (Garbage Collector) causing low performance 49 | 50 | 51 | # Target 52 | 53 | It will work with build 10240 and above, ARM - x64 - x86 54 | 55 | 56 | # Supported Games 57 | 58 | Check SupportedGames.txt 59 | 60 | 61 | # Credits 62 | 63 | Developed by Scemino 64 | 65 | Enhanced by Bashar Astifan 66 | 67 | -------------------------------------------------------------------------------- /SupportedGames.txt: -------------------------------------------------------------------------------- 1 | -The Curse of Monkey Island 2 | -The Dig 3 | -Full Throttle 4 | -Sam & Max Hit the Road 5 | -Day of the Tentacle 6 | -Indiana Jones and the Fate of Atlantis 7 | -Monkey Island 2: LeChuck's revenge 8 | -The Secret of Monkey Island 9 | -The Passport to Adventure (Demo) 10 | -Loom 11 | -Indiana Jones and the Last Crusade 12 | -Zak McKracken and the Alien Mindbenders 13 | -Maniac Mansion 14 | -Beneath a Steel Sky by Revolution Software 15 | -Broken Sword: The Shadow of the Templars by Revolution Software -------------------------------------------------------------------------------- /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/assets/logo.png -------------------------------------------------------------------------------- /assets/screen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/assets/screen.jpg -------------------------------------------------------------------------------- /src/AUTHORS: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/AUTHORS -------------------------------------------------------------------------------- /src/Doc/Images/nscumm.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Doc/Images/nscumm.png -------------------------------------------------------------------------------- /src/Engines/NScumm.MonoGame/Platforms/WindowsGL/bin/Release/plugins/NScumm.Scumm.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Engines/NScumm.MonoGame/Platforms/WindowsGL/bin/Release/plugins/NScumm.Scumm.dll -------------------------------------------------------------------------------- /src/Engines/NScumm.MonoGame/Platforms/WindowsGL/bin/Release/plugins/NScumm.Scumm.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Engines/NScumm.MonoGame/Platforms/WindowsGL/bin/Release/plugins/NScumm.Scumm.pdb -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/Amiga/IPlayerMod.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IPlayerMod.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm.Audio.Amiga 23 | { 24 | public delegate void ModUpdateProc(); 25 | 26 | interface IPlayerMod 27 | { 28 | int MusicVolume { get; set; } 29 | 30 | void SetChannelVol(int id, int vol); 31 | 32 | void StartChannel(int id, byte[] data, int size, int rate, int vol, int loopStart = 0, int loopEnd = 0, int pan = 0); 33 | 34 | void StopChannel(int id); 35 | 36 | void SetChannelFreq(int id, int freq); 37 | 38 | void SetUpdateProc(ModUpdateProc proc, int freq); 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/AppleII/IAppleII_SoundFunction.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IAppleII_SoundFunction.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Scumm.Audio.Players; 23 | 24 | namespace NScumm.Scumm.Audio.AppleII 25 | { 26 | interface IAppleII_SoundFunction 27 | { 28 | void Init(Player_AppleII player, byte[] args); 29 | 30 | bool Update(); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/IMuse/CommandQueue.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IMuse.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Linq; 23 | using NScumm.Core; 24 | using NScumm.Scumm.IO; 25 | 26 | namespace NScumm.Scumm.Audio.IMuse 27 | { 28 | class CommandQueue 29 | { 30 | public int[] array; 31 | 32 | public CommandQueue() 33 | { 34 | array = new int[8]; 35 | } 36 | 37 | public void SaveOrLoad(Serializer ser) 38 | { 39 | LoadAndSaveEntry.Create(r => array = r.ReadInt16s(8).Select(i => (int)i).ToArray(), w => w.WriteInt16s(array.Cast().ToArray(), 8), 54).Execute(ser); 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/IMuse/DeferredCommand.cs: -------------------------------------------------------------------------------- 1 | // 2 | // DeferredCommand.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Scumm.Audio.IMuse 24 | { 25 | class DeferredCommand 26 | { 27 | public uint TimeLeft { get; set; } 28 | 29 | public int A { get; set; } 30 | 31 | public int B { get; set; } 32 | 33 | public int C { get; set; } 34 | 35 | public int D { get; set; } 36 | 37 | public int E { get; set; } 38 | 39 | public int F { get; set; } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/IMuse/IInstrumentInternal.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IInstrumentInternal.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core.Audio; 23 | using NScumm.Scumm.IO; 24 | 25 | namespace NScumm.Scumm.Audio.IMuse 26 | { 27 | interface IInstrumentInternal 28 | { 29 | void Send(MidiChannel mc); 30 | 31 | void CopyTo(Instrument dest); 32 | 33 | void SaveOrLoad(Serializer s); 34 | 35 | bool IsValid { get; } 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/IMuse/ISysEx.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ISysEx.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm.Audio.IMuse 23 | { 24 | interface ISysEx 25 | { 26 | void Do(Player player, byte[] msg, ushort len); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Audio/IMuse/TimerCallbackInfo.cs: -------------------------------------------------------------------------------- 1 | // 2 | // TimerCallbackInfo.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | using NScumm.Core.Audio; 24 | 25 | namespace NScumm.Scumm.Audio.IMuse 26 | { 27 | class TimerCallbackInfo 28 | { 29 | public IMuseInternal IMuse { get; set; } 30 | 31 | public MidiDriver Driver { get; set; } 32 | } 33 | 34 | } 35 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/BlastObject.cs: -------------------------------------------------------------------------------- 1 | // 2 | // BlastObject.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core.Graphics; 23 | 24 | namespace NScumm.Scumm 25 | { 26 | [System.Diagnostics.DebuggerDisplay("{DebuggerDisplay,nq}")] 27 | class BlastObject 28 | { 29 | public int Number { get; set; } 30 | 31 | public Rect Rect { get; set; } 32 | 33 | public int ScaleX { get; set; } 34 | 35 | public int ScaleY { get; set; } 36 | 37 | public int Image { get; set; } 38 | 39 | public int Mode { get; set; } 40 | 41 | internal string DebuggerDisplay 42 | { 43 | get 44 | { 45 | return string.Format("Id={0}, Rec={1}]", Number, Rect); 46 | } 47 | } 48 | } 49 | 50 | } 51 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/BlastText.cs: -------------------------------------------------------------------------------- 1 | // 2 | // BlastText.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core.Graphics; 23 | 24 | namespace NScumm.Scumm 25 | { 26 | class BlastText : TextObject 27 | { 28 | public Rect Rect { get; set; } 29 | 30 | public bool Center { get; set; } 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Box.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using System; 19 | 20 | namespace NScumm.Scumm 21 | { 22 | [Flags] 23 | public enum BoxFlags 24 | { 25 | XFlip = 0x08, 26 | YFlip = 0x10, 27 | IgnoreScale = 0x20, 28 | PlayerOnly = 0x20, 29 | Locked = 0x40, 30 | Invisible = 0x80 31 | } 32 | 33 | public class Box 34 | { 35 | public int Ulx, Uly; 36 | public int Urx, Ury; 37 | public int Lrx, Lry; 38 | public int Llx, Lly; 39 | public int Mask; 40 | public BoxFlags Flags; 41 | public int ScaleSlot; 42 | public int Scale; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/BoxCoords.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | 19 | using NScumm.Core.Graphics; 20 | 21 | namespace NScumm.Scumm 22 | { 23 | /// 24 | /// Box coordinates. 25 | /// 26 | public class BoxCoords 27 | { 28 | public Point UpperLeft; 29 | public Point UpperRight; 30 | public Point LowerLeft; 31 | public Point LowerRight; 32 | 33 | public bool InBoxQuickReject (Point p, int threshold) 34 | { 35 | int t = p.X - threshold; 36 | if (t > UpperLeft.X && t > UpperRight.X && t > LowerRight.X && t > LowerLeft.X) 37 | return true; 38 | 39 | t = p.X + threshold; 40 | if (t < UpperLeft.X && t < UpperRight.X && t < LowerRight.X && t < LowerLeft.X) 41 | return true; 42 | 43 | t = p.Y - threshold; 44 | if (t > UpperLeft.Y && t > UpperRight.Y && t > LowerRight.Y && t > LowerLeft.Y) 45 | return true; 46 | 47 | t = p.Y + threshold; 48 | if (t < UpperLeft.Y && t < UpperRight.Y && t < LowerRight.Y && t < LowerLeft.Y) 49 | return true; 50 | 51 | return false; 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Camera.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using NScumm.Core.Graphics; 19 | 20 | namespace NScumm.Scumm 21 | { 22 | /// 23 | /// Camera mode. 24 | /// 25 | enum CameraMode 26 | { 27 | Normal = 1, 28 | FollowActor = 2, 29 | Panning = 3 30 | } 31 | 32 | class Camera 33 | { 34 | public Point CurrentPosition; 35 | public Point DestinationPosition; 36 | public Point Accel; 37 | public Point LastPosition; 38 | public int LeftTrigger; 39 | public int RightTrigger; 40 | public byte ActorToFollow; 41 | 42 | public CameraMode Mode { get; set; } 43 | 44 | public bool MovingToActor { get; set; } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ClickArea.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Scumm 19 | { 20 | public enum ClickArea 21 | { 22 | Verb = 1, 23 | Scene = 2, 24 | Inventory = 3, 25 | Key = 4, 26 | Sentence = 5 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/CostumeData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Scumm 19 | { 20 | public class CostumeData 21 | { 22 | public byte[] Active; 23 | public ushort AnimCounter; 24 | public byte SoundCounter; 25 | public byte SoundPos; 26 | public ushort Stopped; 27 | public ushort[] Curpos; 28 | public ushort[] Start; 29 | public ushort[] End; 30 | public ushort[] Frame; 31 | 32 | public ushort Current; 33 | 34 | public CostumeData() 35 | { 36 | Active = new byte[16]; 37 | Curpos = new ushort[16]; 38 | Start = new ushort[16]; 39 | End = new ushort[16]; 40 | Frame = new ushort[16]; 41 | } 42 | 43 | public void Reset() 44 | { 45 | Current = 0; 46 | Stopped = 0; 47 | for (int i = 0; i < 16; i++) 48 | { 49 | Active[i] = 0; 50 | Curpos[i] = Start[i] = End[i] = Frame[i] = 0xFFFF; 51 | } 52 | } 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Cursor.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using NScumm.Core.Graphics; 19 | 20 | namespace NScumm.Scumm 21 | { 22 | public class Cursor 23 | { 24 | public sbyte State { get; set; } 25 | public bool Animate { get; set; } 26 | public int AnimateIndex { get; set; } 27 | public Point Hotspot { get; set; } 28 | public int Width { get; set; } 29 | public int Height { get; set; } 30 | 31 | public Cursor() 32 | { 33 | Animate = true; 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/FlashLight.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using NScumm.Core.Graphics; 19 | using NScumm.Scumm.Graphics; 20 | 21 | namespace NScumm.Scumm 22 | { 23 | public struct FlashLight 24 | { 25 | public int X, Y, W, H; 26 | public ushort XStrips, YStrips; 27 | public bool IsDrawn; 28 | 29 | public PixelNavigator? PixelNavigator; 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Graphics/ICostumeRenderer.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Scumm.Graphics 19 | { 20 | interface ICostumeRenderer 21 | { 22 | int DrawTop { get; set; } 23 | 24 | int DrawBottom { get; set; } 25 | 26 | byte ActorID { get; set; } 27 | 28 | byte ShadowMode { get; set; } 29 | 30 | byte[] ShadowTable { get; set; } 31 | 32 | int ActorX { get; set; } 33 | 34 | int ActorY { get; set; } 35 | 36 | byte ZBuffer { get; set; } 37 | 38 | byte ScaleX { get; set; } 39 | 40 | byte ScaleY { get; set; } 41 | 42 | void SetPalette(ushort[] palette); 43 | 44 | void SetFacing(Actor a); 45 | 46 | void SetCostume(int costume, int shadow); 47 | 48 | int DrawCostume(VirtScreen vs, int numStrips, Actor actor, bool drawToBackBuf); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Graphics/ZPlane.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ZPlane.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | 24 | namespace NScumm.Scumm.Graphics 25 | { 26 | public class ZPlane 27 | { 28 | public byte[] Data 29 | { 30 | get; 31 | private set; 32 | } 33 | 34 | public IList StripOffsets 35 | { 36 | get; 37 | private set; 38 | } 39 | 40 | public ZPlane(byte[] data, IList offsets) 41 | { 42 | Data = data; 43 | StripOffsets = offsets; 44 | } 45 | 46 | public ZPlane Clone() 47 | { 48 | var zplane = (ZPlane)this.MemberwiseClone(); 49 | return zplane; 50 | } 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/AkosHeader.cs: -------------------------------------------------------------------------------- 1 | // 2 | // AkosHeader.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | using System.Runtime.InteropServices; 22 | 23 | namespace NScumm.Scumm.IO 24 | { 25 | struct AkosHeader 26 | { 27 | public ushort unk_1; 28 | public byte flags; 29 | public byte unk_2; 30 | public ushort num_anims; 31 | public ushort unk_3; 32 | public ushort codec; 33 | } 34 | 35 | [StructLayout(LayoutKind.Explicit)] 36 | struct AkosOffset 37 | { 38 | [FieldOffset(0)] 39 | public uint akcd; 40 | // offset into the akcd data 41 | [FieldOffset(4)] 42 | public ushort akci; 43 | // offset into the akci data 44 | } 45 | } 46 | 47 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/ICostumeLoader.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Scumm.IO 19 | { 20 | interface ICostumeLoader 21 | { 22 | void LoadCostume(int id); 23 | int IncreaseAnims(Actor actor); 24 | void CostumeDecodeData(Actor actor, int frame, uint usemask); 25 | bool HasManyDirections(int id); 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/ResourceIndex4.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | 19 | namespace NScumm.Scumm.IO 20 | { 21 | class ResourceIndex4: ResourceIndex3 22 | { 23 | protected override byte GetEncodingByte(GameInfo game) 24 | { 25 | byte encByte = 0; 26 | if (!game.Features.HasFlag(GameFeatures.Old256)) 27 | { 28 | encByte = 0; 29 | } 30 | return encByte; 31 | } 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/ResourceManager0.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ResourceManager0.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core; 23 | 24 | namespace NScumm.Scumm.IO 25 | { 26 | class ResourceManager0: ResourceManager 27 | { 28 | public ResourceManager0(GameInfo game) 29 | : base(game) 30 | { 31 | } 32 | 33 | protected override ResourceFile OpenRoom(byte roomIndex) 34 | { 35 | var stream = ScummDiskImage.CreateResource((ResourceIndex0)Index, roomIndex); 36 | var file = new ResourceFile0(stream); 37 | return file; 38 | } 39 | 40 | protected override byte[] ReadCharset(byte id) 41 | { 42 | // Stub, V0 font resources are hardcoded into the engine. 43 | return null; 44 | } 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/ResourceManager8.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ResourceManager5.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core; 23 | 24 | namespace NScumm.Scumm.IO 25 | { 26 | class ResourceManager8: ResourceManager7 27 | { 28 | public ResourceManager8(GameInfo game) 29 | : base(game) 30 | { 31 | } 32 | 33 | protected override ResourceFile OpenRoom(byte roomIndex) 34 | { 35 | var diskNum = Index.RoomResources[roomIndex].RoomNum; 36 | var diskName = Game.Pattern == null ? string.Format("{0}.{1:000}", Game.Id, diskNum) : string.Format(Game.Pattern, diskNum); 37 | var game1Path = ScummHelper.NormalizePath(ServiceLocator.FileStorage.Combine(Directory, diskName)); 38 | 39 | var file = new ResourceFile8((ResourceIndex8)Index, ServiceLocator.FileStorage.OpenFileRead(game1Path)); 40 | return file; 41 | } 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/IO/ScummMetaEngine.cs: -------------------------------------------------------------------------------- 1 | using System.IO; 2 | using NScumm.Core; 3 | using NScumm.Core.Audio; 4 | using NScumm.Core.Graphics; 5 | using NScumm.Core.Input; 6 | using NScumm.Core.IO; 7 | 8 | namespace NScumm.Scumm.IO 9 | { 10 | public class ScummMetaEngine : IMetaEngine 11 | { 12 | private readonly GameManager _gm; 13 | bool isCustomDatabaseSet = false; 14 | public ScummMetaEngine() : this(ServiceLocator.FileStorage.OpenContent("Nscumm.xml")) 15 | { 16 | } 17 | 18 | public ScummMetaEngine(Stream stream) 19 | { 20 | _gm = GameManager.Create(stream); 21 | } 22 | 23 | public IEngine Create(GameSettings settings, IGraphicsManager gfxManager, IInputManager inputManager, IAudioOutput output, ISaveFileManager saveFileManager, bool debugMode = false) 24 | { 25 | return ScummEngine.Create(settings, gfxManager, inputManager, output, debugMode); 26 | } 27 | 28 | public GameDetected DetectGame(string path) 29 | { 30 | return new GameDetected(_gm.GetInfo(path), this); 31 | } 32 | } 33 | } -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Languages/Language.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Reflection; 5 | using System.Runtime.Serialization; 6 | using System.Text; 7 | using System.Threading.Tasks; 8 | 9 | namespace NScumm.Scumm 10 | { 11 | [DataContract] 12 | public partial class Language 13 | { 14 | /// 15 | /// Language name ( doesn't affect anything ) 16 | /// 17 | [DataMember] 18 | public string FullName { get; } 19 | 20 | /// 21 | /// ISO639 table: 22 | /// 23 | [DataMember] 24 | public string ISO639 { get; } 25 | 26 | /// 27 | /// Creates new Language 28 | /// 29 | /// Language full name (set what do you want) 30 | /// ISO639 value 31 | public Language(string fullName, string iso639) 32 | { 33 | FullName = fullName; 34 | ISO639 = iso639; 35 | } 36 | 37 | protected bool Equals(Language other) 38 | { 39 | return string.Equals(ISO639, other.ISO639, StringComparison.OrdinalIgnoreCase); 40 | } 41 | 42 | public override bool Equals(object obj) 43 | { 44 | if (ReferenceEquals(null, obj)) return false; 45 | if (ReferenceEquals(this, obj)) return true; 46 | if (obj.GetType() != GetType()) return false; 47 | 48 | return Equals((Language) obj); 49 | } 50 | 51 | public override int GetHashCode() 52 | { 53 | return StringComparer.OrdinalIgnoreCase.GetHashCode(ISO639); 54 | } 55 | 56 | public override string ToString() 57 | { 58 | return $"FullName: {FullName}, ISO639: {ISO639}"; 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Languages/LanguageAttribute.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Runtime.CompilerServices; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | namespace System.Runtime.CompilerServices 8 | { 9 | sealed class CallerMemberNameAttribute : Attribute { } 10 | } 11 | 12 | namespace NScumm.Scumm 13 | { 14 | [AttributeUsage(AttributeTargets.Property, AllowMultiple = false)] 15 | internal class LanguageAttribute: Attribute 16 | { 17 | public string Iso639 { get; } 18 | public string FullName { get; } 19 | public LanguageAttribute(string iso, [CallerMemberName] string fullName = "") 20 | { 21 | if (string.IsNullOrWhiteSpace(iso)) 22 | throw new ArgumentException(nameof(iso)); 23 | 24 | Iso639 = iso; 25 | FullName = fullName; 26 | } 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Languages/LanguageIsNotSupportedException.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace NScumm.Scumm 8 | { 9 | class LanguageIsNotSupportedException: Exception 10 | { 11 | public readonly Language Language; 12 | 13 | public LanguageIsNotSupportedException(Language language) 14 | :base("Language is not supported by GoogleTranslate:") 15 | { 16 | Language = language; 17 | } 18 | 19 | public override string Message => base.Message + " " + Language; 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Languages/LanguageModel.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace NScumm.Scumm 8 | { 9 | public class LanguageModel 10 | { 11 | public string LanguageName; 12 | public LanguageModel(Language language) 13 | { 14 | LanguageName = language.FullName; 15 | } 16 | public LanguageModel(string language) 17 | { 18 | LanguageName = language; 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/NestedScript.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using NScumm.Core; 19 | using NScumm.Scumm.IO; 20 | 21 | namespace NScumm.Scumm 22 | { 23 | public class NestedScript 24 | { 25 | public ushort Number; 26 | public WhereIsObject Where; 27 | public byte Slot; 28 | 29 | public void SaveOrLoad(Serializer serializer) 30 | { 31 | var nestedScriptEntries = new[] 32 | { 33 | LoadAndSaveEntry.Create(reader => Number = reader.ReadUInt16(), writer => writer.WriteUInt16(Number), 8), 34 | LoadAndSaveEntry.Create(reader => Where = (WhereIsObject)reader.ReadByte(), writer => writer.WriteByte((byte)Where), 8), 35 | LoadAndSaveEntry.Create(reader => Slot = reader.ReadByte(), writer => writer.WriteByte(Slot), 8), 36 | }; 37 | nestedScriptEntries.ForEach(e => e.Execute(serializer)); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/OpCodeAttribute.cs: -------------------------------------------------------------------------------- 1 | // 2 | // OpCodeAttribute.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System; 23 | 24 | namespace NScumm.Scumm 25 | { 26 | [AttributeUsage(AttributeTargets.All, Inherited = false, AllowMultiple = true)] 27 | public sealed class OpCodeAttribute: Attribute 28 | { 29 | public byte[] Ids 30 | { 31 | get; 32 | private set; 33 | } 34 | 35 | public OpCodeAttribute(params byte[] ids) 36 | { 37 | Ids = ids; 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Resources; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("NScumm.Scumm")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("NScumm.Scumm")] 14 | [assembly: AssemblyCopyright("Copyright © 2015")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: NeutralResourcesLanguage("en")] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScriptData.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Scumm 19 | { 20 | public class ScriptData 21 | { 22 | public byte[] Data { get; set; } 23 | 24 | public long Offset { get; set; } 25 | 26 | public ScriptData Clone() 27 | { 28 | return (ScriptData)this.MemberwiseClone(); 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScummEngine3_Camera.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScummEngine3_Camera.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU Lesser General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU Lesser General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU Lesser General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core.Graphics; 23 | 24 | namespace NScumm.Scumm 25 | { 26 | partial class ScummEngine3 27 | { 28 | protected override void PanCameraTo() 29 | { 30 | PanCameraToCore(new Point((short)GetVarOrDirectWord(OpCodeParameter.Param1), 0)); 31 | } 32 | 33 | protected override void SetCameraAt() 34 | { 35 | short at = (short)GetVarOrDirectWord(OpCodeParameter.Param1); 36 | Camera.Mode = CameraMode.Normal; 37 | Camera.CurrentPosition.X = at; 38 | SetCameraAt(new Point(at, 0)); 39 | Camera.MovingToActor = false; 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScummEngine3_Drawing.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScummEngine3_Drawing.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU Lesser General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU Lesser General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU Lesser General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm 23 | { 24 | partial class ScummEngine3 25 | { 26 | void DrawBox() 27 | { 28 | var x = GetVarOrDirectWord(OpCodeParameter.Param1); 29 | var y = GetVarOrDirectWord(OpCodeParameter.Param2); 30 | 31 | _opCode = ReadByte(); 32 | var x2 = GetVarOrDirectWord(OpCodeParameter.Param1); 33 | var y2 = GetVarOrDirectWord(OpCodeParameter.Param2); 34 | var color = GetVarOrDirectByte(OpCodeParameter.Param3); 35 | 36 | DrawBoxCore(x, y, x2, y2, color); 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScummEngine3_Inventory.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScummEngine3_Inventory.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU Lesser General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU Lesser General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU Lesser General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Scumm 24 | { 25 | partial class ScummEngine3 26 | { 27 | void GetInventoryCount() 28 | { 29 | GetResult(); 30 | SetResult(GetInventoryCountCore(GetVarOrDirectByte(OpCodeParameter.Param1))); 31 | } 32 | 33 | void FindInventory() 34 | { 35 | GetResult(); 36 | var x = GetVarOrDirectByte(OpCodeParameter.Param1); 37 | var y = GetVarOrDirectByte(OpCodeParameter.Param2); 38 | SetResult(FindInventoryCore(x, y)); 39 | } 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScummEngine3_Light.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScummEngine3_Light.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU Lesser General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU Lesser General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU Lesser General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm 23 | { 24 | partial class ScummEngine3 25 | { 26 | void Lights() 27 | { 28 | var a = GetVarOrDirectByte(OpCodeParameter.Param1); 29 | var b = ReadByte(); 30 | var c = ReadByte(); 31 | 32 | if (c == 0) 33 | Variables[VariableCurrentLights.Value] = a; 34 | else if (c == 1) 35 | { 36 | _flashlight.XStrips = (ushort)a; 37 | _flashlight.YStrips = b; 38 | } 39 | _fullRedraw = true; 40 | } 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/ScummEngine6_Inventory.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScummEngine6_Inventory.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm 23 | { 24 | partial class ScummEngine6 25 | { 26 | [OpCode(0x92)] 27 | protected virtual void FindInventory(int owner, int index) 28 | { 29 | Push(FindInventoryCore(owner, index)); 30 | } 31 | 32 | 33 | [OpCode(0x93)] 34 | protected virtual void GetInventoryCount(int owner) 35 | { 36 | Push(GetInventoryCountCore(owner)); 37 | } 38 | } 39 | } 40 | 41 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/SubtitleText.cs: -------------------------------------------------------------------------------- 1 | // 2 | // SubtitleText.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Scumm 23 | { 24 | 25 | class SubtitleText : TextObject 26 | { 27 | public bool ActorSpeechMsg { get; set; } 28 | } 29 | } 30 | 31 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/TextObject.cs: -------------------------------------------------------------------------------- 1 | // 2 | // TextObject.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Scumm 24 | { 25 | class TextObject 26 | { 27 | public int X { get; set; } 28 | 29 | public int Y { get; set; } 30 | 31 | public byte Color { get; set; } 32 | 33 | public byte Charset { get; set; } 34 | 35 | public byte[] Text { get; private set; } 36 | 37 | public TextObject() 38 | { 39 | Text = new byte[256]; 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/TraceSwitches.cs: -------------------------------------------------------------------------------- 1 | namespace NScumm.Scumm 2 | { 3 | static class TraceSwitches 4 | { 5 | public const string OpCodes = "OpCodes"; 6 | public const string Music = "Music"; 7 | } 8 | } -------------------------------------------------------------------------------- /src/Engines/NScumm.Scumm/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Sky/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Resources; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("NScumm.Sky")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("NScumm.Sky")] 14 | [assembly: AssemblyCopyright("Copyright © 2015")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: NeutralResourcesLanguage("en")] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Sky/SkyDefines.tt: -------------------------------------------------------------------------------- 1 | <#@ template debug="false" hostspecific="true" language="C#" #> 2 | <#@ assembly name="System.Core" #> 3 | <#@ import namespace="System.Linq" #> 4 | <#@ import namespace="System.Text" #> 5 | <#@ import namespace="System.Collections.Generic" #> 6 | <#@ import namespace="System.IO" #> 7 | <#@ output extension=".cs" #> 8 | <# 9 | var content=new StringBuilder(); 10 | var lines = File.ReadAllLines(this.Host.ResolvePath("skydefs.h")); 11 | var regex = new System.Text.RegularExpressions.Regex(@"define\s+(?\w+)\s+(?[^/]+)"); 12 | foreach(var line in lines) 13 | { 14 | var m = regex.Match(line); 15 | if (m.Success) 16 | { 17 | var name = m.Groups["name"].Value; 18 | var value = m.Groups["value"].Value.Trim(); 19 | content.AppendFormat("\t\tpublic const int {0} = {1};", name, value).AppendLine(); 20 | } 21 | } 22 | #> 23 | namespace NScumm.Sky 24 | { 25 | partial class Logic 26 | { 27 | <#= content.ToString() #> 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Sky/sky.cpt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Engines/NScumm.Sky/sky.cpt -------------------------------------------------------------------------------- /src/Engines/NScumm.Sword1/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Resources; 2 | using System.Reflection; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("NScumm.Sword1")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("NScumm.Sword1")] 14 | [assembly: AssemblyCopyright("Copyright © 2015")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: NeutralResourcesLanguage("en")] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | -------------------------------------------------------------------------------- /src/Engines/NScumm.Sword1/SwordSystem.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using NScumm.Core; 20 | using NScumm.Core.Graphics; 21 | using NScumm.Core.Input; 22 | 23 | namespace NScumm.Sword1 24 | { 25 | class SwordSystem : ISystem 26 | { 27 | public IGraphicsManager GraphicsManager { get; } 28 | public IInputManager InputManager { get; } 29 | public ISaveFileManager SaveFileManager { get; } 30 | 31 | public SwordSystem(IGraphicsManager graphicsManager, IInputManager inputManager, ISaveFileManager saveFileManager) 32 | { 33 | GraphicsManager = graphicsManager; 34 | InputManager = inputManager; 35 | SaveFileManager = saveFileManager; 36 | } 37 | } 38 | } -------------------------------------------------------------------------------- /src/Engines/NScumm.Sword1/swordres.tt: -------------------------------------------------------------------------------- 1 | <#@ template debug="false" hostspecific="true" language="C#" #> 2 | <#@ assembly name="System.Core" #> 3 | <#@ import namespace="System.Linq" #> 4 | <#@ import namespace="System.Text" #> 5 | <#@ import namespace="System.Collections.Generic" #> 6 | <#@ import namespace="System.IO" #> 7 | <#@ output extension=".cs" #> 8 | <# 9 | var content=new StringBuilder(); 10 | var lines = File.ReadAllLines(this.Host.ResolvePath("swordres.h")); 11 | var regex = new System.Text.RegularExpressions.Regex(@"^#define\s+(?\w+)\s+(?[^/]+)"); 12 | foreach(var line in lines) 13 | { 14 | var m = regex.Match(line); 15 | if (m.Success) 16 | { 17 | var name = m.Groups["name"].Value; 18 | var value = m.Groups["value"].Value.Trim(); 19 | content.AppendFormat("\t\tpublic const int {0} = {1};", name, value).AppendLine(); 20 | } 21 | } 22 | #> 23 | namespace NScumm.Sword1 24 | { 25 | static partial class SwordRes 26 | { 27 | <#= content.ToString() #> 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/CMSMusicPlugin.cs: -------------------------------------------------------------------------------- 1 | // 2 | // CMSMusicPlugin.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using NScumm.Core.Audio.Midi; 24 | 25 | namespace NScumm.Core.Audio.SoftSynth 26 | { 27 | class CMSMusicPlugin : MusicPluginObject, IMusicPluginObject 28 | { 29 | public override string Id 30 | { 31 | get{ return "cms"; } 32 | } 33 | 34 | public override string Name 35 | { 36 | get { return "Creative Music System Emulator"; } 37 | } 38 | 39 | public override IList GetDevices() 40 | { 41 | return new []{ new MusicDevice(this, string.Empty, MusicType.CMS) }; 42 | } 43 | 44 | public override IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle) 45 | { 46 | return new NullMidiDriver(); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/Decoders/Ima_ADPCMStream.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Ima_ADPCMStream.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio.Decoders 23 | { 24 | public class Ima_ADPCMStream 25 | { 26 | /// 27 | /// This table is used by decodeIMA. 28 | /// 29 | public static readonly short[] _imaTable = 30 | { 31 | 7, 8, 9, 10, 11, 12, 13, 14, 32 | 16, 17, 19, 21, 23, 25, 28, 31, 33 | 34, 37, 41, 45, 50, 55, 60, 66, 34 | 73, 80, 88, 97, 107, 118, 130, 143, 35 | 157, 173, 190, 209, 230, 253, 279, 307, 36 | 337, 371, 408, 449, 494, 544, 598, 658, 37 | 724, 796, 876, 963, 1060, 1166, 1282, 1411, 38 | 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 39 | 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 40 | 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 41 | 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 42 | 32767 43 | }; 44 | } 45 | } 46 | 47 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/DeviceHandle.cs: -------------------------------------------------------------------------------- 1 | // 2 | // DeviceHandle.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Core.Audio 24 | { 25 | public struct DeviceHandle 26 | { 27 | readonly int handle; 28 | static readonly DeviceHandle _invalid = new DeviceHandle(0); 29 | 30 | /// 31 | /// Initializes a new instance of the struct. 32 | /// 33 | /// Handle. 34 | /// 35 | /// The value 0 is reserved for an invalid device for now. 36 | /// TODO: Maybe we should use -1 (i.e. 0xFFFFFFFF) as invalid device? 37 | /// 38 | public DeviceHandle(int handle) 39 | : this() 40 | { 41 | this.handle = handle; 42 | } 43 | 44 | public bool IsValid { get { return handle != 0; } } 45 | 46 | public static DeviceHandle Invalid 47 | { 48 | get{ return _invalid; } 49 | } 50 | } 51 | 52 | } 53 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/IAudioOutput.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IAudioOutput.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | using NScumm.Core.Audio.SampleProviders; 22 | using System; 23 | 24 | namespace NScumm.Core.Audio 25 | { 26 | public interface IAudioOutput: IDisposable 27 | { 28 | void Play(); 29 | void Stop(); 30 | void Pause(); 31 | 32 | void SetSampleProvider(IAudioSampleProvider audioSampleProvider); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/ISoundRepository.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ISoundRepository.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio 23 | { 24 | public interface ISoundRepository 25 | { 26 | byte[] GetSound(int id); 27 | } 28 | } 29 | 30 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/Midi/IMidiDriver.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IMidiDriver.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Core.Audio.Midi 24 | { 25 | public interface IMidiDriver 26 | { 27 | void Send(int data); 28 | 29 | void SysEx(byte[] msg, ushort length); 30 | 31 | void MetaEvent(byte type, byte[] data, ushort length); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/Midi/NoteTimer.cs: -------------------------------------------------------------------------------- 1 | // 2 | // NoteTimer.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core 23 | { 24 | class NoteTimer 25 | { 26 | /// 27 | /// Gets or sets the MIDI channel on which the note was played. 28 | /// 29 | /// The channel. 30 | public int Channel { get; set; } 31 | 32 | /// 33 | /// Gets or sets the note number for the active note. 34 | /// 35 | /// The note. 36 | public int Note { get; set; } 37 | 38 | /// 39 | /// Gets or sets the time, in microseconds, remaining before the note should be turned off 40 | /// 41 | /// The time left. 42 | public int TimeLeft { get; set; } 43 | } 44 | 45 | } 46 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/MusicManager.cs: -------------------------------------------------------------------------------- 1 | // 2 | // MusicManager.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Linq; 23 | using System.Collections.Generic; 24 | using System; 25 | 26 | namespace NScumm.Core.Audio 27 | { 28 | /// 29 | /// Singleton class which manages all Music plugins. 30 | /// 31 | public static class MusicManager 32 | { 33 | public static IList GetPlugins() 34 | { 35 | var types = (from type in typeof(MusicManager).Assembly.GetTypes() 36 | where !type.IsAbstract && type.GetInterfaces().Contains(typeof(IMusicPluginObject)) 37 | select (IMusicPluginObject)Activator.CreateInstance(type)).ToList(); 38 | 39 | return types; 40 | } 41 | } 42 | 43 | } 44 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/MusicPluginObject.cs: -------------------------------------------------------------------------------- 1 | // 2 | // MusicPluginObject.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using NScumm.Core.Audio.Midi; 24 | 25 | namespace NScumm.Core.Audio 26 | { 27 | abstract class MusicPluginObject: IMusicPluginObject 28 | { 29 | public abstract IList GetDevices(); 30 | 31 | public abstract IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle); 32 | 33 | public abstract string Id 34 | { 35 | get; 36 | } 37 | 38 | public abstract string Name 39 | { 40 | get; 41 | } 42 | 43 | public virtual bool CheckDevice(DeviceHandle handle) 44 | { 45 | return true; 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/OPL/IOpl.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | namespace NScumm.Core.Audio.OPL 19 | { 20 | public enum OplType 21 | { 22 | Opl2, 23 | DualOpl2, 24 | Opl3 25 | } 26 | 27 | public interface IOpl 28 | { 29 | void Init(int rate); 30 | 31 | void WriteReg(int r, int v); 32 | 33 | void ReadBuffer(short[] buffer, int pos, int length); 34 | 35 | bool IsStereo { get; } 36 | } 37 | } 38 | 39 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/PCJuniorMusicPlugin.cs: -------------------------------------------------------------------------------- 1 | // 2 | // PCJuniorMusicPlugin.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using NScumm.Core.Audio.Midi; 24 | 25 | namespace NScumm.Core.Audio.SoftSynth 26 | { 27 | 28 | class PCJuniorMusicPlugin : MusicPluginObject, IMusicPluginObject 29 | { 30 | public override string Id 31 | { 32 | get{ return "pcjr"; } 33 | } 34 | 35 | public override string Name 36 | { 37 | get { return "IBM PCjr Emulator"; } 38 | } 39 | 40 | public override IList GetDevices() 41 | { 42 | return new []{ new MusicDevice(this, string.Empty, MusicType.PCjr) }; 43 | } 44 | 45 | public override IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle) 46 | { 47 | return new PCSpeakerDriver(mixer); 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/PCSpeakerMusicPlugin.cs: -------------------------------------------------------------------------------- 1 | // 2 | // PCSpeakerMusicPlugin.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using NScumm.Core.Audio.Midi; 24 | 25 | namespace NScumm.Core.Audio.SoftSynth 26 | { 27 | class PCSpeakerMusicPlugin : MusicPluginObject, IMusicPluginObject 28 | { 29 | public override string Id 30 | { 31 | get{ return "pcspk"; } 32 | } 33 | 34 | public override string Name 35 | { 36 | get { return "PC Speaker Emulator"; } 37 | } 38 | 39 | public override IList GetDevices() 40 | { 41 | return new []{ new MusicDevice(this, string.Empty, MusicType.PCSpeaker) }; 42 | } 43 | 44 | public override IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle) 45 | { 46 | return new PCSpeakerDriver(mixer); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/RateConverters/IRateConverter.cs: -------------------------------------------------------------------------------- 1 | // 2 | // rate.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio 23 | { 24 | public interface IRateConverter 25 | { 26 | int Flow(IAudioStream input, short[] obuf, int count, int volLeft, int volRight); 27 | 28 | int Drain(short[] obuf, int vol); 29 | } 30 | } 31 | 32 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SampleProviders/AudioSampleProvider16.cs: -------------------------------------------------------------------------------- 1 | // 2 | // AudioSampleProvider16.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | 23 | namespace NScumm.Core.Audio.SampleProviders 24 | { 25 | public abstract class AudioSampleProvider16 : IAudioSampleProvider 26 | { 27 | public abstract AudioFormat AudioFormat 28 | { 29 | get; 30 | } 31 | 32 | public abstract int Read(short[] samples, int count); 33 | 34 | public int Read(byte[] samples, int count) 35 | { 36 | var buffer = new short[count / 2]; 37 | var numRead = Read(buffer, count / 2); 38 | var offs = 0; 39 | for (int i = 0; i < numRead; i++) 40 | { 41 | samples[offs++] = (byte)(buffer[i] & 0xFF); 42 | samples[offs++] = (byte)((buffer[i] >> 8) & 0xFF); 43 | } 44 | return numRead * 2; 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SampleProviders/IAudioSampleProvider.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IAudioSampleProvider.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio.SampleProviders 23 | { 24 | public interface IAudioSampleProvider 25 | { 26 | AudioFormat AudioFormat { get; } 27 | 28 | int Read(byte[] samples, int count); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SoftSynth/Adlib.cs: -------------------------------------------------------------------------------- 1 | // 2 | // adlib.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using NScumm.Core.Audio.Midi; 24 | 25 | namespace NScumm.Core.Audio.SoftSynth 26 | { 27 | class AdlibEmuMusicPlugin : MusicPluginObject, IMusicPluginObject 28 | { 29 | public override string Id 30 | { 31 | get{ return "adlib"; } 32 | } 33 | 34 | public override string Name 35 | { 36 | get { return "Adlib Emulator"; } 37 | } 38 | 39 | public override IList GetDevices() 40 | { 41 | return new []{ new MusicDevice(this, string.Empty, MusicType.AdLib) }; 42 | } 43 | 44 | public override IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle) 45 | { 46 | // TODO: 47 | return new AdlibMidiDriver(mixer); 48 | } 49 | } 50 | 51 | } 52 | 53 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SoftSynth/FMTownsPc98/ITownsAudioInterfacePluginDriver.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ITownsAudioInterfacePluginDriver.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio.SoftSynth 23 | { 24 | public interface ITownsAudioInterfacePluginDriver 25 | { 26 | void TimerCallback(int timerId); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SoftSynth/FMTownsPc98/TownsEmuMusicPlugin.cs: -------------------------------------------------------------------------------- 1 | // 2 | // TownsEmuMusicPlugin.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio.SoftSynth 23 | { 24 | class TownsEmuMusicPlugin: IMusicPluginObject 25 | { 26 | public System.Collections.Generic.IList GetDevices() 27 | { 28 | return new []{ new MusicDevice(this, "", MusicType.FMTowns) }; 29 | } 30 | 31 | public bool CheckDevice(DeviceHandle handle) 32 | { 33 | return true; 34 | } 35 | 36 | public NScumm.Core.Audio.Midi.IMidiDriver CreateInstance(IMixer mixer, DeviceHandle handle) 37 | { 38 | return new MidiDriver_TOWNS(mixer); 39 | } 40 | 41 | public string Name 42 | { 43 | get 44 | { 45 | return "FM-Towns Audio"; 46 | } 47 | } 48 | 49 | public string Id 50 | { 51 | get 52 | { 53 | return "towns"; 54 | } 55 | } 56 | } 57 | 58 | } 59 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SoftSynth/ISid.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ISid.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | /* 23 | * This file is based on reSID, a MOS6581 SID emulator engine. 24 | * Copyright (C) 2004 Dag Lem 25 | */ 26 | 27 | namespace NScumm.Core.Audio.SoftSynth 28 | { 29 | public interface ISid 30 | { 31 | bool EnableFilter { get; set; } 32 | 33 | bool SetSamplingParameters(double clock_freq, double sample_freq, double pass_freq = -1, double filter_scale = 0.97); 34 | 35 | int UpdateClock(ref int delta_t, short[] buf, int offset, int n, int interleave = 1); 36 | 37 | void Reset(); 38 | 39 | // write registers. 40 | void Write(int offset, int value); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/NScumm.Core/Audio/SoundHandle.cs: -------------------------------------------------------------------------------- 1 | // 2 | // SoundHandle.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core.Audio 23 | { 24 | public struct SoundHandle 25 | { 26 | public int Value; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/NScumm.Core/Graphics/ThumbnailHeader.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core.Graphics 20 | { 21 | public class ThumbnailHeader 22 | { 23 | public uint Type; 24 | public uint Size; 25 | public byte Version; 26 | public ushort Width, Height; 27 | public byte Bpp; 28 | } 29 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IAudioManager.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IAudioManager.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.IO; 23 | using NScumm.Core.Audio; 24 | 25 | namespace NScumm.Core 26 | { 27 | public interface IAudioManager 28 | { 29 | IRewindableAudioStream MakeStream(string filename); 30 | IAudioStream MakeFlacStream(Stream stream); 31 | IAudioStream MakeVorbisStream(Stream stream); 32 | IAudioStream MakeMp3Stream(Stream stream); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/NScumm.Core/IEnableTrace.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IEnableTrace.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Core 23 | { 24 | public interface IEnableTrace 25 | { 26 | } 27 | 28 | public interface ITrace 29 | { 30 | void Write(string traceName, string format, params object[] args); 31 | } 32 | 33 | class NullTrace: ITrace 34 | { 35 | public void Write(string traceName, string format, params object[] args) 36 | { 37 | } 38 | } 39 | 40 | public static class EnableTraceExtension 41 | { 42 | public static ITrace Trace(this IEnableTrace trace) 43 | { 44 | if (ServiceLocator.TraceFatory != null) 45 | return ServiceLocator.TraceFatory.CreateTrace(trace) ?? new NullTrace(); 46 | return new NullTrace(); 47 | } 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /src/NScumm.Core/IEngine.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using System; 20 | 21 | namespace NScumm.Core 22 | { 23 | public interface IEngine 24 | { 25 | event EventHandler ShowMenuDialogRequested; 26 | bool HasToQuit { get; set; } 27 | bool IsPaused { get; set; } 28 | 29 | void Run(); 30 | 31 | // TODO: remove this 32 | void Load(string filename); 33 | void Save(string filename); 34 | } 35 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IO/GameDetected.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core.IO 20 | { 21 | public class GameDetected 22 | { 23 | public GameDetected(IGameDescriptor game, IMetaEngine engine) 24 | { 25 | Game = game; 26 | Engine = engine; 27 | } 28 | 29 | public IMetaEngine Engine { get; private set; } 30 | public IGameDescriptor Game { get; private set; } 31 | } 32 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IO/GameDetector.cs: -------------------------------------------------------------------------------- 1 | // 2 | // GameDetector.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | using System.Linq; 24 | 25 | namespace NScumm.Core.IO 26 | { 27 | public class GameDetector 28 | { 29 | private List _engines; 30 | 31 | public void Add(IMetaEngine engine) 32 | { 33 | if (_engines == null) _engines = new List(); 34 | _engines.Add(engine); 35 | } 36 | 37 | public GameDetected DetectGame(string path) 38 | { 39 | return _engines.Select(e => e.DetectGame(path)).FirstOrDefault(o => o != null && o.Game != null); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/NScumm.Core/IO/GameSettings.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core.IO 20 | { 21 | public class GameSettings 22 | { 23 | public IGameDescriptor Game { get; private set; } 24 | 25 | public IMetaEngine MetaEngine { get; private set; } 26 | 27 | public string AudioDevice { get; set; } 28 | 29 | public bool CopyProtection { get; set; } 30 | 31 | public int BootParam { get; set; } 32 | 33 | public GameSettings(IGameDescriptor game, IMetaEngine engine) 34 | { 35 | Game = game; 36 | AudioDevice = "adlib"; 37 | MetaEngine = engine; 38 | } 39 | } 40 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IO/IGameDescriptor.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using System.Globalization; 20 | using NScumm.Core.Graphics; 21 | 22 | namespace NScumm.Core.IO 23 | { 24 | public interface IGameDescriptor 25 | { 26 | string Id { get; } 27 | string Description { get; } 28 | CultureInfo Culture { get; } 29 | Platform Platform { get; } 30 | int Width { get; } 31 | int Height { get; } 32 | 33 | int Version { get; set; } 34 | 35 | PixelFormat PixelFormat { get; } 36 | string Path { get; } 37 | } 38 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IO/IMetaEngine.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using NScumm.Core.Audio; 20 | using NScumm.Core.Graphics; 21 | using NScumm.Core.Input; 22 | 23 | namespace NScumm.Core.IO 24 | { 25 | public interface IMetaEngine 26 | { 27 | GameDetected DetectGame(string path); 28 | 29 | IEngine Create(GameSettings settings, IGraphicsManager gfxManager, IInputManager inputManager, IAudioOutput output, ISaveFileManager saveFileManager, bool debugMode = false); 30 | } 31 | } -------------------------------------------------------------------------------- /src/NScumm.Core/IO/Platform.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core.IO 20 | { 21 | public enum Platform 22 | { 23 | DOS, 24 | Amiga, 25 | AtariST, 26 | Macintosh, 27 | FMTowns, 28 | Windows, 29 | NES, 30 | C64, 31 | CoCo3, 32 | Linux, 33 | Acorn, 34 | SegaCD, 35 | _3DO, 36 | PCEngine, 37 | Apple2GS, 38 | PC98, 39 | Wii, 40 | PSX, 41 | CDi, 42 | IOS, 43 | OS2, 44 | BeOS, 45 | 46 | Unknown = -1 47 | } 48 | } -------------------------------------------------------------------------------- /src/NScumm.Core/ISaveFileManager.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using System; 20 | using System.IO; 21 | using System.Threading.Tasks; 22 | 23 | namespace NScumm.Core 24 | { 25 | public interface ISaveFileManager 26 | { 27 | Task OpenForLoading(string fileName); 28 | Task OpenForSaving(string fileName, bool compress = true); 29 | Task ListSavefiles(string pattern); 30 | void setID(string id); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/NScumm.Core/ISystem.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using NScumm.Core.Graphics; 20 | using NScumm.Core.Input; 21 | 22 | namespace NScumm.Core 23 | { 24 | public interface ISystem 25 | { 26 | IGraphicsManager GraphicsManager { get; } 27 | IInputManager InputManager { get; } 28 | ISaveFileManager SaveFileManager { get; } 29 | } 30 | } -------------------------------------------------------------------------------- /src/NScumm.Core/ITraceFactory.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core 20 | { 21 | public interface ITraceFactory 22 | { 23 | ITrace CreateTrace(IEnableTrace trace); 24 | } 25 | } -------------------------------------------------------------------------------- /src/NScumm.Core/Input/IInputManager.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core.Input 20 | { 21 | public interface IInputManager 22 | { 23 | Graphics.Point GetMousePosition(); 24 | 25 | ScummInputState GetState(); 26 | 27 | void ResetKeys(); 28 | 29 | void ShowVirtualKeyboard(); 30 | 31 | void HideVirtualKeyboard(); 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/NScumm.Core/Input/ScummMouseButtonState.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using System; 19 | 20 | namespace NScumm.Core.Input 21 | { 22 | [Flags] 23 | public enum ScummMouseButtonState 24 | { 25 | LeftClick = 0x8000, 26 | RightClick = 0x4000, 27 | MouseMask = (LeftClick | RightClick), 28 | MaxKey = 0x0200 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /src/NScumm.Core/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * This file is part of NScumm. 3 | * 4 | * NScumm is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * NScumm is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with NScumm. If not, see . 16 | */ 17 | 18 | using System.Reflection; 19 | using System.Runtime.CompilerServices; 20 | 21 | // General Information about an assembly is controlled through the following 22 | // set of attributes. Change these attribute values to modify the information 23 | // associated with an assembly. 24 | [assembly: AssemblyTitle("NScumm.Core")] 25 | [assembly: AssemblyDescription("")] 26 | [assembly: AssemblyConfiguration("")] 27 | [assembly: AssemblyCompany("")] 28 | [assembly: AssemblyProduct("NScumm.Core")] 29 | [assembly: AssemblyCopyright("Copyright © 2012-2015")] 30 | [assembly: AssemblyTrademark("")] 31 | [assembly: AssemblyCulture("")] 32 | 33 | 34 | // Version information for an assembly consists of the following four values: 35 | // 36 | // Major Version 37 | // Minor Version 38 | // Build Number 39 | // Revision 40 | // 41 | // You can specify all the values or you can default the Build and Revision Numbers 42 | // by using the '*' as shown below: 43 | // [assembly: AssemblyVersion("1.0.*")] 44 | [assembly: AssemblyVersion("1.0.*")] 45 | [assembly: AssemblyFileVersion("1.0.0.0")] 46 | [assembly: InternalsVisibleTo("NScumm.Core.Tests")] -------------------------------------------------------------------------------- /src/NScumm.Core/ServiceLocator.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | namespace NScumm.Core 20 | { 21 | public static class ServiceLocator 22 | { 23 | public static IFileStorage FileStorage { get; set; } 24 | 25 | public static IPlatform Platform { get; set; } 26 | 27 | public static ITraceFactory TraceFatory { get; set; } 28 | 29 | public static ISaveFileManager SaveFileManager { get; set; } 30 | 31 | public static IAudioManager AudioManager { get; set; } 32 | } 33 | } 34 | 35 | -------------------------------------------------------------------------------- /src/NScumm.Core/Video/ITrack.cs: -------------------------------------------------------------------------------- 1 | // Author: 2 | // scemino 3 | // 4 | // Copyright (c) 2015 5 | // 6 | // This program is free software: you can redistribute it and/or modify 7 | // it under the terms of the GNU General Public License as published by 8 | // the Free Software Foundation, either version 3 of the License, or 9 | // (at your option) any later version. 10 | // 11 | // This program is distributed in the hope that it will be useful, 12 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | // GNU General Public License for more details. 15 | // 16 | // You should have received a copy of the GNU General Public License 17 | // along with this program. If not, see . 18 | 19 | using NScumm.Core.Audio; 20 | 21 | namespace NScumm.Core.Video 22 | { 23 | public interface ITrack 24 | { 25 | TrackType TrackType { get; } 26 | bool EndOfTrack { get; } 27 | bool IsRewindable { get; } 28 | bool Rewind(); 29 | bool IsSeekable { get; } 30 | bool Seek(Timestamp time); 31 | void Pause(bool shouldPause); 32 | bool IsPaused { get; } 33 | Timestamp Duration { get; } 34 | } 35 | } -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Content/Fonts/MenuFont.xnb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Content/Fonts/MenuFont.xnb -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Content/Fonts/SpriteFont.xnb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Content/Fonts/SpriteFont.xnb -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Content/Textures/blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Content/Textures/blank.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Content/Textures/blank.xnb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Content/Textures/blank.xnb -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/Linux/OpenTK.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/Linux/Tao.Sdl.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/Linux/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/App.xaml: -------------------------------------------------------------------------------- 1 |  6 | 7 | 8 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/ApplicationInsights.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LargeTile.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LockScreenLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/LockScreenLogo.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SmallTile.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/SplashScreen.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square150x150Logo.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-16.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-256.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-32.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.altform-unplated_targetsize-48.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-16.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-24.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-24.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-24_altform-unplated.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-24_altform-unplated.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-256.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-32.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Square44x44Logo.targetsize-48.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/StoreLogo.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-100.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-125.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-125.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-150.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-150.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-200.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-200.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-400.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Assets/Wide310x150Logo.scale-400.png -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Backup/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0", 4 | "MonoGame.Framework.WindowsUAP": "3.4.0.459", 5 | "Rx-Main": "2.2.5", 6 | "Rx-WinRT": "2.2.5", 7 | "Rx-WPF": "2.2.5", 8 | "SharpDX": "3.0.0-beta01", 9 | "SharpDX.Direct2D1": "3.0.0-beta01", 10 | "SharpDX.Direct3D11": "3.0.0-beta01", 11 | "SharpDX.MediaFoundation": "3.0.0-beta01", 12 | "SharpDX.XAudio2": "3.0.0-beta01", 13 | "SharpDX.XInput": "3.0.0-beta01" 14 | }, 15 | "frameworks": { 16 | "uap10.0": {} 17 | }, 18 | "runtimes": { 19 | "win10-arm": {}, 20 | "win10-arm-aot": {}, 21 | "win10-x86": {}, 22 | "win10-x86-aot": {}, 23 | "win10-x64": {}, 24 | "win10-x64-aot": {} 25 | } 26 | } -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/BundleArtifacts/arm.txt: -------------------------------------------------------------------------------- 1 | MainPackage=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_ARM_Debug .NET Native.appx 2 | ResourcePack=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_language-fr.appx 3 | ResourcePack=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_scale-100.appx 4 | ResourcePack=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_scale-125.appx 5 | ResourcePack=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_scale-150.appx 6 | ResourcePack=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\ARM\Debug .NET Native\NScumm.MonoGame_1.1.43.0_scale-400.appx 7 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/BundleArtifacts/x64.txt: -------------------------------------------------------------------------------- 1 | MainPackage=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\x64\Debug .NET Native\NScumm.MonoGame_1.1.43.0_x64_Debug .NET Native.appx 2 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/BundleArtifacts/x86.txt: -------------------------------------------------------------------------------- 1 | MainPackage=B:\NScumm\NScumm.MonoGame\Platforms\UWP\NScumm.MonoGame\bin\x86\Debug .NET Native\NScumm.MonoGame_1.1.43.0_x86_Debug .NET Native.appx 2 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Content/NScumm.mgcb: -------------------------------------------------------------------------------- 1 | 2 | #----------------------------- Global Properties ----------------------------# 3 | 4 | /outputDir:bin 5 | /intermediateDir:obj 6 | /platform:Windows 7 | /config: 8 | /profile:Reach 9 | /compress:False 10 | 11 | #-------------------------------- References --------------------------------# 12 | 13 | 14 | #---------------------------------- Content ---------------------------------# 15 | 16 | #begin Textures/blank.png 17 | /importer:TextureImporter 18 | /processor:TextureProcessor 19 | /processorParam:ColorKeyColor=255,0,255,255 20 | /processorParam:ColorKeyEnabled=True 21 | /processorParam:GenerateMipmaps=False 22 | /processorParam:PremultiplyAlpha=True 23 | /processorParam:ResizeToPowerOfTwo=False 24 | /processorParam:TextureFormat=Color 25 | /build:Textures/blank.png 26 | 27 | #begin Fonts/MenuFont.xnb 28 | /importer: 29 | /processor: 30 | /build:Fonts/MenuFont.xnb 31 | 32 | #begin Fonts/SpriteFont.xnb 33 | /importer: 34 | /processor: 35 | /build:Fonts/SpriteFont.xnb 36 | 37 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Converters/GameCountToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | 5 | namespace NScumm.MonoGame.Converters 6 | { 7 | class ShowNoGameMessageToVisibilityConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | var showNoGameMessage = (bool)value; 12 | return showNoGameMessage ? Visibility.Visible : Visibility.Collapsed; 13 | } 14 | 15 | public object ConvertBack(object value, Type targetType, object parameter, string language) 16 | { 17 | throw new NotImplementedException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Converters/IsScanningToVisibilityConverter.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Windows.UI.Xaml; 3 | using Windows.UI.Xaml.Data; 4 | 5 | namespace NScumm.MonoGame.Converters 6 | { 7 | class IsScanningToVisibilityConverter : IValueConverter 8 | { 9 | public object Convert(object value, Type targetType, object parameter, string language) 10 | { 11 | var isScanning = (bool)value; 12 | return isScanning ? Visibility.Visible : Visibility.Collapsed; 13 | } 14 | 15 | public object ConvertBack(object value, Type targetType, object parameter, string language) 16 | { 17 | throw new NotImplementedException(); 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/NScumm.MonoGame.csproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | SideloadOnly 5 | False 6 | x86|x64|arm 7 | False 8 | C:\Users\User\Desktop\Logo.scale-200.png 9 | C:\Users\User\Desktop\Logo.scale-200.png 10 | C:\Users\User\Desktop\Logo.scale-200.png 11 | C:\Users\User\Desktop\Logo.scale-200.png 12 | C:\Users\User\Desktop\Logo.scale-200.png 13 | C:\Users\User\Desktop\Logo.scale-200.png 14 | C:\Users\User\Desktop\Logo.scale-200.png 15 | C:\Users\User\Desktop\Logo.scale-200.png 16 | 17 | 18 | 30f105c9-681e-420b-a277-7c086ead8a4e 19 | true 20 | 21 | 22 | 30f105c9-681e-420b-a277-7c086ead8a4e 23 | true 24 | 25 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/NScumm.MonoGame.rd.xml: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("NSCUMM")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("NSCUMM")] 12 | [assembly: AssemblyCopyright("Copyright © 2021")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Version information for an assembly consists of the following four values: 17 | // 18 | // Major Version 19 | // Minor Version 20 | // Build Number 21 | // Revision 22 | // 23 | // You can specify all the values or you can default the Build and Revision Numbers 24 | // by using the '*' as shown below: 25 | // [assembly: AssemblyVersion("1.0.*")] 26 | [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyFileVersion("1.0.0.0")] 28 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Properties/Default.rd.xml: -------------------------------------------------------------------------------- 1 | 17 | 18 | 19 | 20 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/Services/MenuService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using NScumm.Core; 3 | using Windows.UI.Core; 4 | 5 | namespace NScumm.MonoGame.Services 6 | { 7 | class MenuService : IMenuService 8 | { 9 | private readonly CoreDispatcher _dispatcher; 10 | 11 | public ScummGame Game { get; set; } 12 | 13 | private IEngine Engine 14 | { 15 | get 16 | { 17 | var engine = Game.Services.GetService(); 18 | return engine; 19 | } 20 | } 21 | 22 | public MenuService(CoreDispatcher dispatcher) 23 | { 24 | _dispatcher = dispatcher; 25 | } 26 | 27 | public async void ShowMenu() 28 | { 29 | await _dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () => 30 | { 31 | if (Engine.IsPaused) 32 | { 33 | Game.IsMouseVisible = true; 34 | var menu = new Pages.MainMenu(); 35 | menu.Game = Game; 36 | var result = await menu.ShowAsync(); 37 | Game.IsMouseVisible = false; 38 | Engine.IsPaused = false; 39 | } 40 | }); 41 | } 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/TraceFactory.cs: -------------------------------------------------------------------------------- 1 | using NScumm.Core; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Diagnostics; 5 | 6 | namespace NScumm.MonoGame 7 | { 8 | class Trace : ITrace 9 | { 10 | readonly IEnableTrace _source; 11 | readonly HashSet _switches; 12 | 13 | public Trace(IEnableTrace trace, IEnumerable switches) 14 | { 15 | _source = trace; 16 | _switches = new HashSet(switches, StringComparer.OrdinalIgnoreCase); 17 | } 18 | 19 | public void Write(string traceName, string format, params object[] args) 20 | { 21 | if (_switches.Contains(traceName)) 22 | { 23 | Debug.WriteLine("{0,-16} {1}", _source.GetType().Name, string.Format(format, args)); 24 | } 25 | } 26 | } 27 | 28 | public class TraceFactory : ITraceFactory 29 | { 30 | readonly IEnumerable _switches; 31 | 32 | public TraceFactory(params string[] switches) 33 | { 34 | _switches = switches; 35 | } 36 | 37 | public ITrace CreateTrace(IEnableTrace trace) 38 | { 39 | return new Trace(trace, _switches); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/ViewModels/DelegateCommand.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Windows.Input; 3 | 4 | namespace NScumm.MonoGame.ViewModels 5 | { 6 | public class DelegateCommand : ICommand 7 | { 8 | private Action _execute; 9 | private Func _canExecute; 10 | 11 | public event EventHandler CanExecuteChanged; 12 | 13 | public DelegateCommand(Action action, Func canExecute = null) 14 | { 15 | _execute = action; 16 | _canExecute = canExecute ?? new Func(() => true); 17 | } 18 | 19 | public bool CanExecute(object parameter) 20 | { 21 | return _canExecute(); 22 | } 23 | 24 | public void Execute(object parameter) 25 | { 26 | _execute(); 27 | } 28 | 29 | public void RaiseCanExecuteChanged() 30 | { 31 | var eh = CanExecuteChanged; 32 | if (eh != null) 33 | { 34 | eh(this, EventArgs.Empty); 35 | } 36 | } 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/ViewModels/GameViewModel.cs: -------------------------------------------------------------------------------- 1 | using NScumm.Core.IO; 2 | 3 | namespace NScumm.MonoGame.ViewModels 4 | { 5 | public class GameViewModel 6 | { 7 | public string Description { get; private set; } 8 | public string Platform { get; private set; } 9 | public string Culture { get; private set; } 10 | public GameDetected Game { get; private set; } 11 | 12 | public GameViewModel(GameDetected info) 13 | { 14 | Game = info; 15 | Description = info.Game.Description; 16 | Platform = info.Game.Platform.ToString(); 17 | Culture = info.Game.Culture.DisplayName; 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/UWP/NScumm.MonoGame/ViewModels/ViewModel.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | using System.ComponentModel; 3 | using System.Runtime.CompilerServices; 4 | 5 | namespace NScumm.MonoGame.ViewModels 6 | { 7 | internal abstract class ViewModel : INotifyPropertyChanged 8 | { 9 | public event PropertyChangedEventHandler PropertyChanged; 10 | 11 | protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) 12 | { 13 | var eh = PropertyChanged; 14 | eh?.Invoke(this, new PropertyChangedEventArgs(propertyName)); 15 | } 16 | 17 | protected virtual void RaiseAndSetIfChanged(ref T field, T value, [CallerMemberName] string propertyName = null) 18 | { 19 | if (!EqualityComparer.Default.Equals(field, value)) 20 | { 21 | field = value; 22 | OnPropertyChanged(propertyName); 23 | } 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/WindowsGL/App.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/NScumm.MonoGame/Platforms/WindowsGL/App.ico -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/WindowsGL/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.InteropServices; 3 | 4 | // General Information about an assembly is controlled through the following 5 | // set of attributes. Change these attribute values to modify the information 6 | // associated with an assembly. 7 | [assembly: AssemblyTitle("nSCUMM")] 8 | [assembly: AssemblyDescription("")] 9 | [assembly: AssemblyConfiguration("")] 10 | [assembly: AssemblyCompany("")] 11 | [assembly: AssemblyProduct("nSCUMM")] 12 | [assembly: AssemblyCopyright("Copyright © 2015")] 13 | [assembly: AssemblyTrademark("")] 14 | [assembly: AssemblyCulture("")] 15 | 16 | // Setting ComVisible to false makes the types in this assembly not visible 17 | // to COM components. If you need to access a type in this assembly from 18 | // COM, set the ComVisible attribute to true on that type. 19 | [assembly: ComVisible(false)] 20 | 21 | // The following GUID is for the ID of the typelib if this project is exposed to COM 22 | [assembly: Guid("92af6aed-78ce-45a3-9fce-ec184e3dc93d")] 23 | 24 | // Version information for an assembly consists of the following four values: 25 | // 26 | // Major Version 27 | // Minor Version 28 | // Build Number 29 | // Revision 30 | // 31 | [assembly: AssemblyVersion("1.0.0.0")] 32 | [assembly: AssemblyFileVersion("1.0.0.0")] 33 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/WindowsGL/Services/MenuService.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Author: 3 | // scemino 4 | // 5 | // Copyright (c) 2015 6 | // 7 | // This program is free software: you can redistribute it and/or modify 8 | // it under the terms of the GNU General Public License as published by 9 | // the Free Software Foundation, either version 3 of the License, or 10 | // (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program. If not, see . 19 | 20 | using System; 21 | using System.Linq; 22 | 23 | namespace NScumm.MonoGame.Services 24 | { 25 | class MenuService : IMenuService 26 | { 27 | private ScummGame _game; 28 | 29 | public MenuService(ScummGame game) 30 | { 31 | _game = game; 32 | } 33 | 34 | public void ShowMenu() 35 | { 36 | var scummScreen = _game.ScreenManager.GetScreens().OfType().FirstOrDefault(); 37 | _game.ScreenManager.AddScreen(new MainMenuScreen(scummScreen)); 38 | } 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/WindowsGL/Tao.Sdl.dll.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Platforms/WindowsGL/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /src/NScumm.MonoGame/Services/IMenuService.cs: -------------------------------------------------------------------------------- 1 | // 2 | // Author: 3 | // scemino 4 | // 5 | // Copyright (c) 2015 6 | // 7 | // This program is free software: you can redistribute it and/or modify 8 | // it under the terms of the GNU General Public License as published by 9 | // the Free Software Foundation, either version 3 of the License, or 10 | // (at your option) any later version. 11 | // 12 | // This program is distributed in the hope that it will be useful, 13 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 14 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 | // GNU General Public License for more details. 16 | // 17 | // You should have received a copy of the GNU General Public License 18 | // along with this program. If not, see . 19 | 20 | namespace NScumm.MonoGame.Services 21 | { 22 | public interface IMenuService 23 | { 24 | void ShowMenu(); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/NScumm.Unsafe/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Resources; 3 | using System.Runtime.CompilerServices; 4 | using System.Runtime.InteropServices; 5 | 6 | // General Information about an assembly is controlled through the following 7 | // set of attributes. Change these attribute values to modify the information 8 | // associated with an assembly. 9 | [assembly: AssemblyTitle("RetriX.UWP.Unsafe")] 10 | [assembly: AssemblyDescription("")] 11 | [assembly: AssemblyConfiguration("")] 12 | [assembly: AssemblyCompany("")] 13 | [assembly: AssemblyProduct("RetriX.UWP.Unsafe")] 14 | [assembly: AssemblyCopyright("Copyright © 2018")] 15 | [assembly: AssemblyTrademark("")] 16 | [assembly: AssemblyCulture("")] 17 | [assembly: NeutralResourcesLanguage("en-US")] 18 | 19 | // Version information for an assembly consists of the following four values: 20 | // 21 | // Major Version 22 | // Minor Version 23 | // Build Number 24 | // Revision 25 | // 26 | // You can specify all the values or you can default the Build and Revision Numbers 27 | // by using the '*' as shown below: 28 | // [assembly: AssemblyVersion("1.0.*")] 29 | [assembly: AssemblyVersion("1.0.0.0")] 30 | [assembly: AssemblyFileVersion("1.0.0.0")] 31 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /src/NScumm.Unsafe/Properties/NScumm.Unsafe.rd.xml: -------------------------------------------------------------------------------- 1 | 2 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/NScumm.Unsafe/Services/GCService.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | namespace NScumm.GCServices 3 | { 4 | public class GCService 5 | { 6 | public const uint MaxSamplesQueueSize = 44100 * 4; 7 | public const uint GCReserveSize = MaxSamplesQueueSize; 8 | public bool EnableGCPrevent = true; 9 | 10 | public void TryStartNoGCRegionCall() 11 | { 12 | try 13 | { 14 | if (EnableGCPrevent) 15 | { 16 | GC.TryStartNoGCRegion(GCReserveSize, true); 17 | } 18 | } 19 | catch (Exception ea) 20 | { 21 | 22 | } 23 | } 24 | 25 | public void EndNoGCRegionCall() 26 | { 27 | try 28 | { 29 | if (EnableGCPrevent) 30 | { 31 | GC.EndNoGCRegion(); 32 | } 33 | } 34 | catch (Exception es) 35 | { 36 | } 37 | } 38 | 39 | } 40 | 41 | } 42 | -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_Desktop/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_UWP/Backup/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" 4 | }, 5 | "frameworks": { 6 | "uap10.0": {} 7 | }, 8 | "runtimes": { 9 | "win10-arm": {}, 10 | "win10-arm-aot": {}, 11 | "win10-x86": {}, 12 | "win10-x86-aot": {}, 13 | "win10-x64": {}, 14 | "win10-x64-aot": {} 15 | } 16 | } -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_UWP/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("NScumm.Platform_UWP")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NScumm.Platform_UWP")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Version information for an assembly consists of the following four values: 18 | // 19 | // Major Version 20 | // Minor Version 21 | // Build Number 22 | // Revision 23 | // 24 | // You can specify all the values or you can default the Build and Revision Numbers 25 | // by using the '*' as shown below: 26 | // [assembly: AssemblyVersion("1.0.*")] 27 | [assembly: AssemblyVersion("1.0.0.0")] 28 | [assembly: AssemblyFileVersion("1.0.0.0")] 29 | [assembly: ComVisible(false)] -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_UWP/Properties/NScumm.Platform_UWP.rd.xml: -------------------------------------------------------------------------------- 1 | 2 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_UWP/SaveFileManager.cs: -------------------------------------------------------------------------------- 1 | using NScumm.Core; 2 | using System; 3 | using System.IO; 4 | using System.Linq; 5 | using System.Threading.Tasks; 6 | using Windows.Storage; 7 | 8 | namespace NScumm.Platform_UWP 9 | { 10 | public class SaveFileManager : ISaveFileManager 11 | { 12 | private IFileStorage _fileStorage; 13 | private string gameID = ""; 14 | public SaveFileManager(IFileStorage fileStorage) 15 | { 16 | _fileStorage = fileStorage; 17 | } 18 | 19 | public void setID(string id) 20 | { 21 | gameID = id; 22 | } 23 | 24 | public async Task ListSavefiles(string pattern) 25 | { 26 | var path = await GetSavePath(); 27 | return Directory.EnumerateFiles(path, pattern).Select(Path.GetFileName).ToArray(); 28 | } 29 | 30 | public async Task OpenForLoading(string fileName) 31 | { 32 | var path = await GetSavePath(); 33 | return File.OpenRead(Path.Combine(path, fileName)); 34 | } 35 | 36 | public async Task OpenForSaving(string fileName, bool compress = true) 37 | { 38 | var path = await GetSavePath(); 39 | return File.OpenWrite(Path.Combine(path, fileName)); 40 | } 41 | 42 | private async Task GetSavePath() 43 | { 44 | var local = ApplicationData.Current.LocalFolder; 45 | var dir = await local.CreateFolderAsync(gameID, CreationCollisionOption.OpenIfExists); 46 | return dir.Path; 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Platforms/NScumm.Platform_UWP/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "dependencies": { 3 | "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0" 4 | }, 5 | "frameworks": { 6 | "uap10.0": {} 7 | }, 8 | "runtimes": { 9 | "win10-arm": {}, 10 | "win10-arm-aot": {}, 11 | "win10-x86": {}, 12 | "win10-x86-aot": {}, 13 | "win10-x64": {}, 14 | "win10-x64-aot": {} 15 | } 16 | } -------------------------------------------------------------------------------- /src/Tests/NScumm.Core.Tests/IO/XorStreamFixture.cs: -------------------------------------------------------------------------------- 1 | using NFluent; 2 | using NScumm.Scumm.IO; 3 | using NUnit.Framework; 4 | using System; 5 | using System.IO; 6 | using System.Linq; 7 | 8 | namespace NScumm.Core.Tests 9 | { 10 | [TestFixture] 11 | public class XorStreamFixture 12 | { 13 | [Test] 14 | public void ReadBytes() 15 | { 16 | var data = Enumerable.Range(0, 256).Select(d => (byte)d).ToArray(); 17 | 18 | byte encByte = 0x73; 19 | var dataExpected = data.Select(d => d ^ encByte).Select(d => (byte)d).ToArray(); 20 | using (var ms = new MemoryStream(data)) 21 | { 22 | var stream = new XorStream(ms, encByte); 23 | var output = new byte[256]; 24 | stream.Read(output, 0, 256); 25 | Check.That(output).ContainsExactly(dataExpected); 26 | } 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Tests/NScumm.Core.Tests/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // Les informations générales relatives à un assembly dépendent de 6 | // l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations 7 | // associées à un assembly. 8 | [assembly: AssemblyTitle("NScumm.Core.Tests")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("")] 12 | [assembly: AssemblyProduct("NScumm.Core.Tests")] 13 | [assembly: AssemblyCopyright("Copyright © 2015")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly 18 | // aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de 19 | // COM, affectez la valeur true à l'attribut ComVisible sur ce type. 20 | [assembly: ComVisible(false)] 21 | 22 | // Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM 23 | [assembly: Guid("2f99d225-624b-43e1-9758-c8b19e5be6f9")] 24 | 25 | // Les informations de version pour un assembly se composent des quatre valeurs suivantes : 26 | // 27 | // Version principale 28 | // Version secondaire 29 | // Numéro de build 30 | // Révision 31 | // 32 | // Vous pouvez spécifier toutes les valeurs ou vous pouvez définir par défaut les numéros de build et de révision 33 | // en utilisant '*', comme indiqué ci-dessous : 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /src/Tests/NScumm.Core.Tests/Resources/maniacdemo.d64: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tests/NScumm.Core.Tests/Resources/maniacdemo.d64 -------------------------------------------------------------------------------- /src/Tests/NScumm.Core.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Tests/NScumm.Dump.Tests/AstHelper.cs: -------------------------------------------------------------------------------- 1 | // 2 | // AstHelper.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | using System; 22 | using NFluent; 23 | 24 | namespace NScumm.Dump.Tests 25 | { 26 | public static class AstHelper 27 | { 28 | public static string ToString(IAstNode ast, bool showOffsets = false) 29 | { 30 | var dumper = new DumpAstVisitor(showOffsets); 31 | var code = ast.Accept(dumper); 32 | return code; 33 | } 34 | 35 | public static void AstEquals(IAstNode astExpected, IAstNode astActual, bool showOffsets = false) 36 | { 37 | var dumper = new DumpAstVisitor(showOffsets); 38 | 39 | var expectedCode = astExpected.Accept(dumper); 40 | var actualCode = astActual.Accept(dumper); 41 | 42 | Check.That(actualCode).IsEqualTo(expectedCode); 43 | Console.WriteLine(expectedCode); 44 | } 45 | } 46 | } 47 | 48 | -------------------------------------------------------------------------------- /src/Tests/NScumm.Dump.Tests/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/.vs/NScumm.Dump/v16/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tools/NScumm.Dump/.vs/NScumm.Dump/v16/.suo -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/ArrayLiteralExpression.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ArrayLiteralExpression.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2015 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | using System; 22 | 23 | namespace NScumm.Dump 24 | { 25 | public sealed class ArrayLiteralExpression: LiteralExpression 26 | { 27 | public ArrayLiteralExpression(Array value) 28 | : base(value) 29 | { 30 | } 31 | 32 | public override void Accept(IAstNodeVisitor visitor) 33 | { 34 | visitor.Visit(this); 35 | } 36 | 37 | public override T Accept(IAstNodeVisitor visitor) 38 | { 39 | return visitor.Visit(this); 40 | } 41 | } 42 | } 43 | 44 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/BooleanLiteralExpression.cs: -------------------------------------------------------------------------------- 1 | // 2 | // BooleanLiteralExpression.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public sealed class BooleanLiteralExpression: LiteralExpression 25 | { 26 | public BooleanLiteralExpression(bool value) 27 | : base(value) 28 | { 29 | } 30 | 31 | public override void Accept(IAstNodeVisitor visitor) 32 | { 33 | visitor.Visit(this); 34 | } 35 | 36 | public override T Accept(IAstNodeVisitor visitor) 37 | { 38 | return visitor.Visit(this); 39 | } 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/Expression.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace NScumm.Dump 3 | { 4 | [System.Diagnostics.DebuggerDisplay("{DebuggerDisplay,nq}")] 5 | public abstract class Expression : AstNodeBase 6 | { 7 | internal abstract string DebuggerDisplay 8 | { 9 | get; 10 | } 11 | } 12 | 13 | public static class ExpressionExtensions 14 | { 15 | public static Statement ToStatement(this Expression exp) 16 | { 17 | return new ExpressionStatement(exp); 18 | } 19 | 20 | public static Statement ToStatement(this Expression exp, long? startOffset, long? endOffset) 21 | { 22 | return new ExpressionStatement(exp, startOffset, endOffset); 23 | } 24 | 25 | public static Expression Not(this Expression condition) 26 | { 27 | var unExp = condition as UnaryExpression; 28 | if (unExp != null) 29 | { 30 | return unExp.Not(); 31 | } 32 | var boolExp = condition as BooleanLiteralExpression; 33 | if (boolExp != null) 34 | { 35 | return new BooleanLiteralExpression(!boolExp.Value); 36 | } 37 | var binExp = condition as BinaryExpression; 38 | if (binExp != null) 39 | { 40 | return binExp.Not(); 41 | } 42 | return new UnaryExpression(condition, Operator.Not); 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/IntegerLiteralExpression.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IntegerLiteralExpression.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | using System; 22 | 23 | namespace NScumm.Dump 24 | { 25 | public sealed class IntegerLiteralExpression: LiteralExpression 26 | { 27 | public IntegerLiteralExpression(int value) 28 | : base(value) 29 | { 30 | } 31 | 32 | public override void Accept(IAstNodeVisitor visitor) 33 | { 34 | visitor.Visit(this); 35 | } 36 | 37 | public override T Accept(IAstNodeVisitor visitor) 38 | { 39 | return visitor.Visit(this); 40 | } 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/MemberAccess.cs: -------------------------------------------------------------------------------- 1 | namespace NScumm.Dump 2 | { 3 | public class MemberAccess: Expression 4 | { 5 | public Expression Target 6 | { 7 | get; 8 | private set; 9 | } 10 | 11 | public string Field 12 | { 13 | get; 14 | private set; 15 | } 16 | 17 | internal override string DebuggerDisplay 18 | { 19 | get 20 | { 21 | return string.Format("{0}.{1}", Target.DebuggerDisplay, Field); 22 | } 23 | } 24 | 25 | public MemberAccess(Expression target, string field) 26 | { 27 | Target = target; 28 | Field = field; 29 | ChildrenCore.Add(Target); 30 | } 31 | 32 | public MemberAccess(string target, string field) 33 | : this(new SimpleName(target), field) 34 | { 35 | } 36 | 37 | #region implemented abstract members of Expression 38 | 39 | public override void Accept(IAstNodeVisitor visitor) 40 | { 41 | visitor.Visit(this); 42 | } 43 | 44 | public override T Accept(IAstNodeVisitor visitor) 45 | { 46 | return visitor.Visit(this); 47 | } 48 | 49 | #endregion 50 | 51 | } 52 | } 53 | 54 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/SimpleName.cs: -------------------------------------------------------------------------------- 1 | namespace NScumm.Dump 2 | { 3 | [System.Diagnostics.DebuggerDisplay("{DebuggerDisplay,nq}")] 4 | public class SimpleName: Expression 5 | { 6 | public string Name 7 | { 8 | get; 9 | private set; 10 | } 11 | 12 | internal override string DebuggerDisplay 13 | { 14 | get { return Name; } 15 | } 16 | 17 | public SimpleName(string name) 18 | { 19 | Name = name; 20 | } 21 | 22 | #region implemented abstract members of Expression 23 | 24 | public override void Accept(IAstNodeVisitor visitor) 25 | { 26 | visitor.Visit(this); 27 | } 28 | 29 | public override T Accept(IAstNodeVisitor visitor) 30 | { 31 | return visitor.Visit(this); 32 | } 33 | 34 | #endregion 35 | } 36 | } 37 | 38 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/StringLiteralExpression.cs: -------------------------------------------------------------------------------- 1 | // 2 | // StringLiteralExpression.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public sealed class StringLiteralExpression: LiteralExpression 25 | { 26 | public StringLiteralExpression(byte[] value) 27 | : base(value) 28 | { 29 | } 30 | 31 | public override void Accept(IAstNodeVisitor visitor) 32 | { 33 | visitor.Visit(this); 34 | } 35 | 36 | public override T Accept(IAstNodeVisitor visitor) 37 | { 38 | return visitor.Visit(this); 39 | } 40 | } 41 | 42 | } 43 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Expressions/UnaryExpression.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace NScumm.Dump 4 | { 5 | public class UnaryExpression: Expression 6 | { 7 | public Operator Operator 8 | { 9 | get; 10 | private set; 11 | } 12 | 13 | public Expression Expression 14 | { 15 | get; 16 | private set; 17 | } 18 | 19 | internal override string DebuggerDisplay 20 | { 21 | get 22 | { 23 | return string.Format("{0} {1}", Operator, Expression.DebuggerDisplay); 24 | } 25 | } 26 | 27 | public UnaryExpression(Expression expression, Operator op) 28 | { 29 | Operator = op; 30 | Expression = expression; 31 | ChildrenCore.Add(Expression); 32 | } 33 | 34 | public Expression Not() 35 | { 36 | if (Operator == Operator.Not) 37 | { 38 | return Expression; 39 | } 40 | throw new NotSupportedException("Operator Not is not possible on this expression"); 41 | } 42 | 43 | #region implemented abstract members of Expression 44 | 45 | public override void Accept(IAstNodeVisitor visitor) 46 | { 47 | visitor.Visit(this); 48 | } 49 | 50 | public override T Accept(IAstNodeVisitor visitor) 51 | { 52 | return visitor.Visit(this); 53 | } 54 | 55 | #endregion 56 | 57 | } 58 | } 59 | 60 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/IAstNode.cs: -------------------------------------------------------------------------------- 1 | using System.Collections.Generic; 2 | 3 | namespace NScumm.Dump 4 | { 5 | public interface IAstNode 6 | { 7 | void Accept(IAstNodeVisitor visitor); 8 | 9 | T Accept(IAstNodeVisitor visitor); 10 | 11 | IAstNode Parent { get; } 12 | 13 | IList Children { get; } 14 | 15 | long? StartOffset { get; } 16 | long? EndOffset { get; } 17 | } 18 | 19 | public static class IAstNodeExtension 20 | { 21 | public static IEnumerable GetAncestors(this IAstNode node) 22 | { 23 | var currentNode = node; 24 | while (currentNode.Parent != null) 25 | { 26 | yield return currentNode.Parent; 27 | currentNode = currentNode.Parent; 28 | } 29 | } 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/DoWhileStatement.cs: -------------------------------------------------------------------------------- 1 | // 2 | // DoWhileStatement.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public class DoWhileStatement: Statement 25 | { 26 | public Expression Condition { get; private set; } 27 | 28 | public Statement Statement { get; private set; } 29 | 30 | public DoWhileStatement(Expression condition, Statement statement, long? startOffset = null, long? endOffset = null) 31 | { 32 | StartOffset = startOffset; 33 | EndOffset = endOffset; 34 | Condition = condition; 35 | Statement = statement; 36 | ChildrenCore.Add(Condition); 37 | ChildrenCore.Add(Statement); 38 | } 39 | 40 | public override void Accept(IAstNodeVisitor visitor) 41 | { 42 | visitor.Visit(this); 43 | } 44 | 45 | public override T Accept(IAstNodeVisitor visitor) 46 | { 47 | return visitor.Visit(this); 48 | } 49 | } 50 | } 51 | 52 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/ExpressionStatement.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ExpressionStatement.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public class ExpressionStatement: Statement 25 | { 26 | public Expression Expression 27 | { 28 | get; 29 | private set; 30 | } 31 | 32 | public ExpressionStatement(Expression exp, long? startOffset = null, long? endOffset = null) 33 | { 34 | StartOffset = startOffset; 35 | EndOffset = endOffset; 36 | Expression = exp; 37 | ChildrenCore.Add(Expression); 38 | } 39 | 40 | public override void Accept(IAstNodeVisitor visitor) 41 | { 42 | visitor.Visit(this); 43 | } 44 | 45 | public override T Accept(IAstNodeVisitor visitor) 46 | { 47 | return visitor.Visit(this); 48 | } 49 | } 50 | 51 | } 52 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/GoToStatement.cs: -------------------------------------------------------------------------------- 1 | // 2 | // GoToStatement.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public class GoToStatement: Statement 25 | { 26 | public string Label{ get; private set; } 27 | 28 | public GoToStatement(string label) 29 | { 30 | Label = label; 31 | } 32 | 33 | #region implemented abstract members of AstNodeBase 34 | 35 | public override void Accept(IAstNodeVisitor visitor) 36 | { 37 | visitor.Visit(this); 38 | } 39 | 40 | public override T Accept(IAstNodeVisitor visitor) 41 | { 42 | return visitor.Visit(this); 43 | } 44 | 45 | #endregion 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/JumpStatement.cs: -------------------------------------------------------------------------------- 1 | // 2 | // IfStatement.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public class JumpStatement: Statement 25 | { 26 | public Expression Condition { get; private set; } 27 | 28 | public int JumpOffset { get; private set; } 29 | 30 | public JumpStatement(Expression condition, int offset, long? startOffset = null, long? endOffset = null) 31 | { 32 | StartOffset = startOffset; 33 | EndOffset = endOffset; 34 | Condition = condition; 35 | JumpOffset = offset; 36 | ChildrenCore.Add(Condition); 37 | } 38 | 39 | public override void Accept(IAstNodeVisitor visitor) 40 | { 41 | visitor.Visit(this); 42 | } 43 | 44 | public override T Accept(IAstNodeVisitor visitor) 45 | { 46 | return visitor.Visit(this); 47 | } 48 | } 49 | } 50 | 51 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/LabelStatement.cs: -------------------------------------------------------------------------------- 1 | // 2 | // LabelStatement.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | public class LabelStatement: Statement 25 | { 26 | public string Label{ get; private set; } 27 | 28 | public LabelStatement(string label) 29 | { 30 | Label = label; 31 | } 32 | 33 | #region implemented abstract members of AstNodeBase 34 | 35 | public override void Accept(IAstNodeVisitor visitor) 36 | { 37 | visitor.Visit(this); 38 | } 39 | 40 | public override T Accept(IAstNodeVisitor visitor) 41 | { 42 | return visitor.Visit(this); 43 | } 44 | 45 | #endregion 46 | } 47 | } 48 | 49 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Ast/Statements/Statement.cs: -------------------------------------------------------------------------------- 1 | 2 | namespace NScumm.Dump 3 | { 4 | public abstract class Statement: AstNodeBase 5 | { 6 | } 7 | } 8 | 9 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/JumpAstVisitor.cs: -------------------------------------------------------------------------------- 1 | // 2 | // JumpAstVisitor.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using System.Collections.Generic; 23 | 24 | namespace NScumm.Dump 25 | { 26 | public class JumpAstVisitor: DefaultVisitor 27 | { 28 | public List Jumps { get; private set; } 29 | 30 | public JumpAstVisitor() 31 | { 32 | Jumps = new List(); 33 | } 34 | 35 | protected override void DefaultVisit(IAstNode node) 36 | { 37 | foreach (var child in node.Children) 38 | { 39 | child.Accept(this); 40 | } 41 | } 42 | 43 | public override void Visit(JumpStatement node) 44 | { 45 | Jumps.Add(node); 46 | } 47 | } 48 | 49 | } 50 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Parser/ScriptParser3_Camera.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScriptParser_Camera.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core; 23 | using NScumm.Scumm; 24 | 25 | namespace NScumm.Dump 26 | { 27 | partial class ScriptParser3 28 | { 29 | Statement PanCameraTo() 30 | { 31 | var to = GetVarOrDirectWord(OpCodeParameter.Param1); 32 | return new MethodInvocation("PanCameraTo").AddArgument(to).ToStatement(); 33 | } 34 | 35 | Statement SetCameraAt() 36 | { 37 | var at = GetVarOrDirectWord(OpCodeParameter.Param1); 38 | return new MethodInvocation("SetCameraAt").AddArgument(at).ToStatement(); 39 | } 40 | } 41 | } 42 | 43 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Parser/ScriptParser3_Inventory.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScriptParser_Inventory.cs 3 | // 4 | // Author: 5 | // Scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | using NScumm.Core; 23 | using NScumm.Scumm; 24 | 25 | namespace NScumm.Dump 26 | { 27 | partial class ScriptParser3 28 | { 29 | Statement FindInventory() 30 | { 31 | var index = GetResultIndexExpression(); 32 | var x = GetVarOrDirectByte(OpCodeParameter.Param1); 33 | var y = GetVarOrDirectByte(OpCodeParameter.Param2); 34 | return SetResultExpression(index, new MethodInvocation("FindInventory").AddArguments(x, y)).ToStatement(); 35 | } 36 | 37 | Statement GetInventoryCount() 38 | { 39 | var index = GetResultIndexExpression(); 40 | return SetResultExpression(index, new MethodInvocation("GetInventoryCount").AddArgument(GetVarOrDirectByte(OpCodeParameter.Param1))).ToStatement(); 41 | } 42 | } 43 | } 44 | 45 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/Parser/ScriptParser6_Inventory.cs: -------------------------------------------------------------------------------- 1 | // 2 | // ScriptParser6_Inventory.cs 3 | // 4 | // Author: 5 | // scemino 6 | // 7 | // Copyright (c) 2014 8 | // 9 | // This program is free software: you can redistribute it and/or modify 10 | // it under the terms of the GNU General Public License as published by 11 | // the Free Software Foundation, either version 3 of the License, or 12 | // (at your option) any later version. 13 | // 14 | // This program is distributed in the hope that it will be useful, 15 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 | // GNU General Public License for more details. 18 | // 19 | // You should have received a copy of the GNU General Public License 20 | // along with this program. If not, see . 21 | 22 | namespace NScumm.Dump 23 | { 24 | partial class ScriptParser6 25 | { 26 | protected Statement FindInventory() 27 | { 28 | var index = Pop(); 29 | var owner = Pop(); 30 | return Push(new MethodInvocation("FindInventory").AddArguments(owner, index)); 31 | } 32 | 33 | protected Statement GetInventoryCount() 34 | { 35 | return Push(new MethodInvocation("GetInventoryCount").AddArgument(Pop())); 36 | } 37 | } 38 | } 39 | 40 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/DesignTimeResolveAssemblyReferences.cache: -------------------------------------------------------------------------------- 1 | MBRSC -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tools/NScumm.Dump/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/NScumm.Dump.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- 1 | MBRSC -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/NScumm.Dump.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tools/NScumm.Dump/obj/Debug/NScumm.Dump.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Debug/build.force: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tools/NScumm.Dump/obj/Debug/build.force -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Release/.NETFramework,Version=v4.5.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")] 5 | -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Release/NScumm.Dump.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- 1 | MBRSC -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/obj/Release/NScumm.Dump.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/Tools/NScumm.Dump/obj/Release/NScumm.Dump.csproj.FileListAbsolute.txt -------------------------------------------------------------------------------- /src/Tools/NScumm.Dump/packages.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /src/UpgradeLog.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/UpgradeLog.htm -------------------------------------------------------------------------------- /src/UpgradeLog2.htm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/UpgradeLog2.htm -------------------------------------------------------------------------------- /src/packages/Mono.Options.1.1/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/Mono.Options.1.1/.signature.p7s -------------------------------------------------------------------------------- /src/packages/Mono.Options.1.1/Mono.Options.1.1.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/Mono.Options.1.1/Mono.Options.1.1.nupkg -------------------------------------------------------------------------------- /src/packages/NFluent.1.3.1.0/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NFluent.1.3.1.0/.signature.p7s -------------------------------------------------------------------------------- /src/packages/NFluent.1.3.1.0/NFluent.1.3.1.0.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NFluent.1.3.1.0/NFluent.1.3.1.0.nupkg -------------------------------------------------------------------------------- /src/packages/NFluent.1.3.1.0/lib/net35/NFluent.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NFluent.1.3.1.0/lib/net35/NFluent.dll -------------------------------------------------------------------------------- /src/packages/NFluent.1.3.1.0/lib/net40/NFluent.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NFluent.1.3.1.0/lib/net40/NFluent.dll -------------------------------------------------------------------------------- /src/packages/NFluent.1.3.1.0/lib/portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1/NFluent.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NFluent.1.3.1.0/lib/portable-net45+sl5+netcore45+MonoAndroid1+MonoTouch1/NFluent.dll -------------------------------------------------------------------------------- /src/packages/NUnit.2.6.4/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.2.6.4/.signature.p7s -------------------------------------------------------------------------------- /src/packages/NUnit.2.6.4/NUnit.2.6.4.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.2.6.4/NUnit.2.6.4.nupkg -------------------------------------------------------------------------------- /src/packages/NUnit.2.6.4/lib/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.2.6.4/lib/nunit.framework.dll -------------------------------------------------------------------------------- /src/packages/NUnit.2.6.4/license.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.2.6.4/license.txt -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/.signature.p7s: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/.signature.p7s -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/LICENSE.txt: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Charlie Poole 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | 21 | -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/NOTICES.txt: -------------------------------------------------------------------------------- 1 | NUnit 3.0 is based on earlier versions of NUnit, with Portions 2 | 3 | Copyright (c) 2002-2014 Charlie Poole or 4 | Copyright (c) 2002-2004 James W. Newkirk, Michael C. Two, Alexei A. Vorontsov or 5 | Copyright (c) 2000-2002 Philip A. Craig 6 | -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/NUnit.3.0.0-beta-2.nupkg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/NUnit.3.0.0-beta-2.nupkg -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/lib/net20/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/lib/net20/nunit.framework.dll -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/lib/net40/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/lib/net40/nunit.framework.dll -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/lib/net45/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/lib/net45/nunit.framework.dll -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/lib/portable-net45+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/lib/portable-net45+sl5+netcore45+wpa81+wp8+MonoAndroid1+MonoTouch1/nunit.framework.dll -------------------------------------------------------------------------------- /src/packages/NUnit.3.0.0-beta-2/lib/sl50/nunit.framework.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/basharast/NScummUWP/078f1c7effa4bc09f1ad6022216fdde166070778/src/packages/NUnit.3.0.0-beta-2/lib/sl50/nunit.framework.dll --------------------------------------------------------------------------------