All Projects → s-macke → Fshistory

s-macke / Fshistory

Licence: mit
Play and Enjoy the History of Microsoft Flight Simulator

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Fshistory

Indigo
Universal cheminformatics libraries, utilities and database search tools
Stars: ✭ 146 (-10.43%)
Mutual labels:  webassembly
Wasmer Java
☕ WebAssembly runtime for Java
Stars: ✭ 152 (-6.75%)
Mutual labels:  webassembly
Esm Integration
ECMAScript module integration
Stars: ✭ 157 (-3.68%)
Mutual labels:  webassembly
Rapidcms
RapidCMS is a Blazor framework which allows you to build a responsive and flexible CMS purely from code. It provides a basic set of editors and controls, and is fully customisable.
Stars: ✭ 149 (-8.59%)
Mutual labels:  webassembly
Deno Sqlite
Deno SQLite module
Stars: ✭ 151 (-7.36%)
Mutual labels:  webassembly
Fetch Stream Audio
Low Latency web audio playback examples for decoding audio streams in chunks with Fetch & Streams APIs
Stars: ✭ 153 (-6.13%)
Mutual labels:  webassembly
Wasm Crypto
A WebAssembly (via AssemblyScript) set of cryptographic primitives for building authentication and key exchange protocols.
Stars: ✭ 146 (-10.43%)
Mutual labels:  webassembly
Raemixx500
Open Hardware Remake of the Commodore Amiga 500+ Mainboard
Stars: ✭ 161 (-1.23%)
Mutual labels:  retrogaming
Angular Wasm
Examples of how to use WebAssembly within Angular
Stars: ✭ 151 (-7.36%)
Mutual labels:  webassembly
Crosswindow
💻📱 A cross platform system abstraction library written in C++ for managing windows and performing OS tasks.
Stars: ✭ 155 (-4.91%)
Mutual labels:  webassembly
Iswasmfast
Performance comparison of WebAssembly, C++ Addon, and native implementations of various algorithms in Node.js.
Stars: ✭ 149 (-8.59%)
Mutual labels:  webassembly
Spec
WebAssembly for Proxies (ABI specification)
Stars: ✭ 150 (-7.98%)
Mutual labels:  webassembly
Pychat
webchat via WebSockets/WebRTC that allows messaging/video call/screen sharing
Stars: ✭ 152 (-6.75%)
Mutual labels:  webassembly
Libarchivejs
Archive library for browsers
Stars: ✭ 145 (-11.04%)
Mutual labels:  webassembly
Halite Iii
Season 3 of @twosigma's artificial intelligence programming challenge
Stars: ✭ 159 (-2.45%)
Mutual labels:  webassembly
Wah
a slightly higher-level language superset of webassembly
Stars: ✭ 147 (-9.82%)
Mutual labels:  webassembly
Seed
A Rust framework for creating web apps
Stars: ✭ 3,069 (+1782.82%)
Mutual labels:  webassembly
Opus Media Recorder
MediaRecorder polyfill for Opus recording using WebAssembly
Stars: ✭ 159 (-2.45%)
Mutual labels:  webassembly
Wain
WebAssembly implementation from scratch in Safe Rust with zero dependencies
Stars: ✭ 160 (-1.84%)
Mutual labels:  webassembly
Blazor Samples
Explore and learn Syncfusion Blazor components using large collection of demos, example applications and tutorial samples
Stars: ✭ 156 (-4.29%)
Mutual labels:  webassembly

FSHistory

Play and Enjoy the History of Microsoft Flight Simulator

Click to play

web demonstration

Do you know how many Flight Simulators Microsoft developed? It has been more than ten with Microsoft Flight Simulator (2020) being the latest version that has been released.

See how it all began. Play the first four flight simulator games Microsoft developed from 1982 to 1989. It has full mouse and keyboard control and can be even enjoyed on your mobile. However a full IBM style keyboard is recommended.

Technical aspects

Always when I start a new project I wonder what programming language I should use. Most of the time the requirements are the same. It must be fast, typed and the result must presentable on a website. Especially I would like to keep it as simple as possible. C is usually my language of choice when the logic doesn't get too complicated. And this is exactly the case for such emulators. Low level hardware emulation on a low level language.

C is also the natural choice for WebAssembly as the language features fit perfect. It is like you write an ordinary C-library.

clang of the LLVM project offers the ideal compiler infrastructure to create customized WebAssembly files without any additional runtime code. As such my code implements parts of the libc such as printf, malloc and memcpy. Just enough to run the emulator. The result is a project that compiles naturally as a native executable and runs in the browser with just is a few hundred lines of glue code.

In short, this is the technical feature list

  • Developed in C.
  • Emulates an 8086 and features from a 286 and a 386 CPU.
  • Emulates keyboard, mouse, graphics, interrupt controller, timer controller.
  • Implements DOS and BIOS functions similar to DOSBOX.
  • Compiles to an ordinary executable by using the Simple DirectMedia Layer (SDL).
  • Compiles to WebAssembly via the LLVM compiler by using my own trivial libc implementation.

How To Build

To build the native executable make sure gcc and SDL2 is installed and run

m̀ake

To compile the webassembly file install clang and run

./scripts/compile_wasm.sh

License

The software part of the repository is under the MIT license. Please read the license file for more information. The game data in the data directory is not part of this license

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].