├── .gitignore
├── Blueprint Common
├── Blueprint Common.csproj
├── BlueprintUtil.cs
├── Constants
│ ├── ArithmeticOperations.cs
│ ├── BlueprintVersions.cs
│ ├── Comparators.cs
│ ├── ItemNames.cs
│ ├── SignalTypes.cs
│ └── VirtualSignalNames.cs
└── Models
│ ├── Blueprint.cs
│ └── BlueprintWrapper.cs
├── Blueprint Editor.sln
├── Blueprint Generator
├── Blueprint Generator.csproj
├── ConnectionUtil.cs
├── Constants
│ └── ComputerSignals.cs
├── DemuxGenerator.cs
├── FontGenerator.cs
├── FontUtil.cs
├── Fonts
│ ├── 10px Font.png
│ └── 5x7 Font.png
├── IBlueprintGenerator.cs
├── MemoryInitializer.cs
├── MusicBoxSpeakerGenerator.cs
├── PowerUtil.cs
├── Program.cs
├── Properties
│ └── launchSettings.json
├── RamGenerator.cs
├── RegistersGenerator.cs
├── RomGenerator.cs
├── Screen
│ ├── PixelSignalsGenerator.cs
│ ├── ScreenGenerator.cs
│ ├── ScreenUtil.cs
│ ├── SpriteMemoryGenerator.cs
│ ├── SpriteShifterGenerator.cs
│ └── VideoRomGenerator.cs
└── SpeakerGenerator.cs
├── Blueprint Reader
├── Blueprint Reader.csproj
├── BlueprintReader.cs
├── Program.cs
└── Properties
│ └── launchSettings.json
├── Codec
├── AssemblyInfo.cpp
├── Codec.vcxproj
├── Codec.vcxproj.filters
├── Utils.cpp
├── Utils.h
├── Video.cpp
├── Video.h
├── app.aps
├── app.ico
├── app.rc
├── pch.cpp
├── pch.h
└── resource.h
├── Compiler Common
├── CompiledProgram.cs
├── Compiler Common.csproj
├── Instruction.cs
├── MethodBaseExtensions.cs
├── ProgramRomGenerator.cs
└── SignalUtils.cs
├── FactoVision Compiler Test
├── FactoVision Compiler Test.csproj
└── Program.cs
├── FactoVision Compiler
├── Analysis.cs
├── Assembler.cs
├── CompilerGeneratedMethods.cs
├── FactoVision Compiler.csproj
├── Program.cs
├── ProgramBuilder.cs
└── Properties
│ └── launchSettings.json
├── FactoVision Runtime
├── Clock.cs
├── CompilerServices
│ └── InlineAttribute.cs
├── FactoVision Runtime.csproj
├── FactoryNetwork.cs
├── Memory.cs
├── MusicBox.cs
├── NumericDisplay.cs
├── Random.cs
├── Screen.cs
├── Signal.cs
└── Speaker.cs
├── Find And Replace
├── Find And Replace.csproj
├── FindAndReplace.cs
├── Program.cs
└── Properties
│ └── launchSettings.json
├── IL Reader
├── Globals.cs
├── IL Reader.csproj
├── ILInstruction.cs
└── MethodBodyReader.cs
├── Music Box Compiler
├── Constants.cs
├── DecoderConstants.cs
├── MidiReader.cs
├── Models
│ ├── Drum.cs
│ ├── Instrument.cs
│ ├── InstrumentMapping.cs
│ ├── MusicConfig.cs
│ ├── Note.cs
│ ├── NoteGroup.cs
│ ├── Playlist.cs
│ └── Song.cs
├── Music Box Compiler.csproj
├── MusicBoxCompiler.cs
├── Program.cs
├── Properties
│ └── launchSettings.json
├── Sample
│ ├── Music
│ │ ├── BeatlesNumber9.com
│ │ │ ├── adaylife.mid
│ │ │ ├── carry.mid
│ │ │ ├── dear.mid
│ │ │ ├── dosecret.mid
│ │ │ ├── everybodyhide.mid
│ │ │ ├── glass.mid
│ │ │ ├── golden.mid
│ │ │ ├── hermajesty.mid
│ │ │ ├── imlooking.mid
│ │ │ ├── lovely.mid
│ │ │ ├── mean.mid
│ │ │ ├── poly.mid
│ │ │ ├── shecame.mid
│ │ │ ├── strawberry.mid
│ │ │ ├── sunking.mid
│ │ │ ├── theend.mid
│ │ │ ├── while.mid
│ │ │ └── younever.mid
│ │ ├── BitMidi
│ │ │ ├── BEATLES.Penny lane 2 k.mid
│ │ │ ├── Beatles_Cry_Baby_Cry.mid
│ │ │ ├── Beethoven-Moonlight-Sonata.mid
│ │ │ ├── Beethoven-Opus-57.mid
│ │ │ ├── Beethoven-Symphony5-1.mid
│ │ │ ├── Beethoven-Symphony7-2.mid
│ │ │ ├── Dance-Of-'The-Sugar-Plum-Fairy'.mid
│ │ │ ├── Dire Straits - Walk of Life.mid
│ │ │ ├── Edelweiss.mid
│ │ │ ├── Everybody-Wants-To-Rule-The-World-2.mid
│ │ │ ├── Foo Fighters - Everlong.mid
│ │ │ ├── Fur-Elise-1.mid
│ │ │ ├── GREENDAY.Boulevard of broken K.MID
│ │ │ ├── Halo - Siege of Madrigal.mid
│ │ │ ├── Here-Comes-The-Sun-2.mid
│ │ │ ├── Here-Comes-The-Sun-3.mid
│ │ │ ├── Hey-Jude-1.mid
│ │ │ ├── In the hall of the Mountain King.mid
│ │ │ ├── Journey - Don't Stop Believin.mid
│ │ │ ├── Kansas - Carry On My Wayward Son.mid
│ │ │ ├── Never-Gonna-Give-You-Up-2.mid
│ │ │ ├── P.SIMON-GARFUNKEL.Sound of silence K.mid
│ │ │ ├── Pokemon DiamondPearlPlatinum - Approaching Champion Cynthia.mid
│ │ │ ├── Portal - Still Alive.mid
│ │ │ ├── Portal 2 - Want You Gone.mid
│ │ │ ├── Queen - Bohemian Rhapsody.mid
│ │ │ ├── Smoke-On-The-Water-2.mid
│ │ │ ├── THE BEATLES.Back in USSR.mid
│ │ │ ├── THE BEATLES.Ballad of John and Yoko k.mid
│ │ │ ├── THE BEATLES.Eleonor Rigby K.mid
│ │ │ ├── THE BEATLES.Hello Goodbye K.MID
│ │ │ ├── THE BEATLES.I Feel fine K.mid
│ │ │ ├── THE BEATLES.I want you shes so heavy.mid
│ │ │ ├── THE BEATLES.In my life K.mid
│ │ │ ├── THE BEATLES.Julia K.mid
│ │ │ ├── THE BEATLES.Let it be K.mid
│ │ │ ├── THE BEATLES.Lucy in the sky K.mid
│ │ │ ├── THE BEATLES.Nowhere man K.mid
│ │ │ ├── THE BEATLES.OblaDi OblaDa K.mid
│ │ │ ├── THE BEATLES.Octopus's garden K.MID
│ │ │ ├── THE BEATLES.Revolution K.mid
│ │ │ ├── THE BEATLES.Something K.mid
│ │ │ ├── THE BEATLES.The long and winding road K.mid
│ │ │ ├── THE BEATLES.The night before K.mid
│ │ │ ├── THE BEATLES.Yellow submarine K.mid
│ │ │ ├── THE ROLLING STONES.Paint it black K.mid
│ │ │ ├── The Beatles - I've Just Seen a Face.mid
│ │ │ ├── beatles-little_help_from_you_friends.mid
│ │ │ ├── beatles-yesterday.mid
│ │ │ ├── canyon.mid
│ │ │ ├── i_want_to_hold_your_hand-beatles.mid
│ │ │ ├── toto-africa.mid
│ │ │ └── toumei1.mid
│ │ ├── Kunstderfuge.com
│ │ │ ├── Beethoven
│ │ │ │ ├── beethoven_symphony_5_1_(c)galimberti.mid
│ │ │ │ ├── beethoven_symphony_5_2_(c)galimberti.mid
│ │ │ │ ├── symphony_1_1_(c)lucarelli.mid
│ │ │ │ ├── symphony_1_2_(c)lucarelli.mid
│ │ │ │ ├── symphony_1_3_(c)lucarelli.mid
│ │ │ │ ├── symphony_1_4_(c)lucarelli.mid
│ │ │ │ ├── symphony_2_1_(c)lucarelli.mid
│ │ │ │ ├── symphony_2_2_(c)lucarelli.mid
│ │ │ │ ├── symphony_2_3_(c)lucarelli.mid
│ │ │ │ ├── symphony_2_4_(c)lucarelli.mid
│ │ │ │ ├── symphony_4_1_(c)cvikl.mid
│ │ │ │ ├── symphony_4_2_(c)cvikl.mid
│ │ │ │ ├── symphony_4_3_(c)cvikl.mid
│ │ │ │ ├── symphony_4_4_(c)cvikl.mid
│ │ │ │ ├── symphony_5_1_(c)cvikl.mid
│ │ │ │ ├── symphony_5_2_(c)cvikl.mid
│ │ │ │ ├── symphony_5_3_(c)cvikl.mid
│ │ │ │ ├── symphony_6_1_(c)cvikl.mid
│ │ │ │ ├── symphony_6_2_(c)cvikl.mid
│ │ │ │ ├── symphony_6_3_(c)cvikl.mid
│ │ │ │ ├── symphony_6_4_(c)cvikl.mid
│ │ │ │ ├── symphony_6_5_(c)cvikl.mid
│ │ │ │ ├── symphony_7_1_(c)cvikl.mid
│ │ │ │ ├── symphony_7_2_(c)cvikl.mid
│ │ │ │ ├── symphony_7_3_(c)cvikl.mid
│ │ │ │ ├── symphony_7_4_(c)cvikl.mid
│ │ │ │ ├── symphony_8_1_(c)lucarelli.mid
│ │ │ │ ├── symphony_8_2_(c)lucarelli.mid
│ │ │ │ ├── symphony_8_3_(c)lucarelli.mid
│ │ │ │ ├── symphony_8_4_(c)lucarelli.mid
│ │ │ │ ├── symphony_9_1_(c)cvikl.mid
│ │ │ │ ├── symphony_9_2_(c)cvikl.mid
│ │ │ │ ├── symphony_9_3_(c)cvikl.mid
│ │ │ │ └── symphony_9_4_(c)cvikl.mid
│ │ │ └── Mozart
│ │ │ │ ├── clarinet_concerto_622_1_(c)bakels.mid
│ │ │ │ ├── clarinet_concerto_622_2_(c)bakels.mid
│ │ │ │ ├── clarinet_concerto_622_3_(c)bakels.mid
│ │ │ │ ├── symphony_41_551_1_(c)cvikl.mid
│ │ │ │ ├── symphony_41_551_2_(c)cvikl.mid
│ │ │ │ ├── symphony_41_551_3_(c)cvikl.mid
│ │ │ │ └── symphony_41_551_4_(c)cvikl.mid
│ │ ├── Midis101.com
│ │ │ └── Semisonic_Closing_Time.mid
│ │ ├── OnlineSequencer.net
│ │ │ └── Avenged Sevenfold - Beast And The Harlot v7.mid
│ │ ├── Sheet Music.xlsx
│ │ └── Sources.md
│ ├── classical.yaml
│ ├── musicConfig.yaml
│ ├── odeToJoy.yaml
│ ├── pyGamePart1.yaml
│ ├── pyGamePart2.yaml
│ ├── rick.yaml
│ └── single.yaml
├── SpreadsheetReader.cs
├── StringUtil.cs
└── Test
│ └── .gitignore
├── Music Manager
├── Music Manager.csproj
├── Output
│ └── .gitignore
└── Program.cs
├── Third Party
├── ffmpeg-arm
│ ├── include
│ │ ├── libavcodec
│ │ │ ├── avcodec.h
│ │ │ ├── avfft.h
│ │ │ ├── dxva2.h
│ │ │ ├── old_codec_ids.h
│ │ │ ├── vaapi.h
│ │ │ ├── vda.h
│ │ │ ├── vdpau.h
│ │ │ ├── version.h
│ │ │ └── xvmc.h
│ │ ├── libavdevice
│ │ │ ├── avdevice.h
│ │ │ └── version.h
│ │ ├── libavfilter
│ │ │ ├── asrc_abuffer.h
│ │ │ ├── avcodec.h
│ │ │ ├── avfilter.h
│ │ │ ├── avfiltergraph.h
│ │ │ ├── buffersink.h
│ │ │ ├── buffersrc.h
│ │ │ └── version.h
│ │ ├── libavformat
│ │ │ ├── avformat.h
│ │ │ ├── avio.h
│ │ │ └── version.h
│ │ ├── libavresample
│ │ │ ├── avresample.h
│ │ │ └── version.h
│ │ ├── libavutil
│ │ │ ├── adler32.h
│ │ │ ├── aes.h
│ │ │ ├── attributes.h
│ │ │ ├── audio_fifo.h
│ │ │ ├── audioconvert.h
│ │ │ ├── avassert.h
│ │ │ ├── avconfig.h
│ │ │ ├── avstring.h
│ │ │ ├── avutil.h
│ │ │ ├── base64.h
│ │ │ ├── blowfish.h
│ │ │ ├── bprint.h
│ │ │ ├── bswap.h
│ │ │ ├── buffer.h
│ │ │ ├── channel_layout.h
│ │ │ ├── common.h
│ │ │ ├── cpu.h
│ │ │ ├── crc.h
│ │ │ ├── dict.h
│ │ │ ├── error.h
│ │ │ ├── eval.h
│ │ │ ├── fifo.h
│ │ │ ├── file.h
│ │ │ ├── frame.h
│ │ │ ├── hmac.h
│ │ │ ├── imgutils.h
│ │ │ ├── intfloat.h
│ │ │ ├── intfloat_readwrite.h
│ │ │ ├── intreadwrite.h
│ │ │ ├── lfg.h
│ │ │ ├── log.h
│ │ │ ├── lzo.h
│ │ │ ├── mathematics.h
│ │ │ ├── md5.h
│ │ │ ├── mem.h
│ │ │ ├── murmur3.h
│ │ │ ├── old_pix_fmts.h
│ │ │ ├── opt.h
│ │ │ ├── parseutils.h
│ │ │ ├── pixdesc.h
│ │ │ ├── pixfmt.h
│ │ │ ├── random_seed.h
│ │ │ ├── rational.h
│ │ │ ├── ripemd.h
│ │ │ ├── samplefmt.h
│ │ │ ├── sha.h
│ │ │ ├── sha512.h
│ │ │ ├── time.h
│ │ │ ├── timecode.h
│ │ │ ├── timestamp.h
│ │ │ ├── version.h
│ │ │ └── xtea.h
│ │ ├── libpostproc
│ │ │ ├── postprocess.h
│ │ │ └── version.h
│ │ ├── libswresample
│ │ │ ├── swresample.h
│ │ │ └── version.h
│ │ └── libswscale
│ │ │ ├── swscale.h
│ │ │ └── version.h
│ ├── lib
│ │ ├── avcodec-55.def
│ │ ├── avcodec.lib
│ │ ├── avdevice-55.def
│ │ ├── avdevice.lib
│ │ ├── avfilter-3.def
│ │ ├── avfilter.lib
│ │ ├── avformat-55.def
│ │ ├── avformat.lib
│ │ ├── avresample-1.def
│ │ ├── avresample.lib
│ │ ├── avutil-52.def
│ │ ├── avutil.lib
│ │ ├── backup
│ │ │ ├── avcodec.lib
│ │ │ ├── avdevice.lib
│ │ │ ├── avfilter.lib
│ │ │ ├── avformat.lib
│ │ │ ├── avresample.lib
│ │ │ ├── avutil.lib
│ │ │ ├── postproc.lib
│ │ │ ├── swresample.lib
│ │ │ └── swscale.lib
│ │ ├── pkgconfig
│ │ │ ├── libavcodec.pc
│ │ │ ├── libavdevice.pc
│ │ │ ├── libavfilter.pc
│ │ │ ├── libavformat.pc
│ │ │ ├── libavresample.pc
│ │ │ ├── libavutil.pc
│ │ │ ├── libpostproc.pc
│ │ │ ├── libswresample.pc
│ │ │ └── libswscale.pc
│ │ ├── postproc-52.def
│ │ ├── postproc.lib
│ │ ├── static
│ │ │ ├── avcodec.lib
│ │ │ ├── avdevice.lib
│ │ │ ├── avfilter.lib
│ │ │ ├── avformat.lib
│ │ │ ├── avutil.lib
│ │ │ ├── swresample.lib
│ │ │ └── swscale.lib
│ │ ├── swresample-0.def
│ │ ├── swresample.lib
│ │ ├── swscale-2.def
│ │ └── swscale.lib
│ └── share
│ │ └── ffmpeg
│ │ ├── examples
│ │ ├── Makefile
│ │ ├── README
│ │ ├── decoding_encoding.c
│ │ ├── demuxing.c
│ │ ├── filtering_audio.c
│ │ ├── filtering_video.c
│ │ ├── metadata.c
│ │ ├── muxing.c
│ │ ├── resampling_audio.c
│ │ └── scaling_video.c
│ │ ├── ffprobe.xsd
│ │ ├── libvpx-1080p.ffpreset
│ │ ├── libvpx-1080p50_60.ffpreset
│ │ ├── libvpx-360p.ffpreset
│ │ ├── libvpx-720p.ffpreset
│ │ ├── libvpx-720p50_60.ffpreset
│ │ ├── libx264-ipod320.ffpreset
│ │ └── libx264-ipod640.ffpreset
├── ffmpeg-win64
│ ├── README.txt
│ ├── doc
│ │ ├── developer.html
│ │ ├── examples
│ │ │ ├── Makefile
│ │ │ ├── README
│ │ │ ├── avio_dir_cmd.c
│ │ │ ├── avio_reading.c
│ │ │ ├── decoding_encoding.c
│ │ │ ├── demuxing_decoding.c
│ │ │ ├── extract_mvs.c
│ │ │ ├── filter_audio.c
│ │ │ ├── filtering_audio.c
│ │ │ ├── filtering_video.c
│ │ │ ├── http_multiclient.c
│ │ │ ├── metadata.c
│ │ │ ├── muxing.c
│ │ │ ├── qsvdec.c
│ │ │ ├── remuxing.c
│ │ │ ├── resampling_audio.c
│ │ │ ├── scaling_video.c
│ │ │ ├── transcode_aac.c
│ │ │ └── transcoding.c
│ │ ├── faq.html
│ │ ├── fate.html
│ │ ├── ffmpeg-all.html
│ │ ├── ffmpeg-bitstream-filters.html
│ │ ├── ffmpeg-codecs.html
│ │ ├── ffmpeg-devices.html
│ │ ├── ffmpeg-filters.html
│ │ ├── ffmpeg-formats.html
│ │ ├── ffmpeg-protocols.html
│ │ ├── ffmpeg-resampler.html
│ │ ├── ffmpeg-scaler.html
│ │ ├── ffmpeg-utils.html
│ │ ├── ffmpeg.html
│ │ ├── ffplay-all.html
│ │ ├── ffplay.html
│ │ ├── ffprobe-all.html
│ │ ├── ffprobe.html
│ │ ├── general.html
│ │ ├── git-howto.html
│ │ ├── libavcodec.html
│ │ ├── libavdevice.html
│ │ ├── libavfilter.html
│ │ ├── libavformat.html
│ │ ├── libavutil.html
│ │ ├── libswresample.html
│ │ ├── libswscale.html
│ │ ├── nut.html
│ │ └── platform.html
│ ├── ff-prompt.bat
│ ├── include
│ │ ├── libavcodec
│ │ │ ├── avcodec.h
│ │ │ ├── avdct.h
│ │ │ ├── avfft.h
│ │ │ ├── d3d11va.h
│ │ │ ├── dv_profile.h
│ │ │ ├── dxva2.h
│ │ │ ├── qsv.h
│ │ │ ├── vaapi.h
│ │ │ ├── vda.h
│ │ │ ├── vdpau.h
│ │ │ ├── version.h
│ │ │ ├── videotoolbox.h
│ │ │ ├── vorbis_parser.h
│ │ │ └── xvmc.h
│ │ ├── libavdevice
│ │ │ ├── avdevice.h
│ │ │ └── version.h
│ │ ├── libavfilter
│ │ │ ├── avfilter.h
│ │ │ ├── avfiltergraph.h
│ │ │ ├── buffersink.h
│ │ │ ├── buffersrc.h
│ │ │ └── version.h
│ │ ├── libavformat
│ │ │ ├── avformat.h
│ │ │ ├── avio.h
│ │ │ └── version.h
│ │ ├── libavutil
│ │ │ ├── adler32.h
│ │ │ ├── aes.h
│ │ │ ├── attributes.h
│ │ │ ├── audio_fifo.h
│ │ │ ├── avassert.h
│ │ │ ├── avconfig.h
│ │ │ ├── avstring.h
│ │ │ ├── avutil.h
│ │ │ ├── base64.h
│ │ │ ├── blowfish.h
│ │ │ ├── bprint.h
│ │ │ ├── bswap.h
│ │ │ ├── buffer.h
│ │ │ ├── camellia.h
│ │ │ ├── cast5.h
│ │ │ ├── channel_layout.h
│ │ │ ├── common.h
│ │ │ ├── cpu.h
│ │ │ ├── crc.h
│ │ │ ├── des.h
│ │ │ ├── dict.h
│ │ │ ├── display.h
│ │ │ ├── downmix_info.h
│ │ │ ├── error.h
│ │ │ ├── eval.h
│ │ │ ├── ffversion.h
│ │ │ ├── fifo.h
│ │ │ ├── file.h
│ │ │ ├── frame.h
│ │ │ ├── hash.h
│ │ │ ├── hmac.h
│ │ │ ├── imgutils.h
│ │ │ ├── intfloat.h
│ │ │ ├── intreadwrite.h
│ │ │ ├── lfg.h
│ │ │ ├── log.h
│ │ │ ├── lzo.h
│ │ │ ├── macros.h
│ │ │ ├── mathematics.h
│ │ │ ├── md5.h
│ │ │ ├── mem.h
│ │ │ ├── motion_vector.h
│ │ │ ├── murmur3.h
│ │ │ ├── opt.h
│ │ │ ├── parseutils.h
│ │ │ ├── pixdesc.h
│ │ │ ├── pixelutils.h
│ │ │ ├── pixfmt.h
│ │ │ ├── random_seed.h
│ │ │ ├── rational.h
│ │ │ ├── rc4.h
│ │ │ ├── replaygain.h
│ │ │ ├── ripemd.h
│ │ │ ├── samplefmt.h
│ │ │ ├── sha.h
│ │ │ ├── sha512.h
│ │ │ ├── stereo3d.h
│ │ │ ├── tea.h
│ │ │ ├── threadmessage.h
│ │ │ ├── time.h
│ │ │ ├── timecode.h
│ │ │ ├── timestamp.h
│ │ │ ├── tree.h
│ │ │ ├── twofish.h
│ │ │ ├── version.h
│ │ │ └── xtea.h
│ │ ├── libpostproc
│ │ │ ├── postprocess.h
│ │ │ └── version.h
│ │ ├── libswresample
│ │ │ ├── swresample.h
│ │ │ └── version.h
│ │ └── libswscale
│ │ │ ├── swscale.h
│ │ │ └── version.h
│ ├── lib
│ │ ├── avcodec-57.def
│ │ ├── avcodec.lib
│ │ ├── avdevice-57.def
│ │ ├── avdevice.lib
│ │ ├── avfilter-6.def
│ │ ├── avfilter.lib
│ │ ├── avformat-57.def
│ │ ├── avformat.lib
│ │ ├── avutil-55.def
│ │ ├── avutil.lib
│ │ ├── libavcodec.dll.a
│ │ ├── libavdevice.dll.a
│ │ ├── libavfilter.dll.a
│ │ ├── libavformat.dll.a
│ │ ├── libavutil.dll.a
│ │ ├── libpostproc.dll.a
│ │ ├── libswresample.dll.a
│ │ ├── libswscale.dll.a
│ │ ├── postproc-54.def
│ │ ├── postproc.lib
│ │ ├── swresample-2.def
│ │ ├── swresample.lib
│ │ ├── swscale-4.def
│ │ └── swscale.lib
│ ├── licenses
│ │ ├── bzip2.txt
│ │ ├── dcadec.txt
│ │ ├── fontconfig.txt
│ │ ├── freetype.txt
│ │ ├── frei0r.txt
│ │ ├── gme.txt
│ │ ├── gnutls.txt
│ │ ├── lame.txt
│ │ ├── libass.txt
│ │ ├── libbluray.txt
│ │ ├── libbs2b.txt
│ │ ├── libcaca.txt
│ │ ├── libgsm.txt
│ │ ├── libiconv.txt
│ │ ├── libilbc.txt
│ │ ├── libmodplug.txt
│ │ ├── libtheora.txt
│ │ ├── libvorbis.txt
│ │ ├── libvpx.txt
│ │ ├── libwebp.txt
│ │ ├── opencore-amr.txt
│ │ ├── openjpeg.txt
│ │ ├── opus.txt
│ │ ├── rtmpdump.txt
│ │ ├── schroedinger.txt
│ │ ├── soxr.txt
│ │ ├── speex.txt
│ │ ├── twolame.txt
│ │ ├── vid.stab.txt
│ │ ├── vo-aacenc.txt
│ │ ├── vo-amrwbenc.txt
│ │ ├── wavpack.txt
│ │ ├── x264.txt
│ │ ├── x265.txt
│ │ ├── xavs.txt
│ │ ├── xvid.txt
│ │ ├── xz.txt
│ │ ├── zimg.txt
│ │ └── zlib.txt
│ └── presets
│ │ ├── ffprobe.xsd
│ │ ├── libvpx-1080p.ffpreset
│ │ ├── libvpx-1080p50_60.ffpreset
│ │ ├── libvpx-360p.ffpreset
│ │ ├── libvpx-720p.ffpreset
│ │ └── libvpx-720p50_60.ffpreset
└── ffmpeg
│ ├── README.txt
│ ├── doc
│ ├── developer.html
│ ├── examples
│ │ ├── Makefile
│ │ ├── README
│ │ ├── avio_reading.c
│ │ ├── decoding_encoding.c
│ │ ├── demuxing_decoding.c
│ │ ├── filter_audio.c
│ │ ├── filtering_audio.c
│ │ ├── filtering_video.c
│ │ ├── metadata.c
│ │ ├── muxing.c
│ │ ├── remuxing.c
│ │ ├── resampling_audio.c
│ │ ├── scaling_video.c
│ │ ├── transcode_aac.c
│ │ └── transcoding.c
│ ├── faq.html
│ ├── fate.html
│ ├── ffmpeg-all.html
│ ├── ffmpeg-bitstream-filters.html
│ ├── ffmpeg-codecs.html
│ ├── ffmpeg-devices.html
│ ├── ffmpeg-filters.html
│ ├── ffmpeg-formats.html
│ ├── ffmpeg-protocols.html
│ ├── ffmpeg-resampler.html
│ ├── ffmpeg-scaler.html
│ ├── ffmpeg-utils.html
│ ├── ffmpeg.html
│ ├── ffplay-all.html
│ ├── ffplay.html
│ ├── ffprobe-all.html
│ ├── ffprobe.html
│ ├── general.html
│ ├── git-howto.html
│ ├── libavcodec.html
│ ├── libavdevice.html
│ ├── libavfilter.html
│ ├── libavformat.html
│ ├── libavutil.html
│ ├── libswresample.html
│ ├── libswscale.html
│ ├── nut.html
│ └── platform.html
│ ├── ff-prompt.bat
│ ├── include
│ ├── libavcodec
│ │ ├── avcodec.h
│ │ ├── avfft.h
│ │ ├── dv_profile.h
│ │ ├── dxva2.h
│ │ ├── old_codec_ids.h
│ │ ├── vaapi.h
│ │ ├── vda.h
│ │ ├── vdpau.h
│ │ ├── version.h
│ │ └── xvmc.h
│ ├── libavdevice
│ │ ├── avdevice.h
│ │ └── version.h
│ ├── libavfilter
│ │ ├── asrc_abuffer.h
│ │ ├── avcodec.h
│ │ ├── avfilter.h
│ │ ├── avfiltergraph.h
│ │ ├── buffersink.h
│ │ ├── buffersrc.h
│ │ └── version.h
│ ├── libavformat
│ │ ├── avformat.h
│ │ ├── avio.h
│ │ └── version.h
│ ├── libavutil
│ │ ├── adler32.h
│ │ ├── aes.h
│ │ ├── attributes.h
│ │ ├── audio_fifo.h
│ │ ├── audioconvert.h
│ │ ├── avassert.h
│ │ ├── avconfig.h
│ │ ├── avstring.h
│ │ ├── avutil.h
│ │ ├── base64.h
│ │ ├── blowfish.h
│ │ ├── bprint.h
│ │ ├── bswap.h
│ │ ├── buffer.h
│ │ ├── channel_layout.h
│ │ ├── common.h
│ │ ├── cpu.h
│ │ ├── crc.h
│ │ ├── dict.h
│ │ ├── display.h
│ │ ├── downmix_info.h
│ │ ├── error.h
│ │ ├── eval.h
│ │ ├── ffversion.h
│ │ ├── fifo.h
│ │ ├── file.h
│ │ ├── frame.h
│ │ ├── hash.h
│ │ ├── hmac.h
│ │ ├── imgutils.h
│ │ ├── intfloat.h
│ │ ├── intfloat_readwrite.h
│ │ ├── intreadwrite.h
│ │ ├── lfg.h
│ │ ├── log.h
│ │ ├── lzo.h
│ │ ├── macros.h
│ │ ├── mathematics.h
│ │ ├── md5.h
│ │ ├── mem.h
│ │ ├── murmur3.h
│ │ ├── old_pix_fmts.h
│ │ ├── opt.h
│ │ ├── parseutils.h
│ │ ├── pixdesc.h
│ │ ├── pixfmt.h
│ │ ├── random_seed.h
│ │ ├── rational.h
│ │ ├── replaygain.h
│ │ ├── ripemd.h
│ │ ├── samplefmt.h
│ │ ├── sha.h
│ │ ├── sha512.h
│ │ ├── stereo3d.h
│ │ ├── threadmessage.h
│ │ ├── time.h
│ │ ├── timecode.h
│ │ ├── timestamp.h
│ │ ├── version.h
│ │ └── xtea.h
│ ├── libpostproc
│ │ ├── postprocess.h
│ │ └── version.h
│ ├── libswresample
│ │ ├── swresample.h
│ │ └── version.h
│ └── libswscale
│ │ ├── swscale.h
│ │ └── version.h
│ ├── lib
│ ├── avcodec-55.def
│ ├── avcodec.lib
│ ├── avdevice-55.def
│ ├── avdevice.lib
│ ├── avfilter-4.def
│ ├── avfilter.lib
│ ├── avformat-55.def
│ ├── avformat.lib
│ ├── avutil-52.def
│ ├── avutil.lib
│ ├── libavcodec.dll.a
│ ├── libavdevice.dll.a
│ ├── libavfilter.dll.a
│ ├── libavformat.dll.a
│ ├── libavutil.dll.a
│ ├── libpostproc.dll.a
│ ├── libswresample.dll.a
│ ├── libswscale.dll.a
│ ├── postproc-52.def
│ ├── postproc.lib
│ ├── swresample-0.def
│ ├── swresample.lib
│ ├── swscale-2.def
│ └── swscale.lib
│ ├── licenses
│ ├── bzip2.txt
│ ├── fontconfig.txt
│ ├── freetype.txt
│ ├── frei0r.txt
│ ├── gme.txt
│ ├── gnutls.txt
│ ├── lame.txt
│ ├── libass.txt
│ ├── libbluray.txt
│ ├── libbs2b.txt
│ ├── libcaca.txt
│ ├── libgsm.txt
│ ├── libiconv.txt
│ ├── libilbc.txt
│ ├── libmodplug.txt
│ ├── libtheora.txt
│ ├── libvorbis.txt
│ ├── libvpx.txt
│ ├── libwebp.txt
│ ├── opencore-amr.txt
│ ├── openjpeg.txt
│ ├── opus.txt
│ ├── rtmpdump.txt
│ ├── schroedinger.txt
│ ├── soxr.txt
│ ├── speex.txt
│ ├── twolame.txt
│ ├── vid.stab.txt
│ ├── vo-aacenc.txt
│ ├── vo-amrwbenc.txt
│ ├── wavpack.txt
│ ├── x264.txt
│ ├── x265.txt
│ ├── xavs.txt
│ ├── xvid.txt
│ └── zlib.txt
│ └── presets
│ ├── ffprobe.xsd
│ ├── libvpx-1080p.ffpreset
│ ├── libvpx-1080p50_60.ffpreset
│ ├── libvpx-360p.ffpreset
│ ├── libvpx-720p.ffpreset
│ └── libvpx-720p50_60.ffpreset
└── Video Compiler
├── HdrColor.cs
├── Program.cs
├── Properties
└── launchSettings.json
├── Video Compiler.csproj
└── VideoCompiler.cs
/.gitignore:
--------------------------------------------------------------------------------
1 | /.vs
2 | bin/
3 | obj/
4 | Test/
5 | *.user
6 |
--------------------------------------------------------------------------------
/Blueprint Common/Blueprint Common.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | netstandard2.1
5 | BlueprintCommon
6 | BlueprintCommon
7 |
8 |
9 |
10 |
11 |
12 | NU1701
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Blueprint Common/Constants/ArithmeticOperations.cs:
--------------------------------------------------------------------------------
1 | namespace BlueprintCommon.Constants
2 | {
3 | public static class ArithmeticOperations
4 | {
5 | public const string Multiplication = "*";
6 | public const string Division = "/";
7 | public const string Addition = "+";
8 | public const string Subtraction = "-";
9 | public const string Modulus = "%";
10 | public const string Exponentiation = "^";
11 | public const string LeftShift = "<<";
12 | public const string RightShift = ">>";
13 | public const string And = "AND";
14 | public const string Or = "OR";
15 | public const string Xor = "XOR";
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Blueprint Common/Constants/BlueprintVersions.cs:
--------------------------------------------------------------------------------
1 | namespace BlueprintCommon.Constants
2 | {
3 | public static class BlueprintVersions
4 | {
5 | public const long CurrentVersion = 562949955256321;
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Blueprint Common/Constants/Comparators.cs:
--------------------------------------------------------------------------------
1 | namespace BlueprintCommon.Constants
2 | {
3 | public static class Comparators
4 | {
5 | public const string IsEqual = "=";
6 | public const string IsNotEqual = "\u2260";
7 | public const string GreaterThan = ">";
8 | public const string LessThan = "<";
9 | public const string LessThanOrEqualTo = "\u2264";
10 | public const string GreaterThanOrEqualTo = "\u2265";
11 | }
12 | }
13 |
--------------------------------------------------------------------------------
/Blueprint Common/Constants/SignalTypes.cs:
--------------------------------------------------------------------------------
1 | namespace BlueprintCommon.Constants
2 | {
3 | public static class SignalTypes
4 | {
5 | public const string Item = "item";
6 | public const string Virtual = "virtual";
7 | }
8 | }
9 |
--------------------------------------------------------------------------------
/Blueprint Common/Models/BlueprintWrapper.cs:
--------------------------------------------------------------------------------
1 | namespace BlueprintCommon.Models
2 | {
3 | public class BlueprintWrapper
4 | {
5 | public Blueprint Blueprint { get; set; }
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/Blueprint Generator/Blueprint Generator.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net9.0
6 | BlueprintGenerator
7 | BlueprintGenerator
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/Blueprint Generator/Fonts/10px Font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matthewreiter/FactorioBlueprintGenerator/f3e2e7c239628e178a4bf9bf5a79514184238df0/Blueprint Generator/Fonts/10px Font.png
--------------------------------------------------------------------------------
/Blueprint Generator/Fonts/5x7 Font.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/matthewreiter/FactorioBlueprintGenerator/f3e2e7c239628e178a4bf9bf5a79514184238df0/Blueprint Generator/Fonts/5x7 Font.png
--------------------------------------------------------------------------------
/Blueprint Generator/IBlueprintGenerator.cs:
--------------------------------------------------------------------------------
1 | using BlueprintCommon.Models;
2 | using Microsoft.Extensions.Configuration;
3 |
4 | namespace BlueprintGenerator
5 | {
6 | public interface IBlueprintGenerator
7 | {
8 | public Blueprint Generate(IConfigurationRoot configuration);
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/Blueprint Generator/MemoryInitializer.cs:
--------------------------------------------------------------------------------
1 | using BlueprintCommon;
2 | using BlueprintCommon.Models;
3 | using Microsoft.Extensions.Configuration;
4 | using System;
5 | using System.Linq;
6 |
7 | namespace BlueprintGenerator
8 | {
9 | public static class MemoryInitializer
10 | {
11 | public static void Run(IConfigurationRoot configuration)
12 | {
13 | var outputBlueprintFile = configuration["OutputBlueprint"];
14 | var outputJsonFile = configuration["OutputJson"];
15 | var memoryType = configuration["MemoryType"];
16 |
17 | var generatorType = typeof(MemoryInitializer).Assembly.GetTypes()
18 | .FirstOrDefault(type => type.IsAssignableTo(typeof(IBlueprintGenerator)) &&
19 | type.Name.Equals($"{memoryType}Generator", StringComparison.CurrentCultureIgnoreCase));
20 |
21 | if (generatorType == null)
22 | {
23 | throw new Exception($"Unsupported memory type: {memoryType}");
24 | }
25 |
26 | var generator = (IBlueprintGenerator)Activator.CreateInstance(generatorType);
27 | var blueprint = generator.Generate(configuration);
28 |
29 | BlueprintUtil.PopulateIndices(blueprint);
30 |
31 | var blueprintWrapper = new BlueprintWrapper { Blueprint = blueprint };
32 |
33 | BlueprintUtil.WriteOutBlueprint(outputBlueprintFile, blueprintWrapper);
34 | BlueprintUtil.WriteOutJson(outputJsonFile, blueprintWrapper);
35 | }
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Blueprint Generator/Program.cs:
--------------------------------------------------------------------------------
1 | using Microsoft.Extensions.Configuration;
2 |
3 | namespace BlueprintGenerator
4 | {
5 | public class Program
6 | {
7 | public static void Main(string[] args)
8 | {
9 | var configuration = new ConfigurationBuilder()
10 | .AddCommandLine(args)
11 | .Build();
12 |
13 | MemoryInitializer.Run(configuration);
14 | }
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/Blueprint Reader/Blueprint Reader.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net9.0
6 | BlueprintReader
7 | BlueprintReader
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/Blueprint Reader/BlueprintReader.cs:
--------------------------------------------------------------------------------
1 | using BlueprintCommon;
2 | using Microsoft.Extensions.Configuration;
3 | using System.Text.Json;
4 |
5 | namespace BlueprintReader
6 | {
7 | public static class BlueprintReader
8 | {
9 | public static void Run(IConfigurationRoot configuration)
10 | {
11 | var inputBlueprintFile = configuration["InputBlueprint"];
12 | var outputJsonFile = configuration["OutputJson"];
13 |
14 | var json = BlueprintUtil.ReadBlueprintFileAsJson(inputBlueprintFile);
15 | var jsonObj = JsonSerializer.Deserialize