Inspiration

it all started the Fall semester 2023

at my university in operating systems. we finished the class a week earlier than emticipated so the professor decided to lecture us on

Computer architecture due to 95% of the class having a bad experience with computer architecture. due to having a horrible professor.

anyway I enjoyed this professors lecture very much. so much I decided to ask him for his computer architecture assignments. I heard from others they have you build an Emulator for a generic architecture. I finished their assignments in about a month and during this time I was reading up on how to-do a NES emulator.

it seemed pretty simple compared to most console emulators since it used a small instruction set so I got to work. I made tetroid NES.

I always wanted todo a NES game in the past. I just never had motivation to sit through and do it. so I decided to use this to make a NES game I made pong because its the most feasible project todo in 24 hours

What it does

its pong on the NES

it can have 2 controllers if you happen to have the right dongles. but you can play this on 2 controlers

the keyboard controls are however follows

arrow keys to move paddle 1

W and S to move the paddle 2 (depending on the emulator this is unbinded)

there is no score. so whoever hits out of bounds loses and the player to cause this wins

How we built it

1st download CL65 assembler

https://cc65.github.io/doc/cl65.html

next either run the provided bash script or simply do

mkdir -p build # this is OS specific. but create a directory called build 
cl65  --target nes ./src/main.s -o ./build/build.nes # this actually builds the project. non os specific if you have cl65 set up correctly you should be good 

next download fcuex nes emulator. or if you can burn this onto a NES cartridge go ahead

https://fceux.com/web/download.html

load

./build/build.nes into fcuex

and have fun

Challenges we ran into

the constraints of the device and 6502 assembly

I only have 65kb of space to work with most of it already allocated to other things

which for perspective its 1 JPEG

Accomplishments that we're proud of

this entire project as a whole. I am proud I made it this far so far. I thought I would tap out and make some random NES dev tool or something but here I am now.

What we learned

my intent of this project was to go in and come out. knowing the NES from both a dev perspective and an engineer perspective now I think I achieved that. I am happy

What's next for Pong NES

  • collisions
  • title screen
  • sound
  • score

I low-key want to replace this with my final project for another class we will see

Built With

  • 6502-assembly
Share this project:

Updates