
JA Achtung Full is the full two-player Achtung, die Kurve! engine for a Tiny Tapeout
1x2 footprint. Each player steers a continuously rotating head, leaves a
trail with periodic passable gaps, and loses on contact with a wall, either
trail, or the other head.
The chip stores its 640×480 framebuffer in an external QSPI PSRAM. Four 2-bit pixels are packed into each byte and the display streamer fetches 8-byte bursts (32 pixels) for VGA. During vertical blanking, the game engine uses the same PSRAM port for collision reads and read-modify-write trail updates.
Player positions use Q10.6 fixed-point coordinates and a compact quarter-wave lookup implements 64 movement directions. The angle phase registers each move's vector before address and collision calculation. A held boost button can add one extra move in a frame. Diagonal moves fill an adjacent side pixel so the trail remains continuous.
Both SNES-style controllers share the Gamepad PMOD serial interface. The lobby lets each player choose a distinct color before Start begins the round; disconnected all-ones controller data is ignored.
rst_n low before powering the PSRAM. After PSRAM VDD is stable,
keep rst_n low for at least 150 us. During this hold the chip keeps the
external PSRAM clock low, all chip-select outputs high, and all four SIO lines
actively low, as required by the APS6404L power-up specification. The
50 MHz system clock may already be running.The automated suite in Game Simulation/tests/game_2x1/ compares 23
full-resolution and 24 coarse-resolution game traces with an independent
Python framebuffer model, captures a true 640×480 VGA frame through QSPI, and
drives the complete gamepad/QSPI/arbitration path.
| # | Input | Output | Bidirectional |
|---|---|---|---|
| 0 | VGA R1 | Flash CS# (unused, high) | |
| 1 | VGA G1 | QSPI PSRAM IO0 | |
| 2 | VGA B1 | QSPI PSRAM IO1 | |
| 3 | VGA VSync | QSPI PSRAM SCK | |
| 4 | Gamepad PMOD latch | VGA R0 | QSPI PSRAM IO2 |
| 5 | Gamepad PMOD clock | VGA G0 | QSPI PSRAM IO3 |
| 6 | Gamepad PMOD data | VGA B0 | QSPI PSRAM CS# |
| 7 | VGA HSync | PSRAM B CS# (unused, high) |