Team Report 4/25

Project Progress Summary

This week, we are in the final wrap-up phase. We have achieved all our primary technical milestones, and has expanded our cartridge compatibility by finalizing the support for the memory mapper. Now, we have Contra running correctly in both single-player and remote multiplyer modes.

We have implemented game state hashing, which allows us to verify the correctness of our deterministic lockstep protocol. By comparing hashes between two independent boards during extended play sessions, we confirmed that the systems remained in perfect synchronization even during network-induced stalls. Furthermore, we have completed the final project presentation last week, and are working on the final demo video, final poster, and final report.

Risks & Management

There are no more development risks.

Design Changes

There have been no changes to the system design.

Schedule

We are on schedule, and our product is ready for final demo. We will work on our remaining tasks, which are the deliverables. We will work on the final demo video, final demo poster, and final report.

Michael’s Status Report for 4/25

For the past week, I have finalized the development of the network synchronized pixel pipeline. The network updates now do not cause any mid frame visual tearing or logic desync between the local and remote boards. I have also shifted my focus from the product to our project deliverables. Over the last weekend, I worked on the final presentation slides. And over the week I also worked on the final demo poster.

I am currently on schedule. I will finish the final demo poster next week, and prepare for the final demo day.

Bert’s status report 4/25

This week, I focused on completing final system integration and wrapping up the project. I finalized the memory mapper implementation and successfully integrated it with the rest of the system, ensuring correct interaction across CPU, PPU, and APU components. I validated this integration by testing multiple mapper configurations, including Mapper1 and Mapper2 games, confirming correct functionality and improved compatibility across different cartridges. In parallel, I began drafting the final report, documenting the system architecture, design decisions, and validation results.

As this is the final wrap-up phase, the remaining effort will be dedicated to completing the final report and ensuring all aspects of the system are clearly documented and ready for submission.

Jacob’s Status Report for 4/25

Added mapper 1, 2, 3 support. Contra is now running fine in both single-player and remote multiplayer modes. Added game state hashing to confirm the syncing status when running in remote multiplayer. Game state hash matched for an extended period of play, even during frequent game stalls, thereby proving the correctness of the lockstep protocol implementation.

I am currently on schedule. In the upcoming week, I will finalize the remote multiplayer testing and complete the video recording and editing.

Team Report 4/18

Project Progress Summary

In the past 2 weeks, we have successfully completed our primary project goal. We have finished implementing the network synchronized, cycle accurate remote multiplayer. We have achieved stable synchronization between two independent Arty Z7-20 boards. Through optimized controller input buffering, we have reduced extra latency to a negligible 2 frames, so there is no observed game stalls over a direct Ethernet connection.

On the hardware side, we finalized the UDP synchronization layer and implemented VBlank-safe input latching to prevent visual desync. We are working on the APU to tune it towards full functional correctness. We also began working on the final presentation and demo video.

Risks & Management

There is no more risks remaining in the implementation of our project. The remaining tasks are more extensive testings, and preparing for the final report and demo.

Design Changes

There are no major changes to the system design.

Schedule Update

The project remains on schedule. We have completed all core technical implementations of the project. We are focusing on the final testing and final report/demo.

Michael’s Status Report for 4/18

Over the past two weeks, my work has focused on transitioning from standalone rendering to a fully network-synchronized pixel pipeline. I collaborated with Jacob to integrate the UDP synchronization layer. I finalized the PPU frame-gating logic. This module allows the rendering pipeline to stall gracefully if the delay buffer is empty, preserving state determinism until the next input packet arrives. To support this, I refined the sprite-zero hit detection to remain stable during these momentary network-induced stalls, preventing the status bar jitter we observed in early integration tests.

This week, I conducted some correctness and stress testing to verify our CPU and PPU implementation. I also began drafting the final presentation slides, specifically focusing on the PPU rendering validation.

I am currently on schedule. For the next week, we will complete the final project presentation slides and work on the final demo video. We will also start to draft the poster and final report.

Bert 4/18 Status report

This week, I focused on finalizing key system components and preparing the project for demonstration. I completed further tuning and refinement of the APU implementation, improving functional correctness and stability across remaining edge cases. In parallel, I finished the implementation of the memory mapper, enabling expanded cartridge support and improving overall system compatibility. With these core components in place, I shifted attention toward presentation readiness, ensuring the system is stable and demonstrable on the FPGA platform.

Looking ahead to next week, I will focus on finalizing the overall system integration, including completing the external design aspects and conducting comprehensive end-to-end testing to validate functionality and robustness before project completion.

Jacob’s Status Report for 4/18

Completed the remote multiplayer feature. The games running on separate boards are correctly syncing. Extra latency is negligible with the controller input wait time configured to 2 frames, and no game stall is seen with a direct Ethernet connection. I’ve also conducted additional latency testing.

I am currently on schedule. Next week, I’ll proceed with more testing on remote multiplayer’s resistance to network latency and jitter.

 

Jacob’s Status Report for 4/11

Integrated the APU with the CPU and PPU. Successfully output sound on the Arty while the game is playing. Successfully integrated the frame-gating logic for the remote multiplayer feature.

I am currently on schedule. Next week, I’ll finalize the remote multiplayer and start testing.

Team Report 4/4

Project Progress Summary

In this week, we have successfully finished the Interim Demo. We demonstrated the SyncNES system running both Donkey Kong and Super Mario Bros in real-time on the Arty Z7-20 FPGA board. The system successfully managed single-player gameplay with full controller input and visual output

Technically, we have achieved stable PPU mirroring, which allowed for correct rendering of side-scrolling titles. We also completed a significant refactor of the CPU and PPU codebases to ensure long-term timing stability. On the networking front, we worked on the UDP communication implementation and tested it using a Raspberry Pi 5 to simulate various network conditions, including latency and jitter spikes.

Risk & Management

The most significant risk currently is the integration of the UDP protocol into the RTL for active frame gating. While standalone network tests were successful, ensuring the hardware stalls exactly when a network packet is delayed is a high-precision task. To mitigate this, if frame gating introduces instability in the CPU/PPU interface, we will revert to a fixed-delay buffer of 5 frames.

Design Changes

There have been no changes to the existing system design.

Schedule

The project remains on schedule. We have met our Interim Demo milestone, and we are entering the final phase of development, which is the remote multiplayer functionality.