Categories
Perosnal Blog

Blog Post #3, CS 462

Hello everyone! I chose the NES Emulator project for a couple of reasons. I know that my experience coding in languages in C++ was lacking and I wanted to improve on it. I also have a passion for video games and wanted to code something related to what I found interesting! While I have learned a lot has to go into developing an emulator, I am still happy with the progress my team has made with the emulator thus far. We have taken our time to ensure debugging is ready!

I have learned that when working on something this large with a team, there is a lot of required flexibility for each team member. No team member is made equal, and no team member has the same amount of free time or capability to work on the project. I was fortunate to have team members that all contributed, but I noticed that some were able to contribute more or less based on their other time commitments such as work and other courses.

I also learned a great deal about GitHub when working with a team. Throughout my computer science years, I found that there were not many ways to learn version control, and this was a great way to do so.

A “life hack” for handling work, school, and project work would certainly be time management and planning. I find that without regular due dates, a lot of school work would just be left to the last minute. Thankfully, I have team members that remind each other of code that should be done and we had an active kanban board using Github Projects.

If I could start over, I would have definitely wanted to help plan out the kanban board more at the beginning, because afterwards, the list of tasks to be done was quite large. This left us with fewer opportunities to fill it up after, but I am glad the list of completed tasks has increased so much since the beginning of the term.

Categories
Perosnal Blog

Blog Post #2, CS 462

My favorite technology in this project is CLion and C++ due to it being the technology I first started on when introduced to computer science years ago. It has memory control that makes it possible for our NES emulator to function.

While simple and easy to use, Github was another great technology that I had to spend a little time learning due to the small amount of time I have used it in the past. Managing multiple branches at once can be quite difficult and challenging when it comes to merging conflicts, but thankfully, my team and I are able to resolve them quickly.

One of the aspects I had a challenge learning was 6502 CPU opcodes and implementing them. I had never done anything similar to opcodes so it took me a long time to learn at first, but I am glad I have my team to help and review with.

If I could, I would change my technology for CPU testing as my tests can take a long time to run on my local machine. However, perhaps if I configure my setup and consult my team, there may be a better solution for the lengthy tests. Thankfully, our CPU implementation is done, so I can focus on testing the PPU instead.

CLion is my development environment of choice now that I have been introduced to it. It is a powerful environment that is simple to use and supports other technologies such as version control and GitHub. That makes it perfect for our project. Developing an NES emulator has been challenging, but I have my team to thank for the progress we have made so far. They have really opened my eyes when it comes to working on large codebase projects as a team.

Categories
Perosnal Blog

Blog Post #1, CS 462

For my blog post, I chose to use examples from Chapter 1 of Robert Martin’s book called Clean Code: A Handbook of Agile Software Craftsmanship 1st Edition. While the book is from 2008, It has applicable concepts and tips for the modern software developer.

One of the key aspects of the chapter lies in creating tests for your own code to test its functionality. The chapter describes how it is necessary for clean code, and this is noted on page 9 from Dave Thomas. This is due to having a standard to work along with, known by the team. I want to be able to create such tests for my development team as so far, other team members have been assisting in that area. While I am not as knowledgeable when it comes to unit testing, I think it plays an important role in maintaining standard, functional code. This idea is applicable to the NES emulator that my team is working on. Here is a possible example that could be implemented to test an opcode:

def test_example_opcode():
cpu = CPU()
cpu.Accumulator = 0x10
cpu.memory.write(0x200, 0x69) #Adc opcode
cpu.memory.write(0x201, 0x05) #operand
cpu.execute_instruction()
assert cpu.A == 0x15, “Expected 0x15”
assert not cpu.C, “Carry flag should not be set”#otherwise

If unit testing is already complete, there is also the possibility of testing using test ROM files to accurately measure the performance of the NES emulator.

What I do want to avoid doing is ignoring problems in the Codebase, such as code duplication. According to Chapter 1. of Robert Martin’s Clean Code: A Handbook of Agile Software Craftsmanship, ignoring a small issue such as code duplication seems fine but it could signal something is not being efficient in the way the system may have been designed. This is especially true for duplicate opcode implementation or even address handling for memory in the emulator. Avoiding duplication helps reduce complexity and improve readability as well.

Categories
Perosnal Blog

Blog Post #3

So far, our team has successfully completed the NES implementation we wanted to complete before the end of the term. This was only possible due to the knowledge of other team members about building large projects using GitHub. While I have used GitHub, I must admit that I struggled initially with setting up the work environment.

Implementing opcodes was complicated, but thanks to my teammate’s guidance, I could execute some opcodes for our implementation of the NES CPU. While we still have a long way to go, this will help with further implementation next term. Because of this course, I have started using Clion by JetBrains as a new IDE. Due to its simple UI but expansive functionality, I have found it useful in other courses as well.

I have really enjoyed participating in the discussions related to this course. It provided some planning that helped when working on the design document. I also believe that a leader in each team is essential to get the ball rolling. A simple go-getter attitude would benefit those who take this course.

While I have been very busy this term with work and other commitments, successful time management can reduce feelings of overwhelm. Another tip is that it can also reduce procrastination because it is easy to put off tasks when you feel you are juggling too much.

Categories
Perosnal Blog

Blog Post #2

Our project will be based on C++, which is a change from the web-based development many of us have been accustomed to depending on our course loads. This has been a learning curve, but our code-reviewing process ensures we understand and raise each other to a working standard.

I hope that improving my communication with my team can provide more insight into my ideas and intentions for the project work!

Categories
Perosnal Blog

Blog Post #1

Hello Everyone! My name is Anthony Amador, and I am a student majoring in Computer Science. Currently, I am residing in Oregon similar to many other Oregon State University Students. While I have not lived here my entire life, I love it here!

I became interested in Computer Science in High School after deciding that welding class was not for me. While it was random that I picked an Intro to Computer Science course to replace it, I am glad it happened. I have made it this far into Computer Science through hard work, even with difficulties such as the Pandemic. Currently, I do factory electrical work, but I am interested in video games and riding motorcycles and love sci-fi movies like Dune and Alien Romulus.

I find the AR Arcade Games project and NES Emulator project to be quite exciting, as I am interested in video games. The AR Arcade Games project also allows for a lot of choice within the project itself, which I believe can help spark creativity.