Academic Projects

Network Design

Final Project:        [Intro Doc]  [Network Architecture]  [Download] [Video]
Grade :                    >100% (extra credit)
Extra:                       Awarded "Best Game" by classroom poll.            

For my Network Design class, our cumulative project involved creating a game with functional socket-level networking. The primary requirements were to build a game using an efficient networking protocol using no external protocols or network packages that were above the socket level. 

We decided to code a game similar to the Helmsman in the board game "Space Cadets". For our engine and networking protocols, we used Game Maker Studio. 
After showcasing our game to the rest of the class, we were given the title of "Best Game" from a classroom poll -- earning us a lot of extra credit.

For my part in the group, I coded over half the game functionality and network design. I designed the engine, sprites, and overall logic. In addition, I also filmed and edited the entire video, an extra feature of our presentation that earned us a lot of the votes.

Game Design and Analysis

Final Project:         [Design Doc]  [Download]
Grade:                       In process of grading (SUMMER 2015)
Working Demo of Coup

For our final project in CSS 490, we were tasked to "convert" a board game into a video game. We decided to convert the game Coup into a video game using Game Maker Studio.

As this was a DESIGN class and not a DEVELOPMENT class, we were only expected to talk about what we would change in our conversion. However, we went above expected and created a working demo with semi-functional networking.

For my part in the group, I was the Project Manager. I also spearheaded the documents, designed and implemented the game's core functionality, and more!

Hardware and Computer Organization

Final Project:         [Document]  [Code]
Grade:                       95/100

For our final project in CSS 422, we were tasked to develop a disassembler (also known as an inverse assembler) that converts a set of instructions in memory and translate it back into 68K assembly language.
Example output

Although not all 68K instructions and addressing modes are supported, unknown instructions must be properly handled by printing out to the screen “XXXX DATA $YYYY”. Where XXXX is the address of the unknown instruction and YYYY is the hex for the opcode word. Currently, our project only supports MOVE, MOVEA, MOVEM, ADD, ADDA, SUB, SUBQ, MULS, DIVS, LEA, OR, ORI, NEG, EOR, LSR, LSL, ASR, ASL, ROL, ROR, BCLR, CMP, CMPI, Bcc (BCS, BGE, BLT, BVC) , BRA, JSR, and RTS. 

For my part in the group, I coded a large portion of identifying OPCodes and directing the code back into the main loop.