8080-Emulator/README.md
2024-01-19 21:35:27 +00:00

31 lines
No EOL
2.3 KiB
Markdown

# 8080-Emulator
This is a 8080-Emulator written in C, built with the help of the website: http://www.emulator101.com/ in order to emulate the space invaders game.
As someone who uses emulators like Dolphin, Citra, RPCS3, Cemu and Yuzu all the time and loves to read the development notes, I decided to build an emulator myself. I like to take things slow, so I opted to emulate one of the earliest processors - the 1974's Intel 8080.
<img title="The 8080-Processor" alt="i8080" src="https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fhackaday.com%2Fwp-content%2Fuploads%2F2019%2F06%2F8080-sbc-featured.jpg&f=1&nofb=1&ipt=cf315f3913abb46203c8d458013d9b7358435e5b7176642dd186d4fa17bbf176&ipo=images">
## On the Philosophy of Processors
I finally understand how CISC processors work, I've played Turing Complete and built 2 RISC processors in the game and also one in my computer architecture class, but I've never really imagined how CISC-commands look like. It's a different philosophy, though to be honest I still prefer the RISC-architecture even if the machine code turns out to be longer, because beauty is in simplicity and elegance.
## Graphics
This was the most painful thing to implement, as the framebuffer is saved as a bitmap that also needs to be rotated, it took me many tries to get the game display working.
<img title="The 8080-Processor" alt="i8080" src="https://media.discordapp.net/attachments/823874645950201866/1198017748475846676/Attemp3.png?ex=65bd5ff9&is=65aaeaf9&hm=781663486f298df8a593f6938629379be9fb9765d5e518609f34332313057f09&=&format=webp&quality=lossless">
<img title="The 8080-Processor" alt="i8080" src="https://media.discordapp.net/attachments/823874645950201866/1198017748731695215/1fw1cd4tdzcc1.webp?ex=65bd5ff9&is=65aaeaf9&hm=24d5765dd72a94183d95877358568ca4f7515d17b498f85634ca3afeac78f6af&=&format=webp">
<img title="The 8080-Processor" alt="i8080" src="https://media.discordapp.net/attachments/823874645950201866/1198017749105004685/image.png?ex=65bd5ff9&is=65aaeaf9&hm=d9aab03a39cc4dacacfadcd7bf0ebef4d0ebe529f9789c99dc6921e830f9531e&=&format=webp&quality=lossless">
## Current state
- [x] Disassembler
- [x] Understanding the i8080 machine code
- [x] Emulating the i8080
- [x] I/O-functionality
-------diverging from the guide--------
- [x] Graphical display
- [ ] Done :D