Giter Site home page Giter Site logo

kan78089 / fshistory Goto Github PK

View Code? Open in Web Editor NEW

This project forked from s-macke/fshistory

0.0 0.0 0.0 1.14 MB

Play and Enjoy the History of Microsoft Flight Simulator

License: MIT License

Makefile 0.95% C 87.60% C++ 1.11% Shell 0.15% JavaScript 6.55% HTML 3.64%

fshistory's Introduction

FSHistory

Play and Enjoy the History of Microsoft Flight Simulator

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

fshistory's People

Contributors

s-macke avatar jasperpilgrim avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.