C++ is the main technology I have been learning for the NES emulation project. Before this school term, I had only used C++ a handful of times for niche scenarios, such as computer graphics. So, I always felt that C++ was a daunting language to learn and use. However, after several weeks of development, I’m starting to really appreciate this famous programming language. I feel like I have a lot of low-level control that is perfect for a project such as this, such as assembly, but it is very similar in syntax to newer high-level languages. The main difference I had to get used to was how you have to write your own Makefile for the compiler to know how to link and compile your code correctly. I am very used to writing Python scripts and pressing play.
Another technology I have been slowly learning is a C++ GUI library called Dear ImGui. This library is very lightweight and easy to implement in existing projects. I am primarily using this library to display the graphical output of our emulator and also as a debugging tool for visually seeing simulated hardware components update in real-time, such as the CPU registers. This is useful and has saved me some development time.
GitHub (and git) are the last main tools used in our project. I have used different version control software for many years, so I feel confident in using this tool to maintain our codebase and work on our project asynchronously.
Overall, my favorite technology I have been using on this project is C++. I think it will be a very useful language for future projects, as it seems most tech stacks have started with some version of C as its base.