Previous Post

Coin-Op Collection Presents: Zero Wing (Toaplan V1) / Analogue Pocket Release

Next Post
Coin-Op Collection Presents: Zero Wing (Toaplan V1) / Analogue Pocket Release
1 / 2
DESCRIPTION

Before we begin today’s post, I would like to inform readers with photosensitive epilepsy that footage of Zero Wing should be avoided, as the game contains frequent red flashing whenever an enemy is destroyed.I've made significant progress over the past few weeks. Apologies for the delay; I wanted to get everything in order before moving forward with the Toaplan V1 platform. Our next entry is Zero Wing, and with it comes several improvements and new features.This post won’t cover technical details like the first entry, Demon's World; I’ll provide a full overview of the architectural changes when I release Truxton next week. However, I will cover the new features that have been added as of today's release.

Toaplan V1 Updates:

The first change is with OPL2 playback. I've created tooling to implement audio filters based on the hardware we're targeting on FPGA; I had talked about doing this in previous posts. In the future, I plan on expanding this system to the K3 framework to support generic filtering options in conjunction with hardware-accurate filter models.

For the Toaplan V1 platform, I've implemented the Texas Instruments LM358 dual op-amp stage as a dedicated LM358N filter module, modeling the same high-pass and low-pass behavior found on the original boards. Below is the example from the last release, when we switched from jtopl2 to the opl2_fpga module by Greg Taylor.

The high-pass filter is IIR-based (Infinite Impulse Response). It removes DC coupling noise and gently trims the extreme sub-bass from the YM3014 DAC output so the mix tightens up instead of getting muddy.The low-pass filter is FIR-based (Finite Impulse Response). It smooths the DAC’s stair-step waveform and reduces the harshness from high-frequency noise that does not belong in the top of the audio band, cutting out the thin, brittle edge that digital playback can introduce. Below is an example of LM358N filter module. It's enabled by default, but the end user can disable it.

Next is our new autofire module. I’ve designed a version for the Analogue Pocket and another for MiSTer, each built around the same core timing logic but tailored to their respective input systems allowing per-button autofire, VBL-synchronized timing, and consistent firing behavior across both platforms. Below is an example of the Pocket's autofire module in action.

The autofire module uses VBL-locked rates based on each game’s vertical refresh. Toaplan V1 titles run at either 57.613 Hz or 55.612 Hz, giving autofire speeds that range from roughly 28 Hz down to 11 Hz depending on the mode, or about 36 ms to 90 ms per shot.Due to menu limitations, autofire on the Analogue Pocket is currently limited to the shot button only, while the MiSTer version offers more flexibility. I plan to expand this feature in the future for both devices. The video below showcases additional options for the MiSTer module.

I won’t go into detail about core-specific options, but I will cover the Pocket since I’ve made some changes to support additional menu entries. The only major change is service menu access. On MiSTer this is normally a DIP entry in the OSD, but on the Pocket you can trigger it by pressing Coin and Button 1 at the same time. Do not hold the buttons, as that is also how you exit the service menu in Toaplan V1 games.Removing the DIP entry from the Pocket OSD allowed me to add the jumper section, which controls the region settings. You can now toggle regions as you like. The OSD entries reflect the primary release version, but all variants remain selectable through the game-specific entries on the platform.This change was necessary for titles like Truxton, where the Japanese version is noticeably more difficult. While not always the case, that tends to be the general rule for Toaplan games. Below is a video covering service menu access, the in-game options for Zero Wing, and region switching with the territory jumpers.

If you are epileptic, disable the red flash in Zero Wing.

Other Updates:

While my primary focus has been the Toaplan V1 platform, I’ve been working on several projects over the past month. Over this past year, we’ve had several big releases, some of which still aren’t emulated correctly anywhere else.As a team, we take great pride in everything we do and have strived to ensure our releases are the best they can be. If something doesn’t meet our standards, whether it's a Patreon post or FPGA core we won’t release it until those standards are met.That being said, several cores are being ported to K3 now, and any outstanding issues that need to be resolved will be. We’ll make sure everything gets addressed as quickly as the workload allows. Since the final version of K3 has only been finished for about six weeks, we’re still refining and stabilizing our development process around the new platform.Pramod has spent the past month working on Midway, and all his hard work has paid off. He recently finished a new synchronous PSRAM controller capable of variable latency and high-speed data transfer.It functions similarly to the SDRAM controller on the Analogue Pocket, which runs at 128 MHz with a CAS2 (Column Address Strobe) configuration, and his design also operates stably at 128 MHz. Unlike SDRAM, PSRAM does not use CAS timing; all timing behavior is handled internally according to the device’s specifications.In short, NARC no longer runs with a framebuffer and is now driven directly from raw video output, with all related issues resolved. I've attached a few videos of the core highlighting attract mode and the subway scene, both suffered due to memory constraints.

Pramod is currently working on the Y-Unit refactor, and we plan to focus on that over the weekend. I've been preparing for the remaining Toaplan V2 titles but will shift to Midway and give Pramod a hand with audio mixing and filtering, video cropping, and other remaining tasks for the Z-Unit and Y-Unit platforms.

It will be another week or so before NBA Jam is ready for release. TLDR; not only is T-Unit possible, but Wolf Unit is as well. Sound for the remaining T-Unit title and Wolf Unit will take more time, as we need to implement the ADSP-2105.Another project coming to a close is the Twin Cobra platform. Both Twin Cobra and Flying Shark are being prepped for release on the Pocket and MiSTer platforms. It will take me another week or so to wrap things up, I need to stabilize the Pocket version.

I've finished the missing pieces corresponding to GFX by adding the necessary logic required to flip tiles via the Toaplan GLX-01 custom, enabling flip and cocktail support. I've also reduced the number of cycles for both tiles (Toaplan GLX-01, with discrete TTL logic) and sprites (Toaplan SCU, Toaplan GLX-02) in the GFX pipeline.

For tiles, I optimized the state machine. We calculate the tile address immediately when its data is valid from the tile attribute RAM. This saves one clock cycle per tile fetch, totaling 120 cycles. For sprites, I reduce the count to the next scanline out in the line buffer instead of reading all 512 that are capable on screen. This resolved screen tearing on objects when scenes would be busy.

I've implemented TMS32010 banking and write support via the Toaplan GXC-01, GXC-02, GXC-03 or GXC-04 depending on whichever title you are running from the Twin Cobra hardware. This was required to add support for Flying Shark and its regional variants.

My next target is to finalize Technos-16, I have done extensive work to it throughout the year, expect to see this in December. I just wanted to give a brief update on where we are at. All of the work done on Toaplan will lead to the requested title, Grind Stormer / V-V. We'll talk about other unfinished / unreleased projects and updates to existing arcade platforms in the next post. I plan to release something early in the week due to the holiday.Today's release has been pushed to the respective updaters, the files are also available in their respective GitHub repository. If you thought this post was technical, wait until I go over the new Toaplan V1 architecture and publish updated code "hold onto your butts...". I hope everyone enjoys the holiday and has a Happy Thanksgiving, as always thank you for your continued support!Disclaimer: All product names, trademarks, and registered trademarks mentioned are the property of their respective owners. "Analogue", "Analogue Pocket", "OpenFPGA", "MiSTer", "MiSTerFPGA", "Toaplan", "Midway" and all derivative works are trademarks, registered trademarks, or copyrighted materials of their respective holders. Use of these names does not imply endorsement or association with this post. All rights reserved to their respective owners. This post is for educational and research purposes only.

Coin-Op Collection PATREON 2 favs
VIEWS1
FILES2 files
POSTEDNov 21, 2025
ARCHIVEDNov 21, 2025