Skip to content

nanochess/RayTracer

Repository files navigation

Ray Tracer in a boot sector

by Oscar Toledo G. Apr/12/2024

https://nanochess.org

https://github.com/nanochess

What is this?

This is a port of the amazing Ray Tracer in Atari 8-bit BASIC by D. Scott Williamson. You can see it at https://bunsen.itch.io/raytrace-movie-atari-8bit-by-d-scott-williamson

This was based on a static BBC micro version by @coprolite9000 (see https://bbcmic.ro/?t=9ctpk) that was based on @kweepa's original one (see whole X thread), however at this point it looks like the program cannot be decoded back.

I asked Williamson for permission to make a port to a boot sector, and here it is. I was running around 590 bytes until I found a duplicated calculation that could be made into a subroutine. The code isn't exactly the same because I changed some constants to adapt it, and also collapsed some to save bytes. Anyway, I'm pretty happy I finally found good use for the VGA palette!

If you are going to run it in real hardware it requires a minimum of a Pentium Pro, otherwise most modern emulators will be able to run it.

One of the biggest surprises is how so fast are modern computers so technically the animation is real-time in my Macbook Air running the ray tracer in Windows XP under VirtualBox. You can see it on Youtube.

Ray tracer in a boot sector animation

How to use it.

If you want to assemble it, you must download the Netwide Assembler (NASM) from www.nasm.us

Use this command line:

nasm -f bin ray.asm -Dcom_file=1 -o ray.com
nasm -f bin ray.asm -Dcom_file=0 -o ray.img

Tested with VirtualBox for macOS running Windows XP and also executing directly the bootsector. For QEMU, recommended run with KVM (Linux) or Hyper-V (Windows) accelerator for better performance:

Run with KVM:

qemu-system-x86_64 -machine accel=kvm ray.img

Run with Hyper-V:

qemu-system-x86_64 -machine accel=whpx ray.img

Run without accelerator (TCG):

qemu-system-x86_64 ray.img

Because DOSBox-X runs very slowly, I further tested with VirtualBox over Windows 11 (Asus TUF F17), created a Windows XP 32-bit machine (you don't need to install Windows nor a hard disk image), in Configuration/Storage in the bottom there is a icon saying "Add controller", choose I82078 (floppy), then click "Add floppy drive", and select the boot sector as image (ray.img).

Ray tracer in a boot sector

Acknowledgments

Thanks to Peter Ferrie for helping me to save 23 bytes (my original program was 506 bytes, now it is 483 bytes).

Thanks to birdie-github for contributing the animated GIF of the ray tracer.

Thanks to SuperMaxusa for contributing the Qemu acceleration notes.

More on this?

Do you want to learn 8086/8088 assembler? Get my books Programming Boot Sector Games containing an 8086/8088 crash course! Also available More Boot Sector Games. Now available from Lulu and Amazon!

About

Ray Tracer in 483 bytes (x86 boot sector)

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published