Skip to content

lbalvarenga/rawmarching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Rawmarching

Rawmarching is my submission to fullsail.edu's scholarship program. Created in 3 days, it showcases (slightly rushed) code that sets up an x86-compatible computer from scratch, all the way to rendering a raymarching demo with VGA technology in 32-bit protected mode.

Getting Started

Recommended approach

Instead of setting up the build system manually, a live web version is available. Alongside a live emulator, it contains insights and explanations of the code that is hosted in this repository.

Hard mode

It is advisable to obtain a cross-compiler that targets i386-elf. The makefile must be edited to reflect the installed toolchain and emulator. If an emulator other than QEMU is used, then some makefile rules will need to be altered.

In the makefile:

QEMU = <your-emulator-here>
CC = <your-compiler-here>
...

In order to compile all the binaries and run the "operating system", type the following in a *nix compatible shell:

In a *nix shell:

make clean # just to be safe
make run

Inspiration

Switching from real to protected mode in x86 platforms can be quite the undertaking, and I wouldn't be able to do it alone. A massive thank you goes out to the following forums/institutions/websites/persons:

There are also other mentions scattered throughout the code, mostly of resources that helped me implement certain algorithms and functions. For a more thorough list of credits, refer to the live demo website.

What's missing

The tight deadline means that many wanted features were shunned. Of those, the most notable are:

  • 64-bit compatibility
  • Interrupt handling
  • LAPIC Support
  • Robust standard library
  • Robust error handling
  • Unit testing
  • Multithreading

About

Raymarching from scratch on bare metal.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published