Previous Post

Coin-Op Collection Presents: Air Gallet (Cave 68000)

Next Post
Coin-Op Collection Presents: Air Gallet (Cave 68000)
1 / 22
DESCRIPTION

Our next title for the Cave 68000 platform is Air Gallet, a straightforward vertical shooter developed by the game studio Gazelle Co., Ltd. This was their second and final title, following Pretty Soldier Sailor Moon released in 1995.The core development team behind Air Gallet consisted of Tatsuya Uemura (Director), Junya "Joker Jun" Inoue (Game Designer/Graphic Designer), Mikio Yamaguchi (Graphic Designer), Kaneyo Ohira (Graphic Designer), and Yoshitatsu Sakai (Music Composer).Air Gallet is impressive from a graphical standpoint, featuring unique layering techniques and detailed sprite work, but it lacks innovation in gameplay mechanics, which lean heavily on Dogyuun and Batsugun, previous titles developed by the team. That said, the game is quite fun overall and has a decent soundtrack.

Development Updates:

Below, I’ll cover recent updates across the Cave 68000 platform and provide an update to future projects we're working on. If you're just interested in updating previous releases and installing Air Gallet, jump to the installation section.

Support has been added for generating an 8 MHz pixel clock enable. Mazinger Z, Hotdog Storm, and Metamoqester require it. While most titles use a 7 MHz pixel (dot) clock, the 8 MHz mode ensures proper CRT timings for the three games that render at 384×240 visible resolution.This update required modifying the PLL, doubling the video clock from 28 MHz to 56 MHz, and routing new signals to the appropriate modules. Implementing these changes was non-trivial given the structure of the existing architecture. Cave 68000 cores now operate with a 32 MHz system clock, a 56 MHz video clock, and a 96 MHz SDRAM clock to cover the three hardware variants.Along with the 8MHz pixel clock update, Mazinger Z now uses the rewritten audio pipeline used in Pretty Soldier Sailor Moon, our OKI MSM6295 (x6295), and the parametric audio mixer module from Koin3 (K3).I've attached before and after examples from the sound test menu in Mazinger Z, along with illustrative visuals (shown below). The FM/PSG mix is shown in both waveform and spectrogram form, and a separate spectrogram of the PCM output is included to highlight changes in fidelity.The spectral balance with the new parametric audio mixer results in a thicker, warmer, and more noise-shaped mix while retaining the same Q4.4 format, with a noticeably stronger low and mid-frequency presence during FM and PSG playback from the Yamaha YM2203.The illustration below is a comparison between PCM playback from the previous OKI MSM6295 implementation, which used a 9 kHz high-pass filter, and our new x6295 core.In the 2025-03-21 release of Mazinger Z, high-frequency detail was limited above 9 kHz due to this filtering. Prior to implementing a 9 kHz high-pass filter on the initial release, the default filter rolled off even earlier, around 6 kHz, further reducing clarity in voice samples and limiting high-frequency output. This was a contributing factor in developing our own OKI MSM6295 implementation.With x6295, high frequencies roll off around 15 kHz, preserving harmonics and keeping a clean separation between tones. This results in a smoother frequency response that retains clarity, produces a fuller sound, and is more accurate to PCM output prior to resistor filtering on an actual PCB.The main focus was getting digital playback right. Since we're using an FPGA and a modern DAC, the goal was to output clean, accurate PCM audio matching the original signal before analog filtering.In the future, I plan to model the analog filtering applied on hardware to replicate the behavior of discrete components (resistors, capacitors, op-amps, etc.) found in the audio output stage. Filtering audio playback is subjective, so analog filtering will be an optional feature in K3 once complete. Next is our new pause module. It’s an overlay that activates when the game is paused, displaying the Coin-Op Collection logo with rotation, zoom, and blending effects. A frame counter drives the animation, controlling both the rotation angle and zoom phase.The pause module also supports per-game orientation settings, to include in-game dip switch settings. The module works on analog and digital video outputs. We initially planned to release this with Pretty Soldier Sailor Moon, but analog video support was missing due to how the framebuffer works.Since the Cave 68000 core currently uses a full framebuffer stored in DDR3 memory, the pause module needed to be integrated into the RGB output path. This required muxing the active framebuffer and the overlay on a per-pixel basis.When written back to DDR3, the output must be in BGR format, with framebuffer addressing adjusted for rotation, zoom, and screen orientation. Below is an example for the active resolutions (384x240/320x240) with applied scaling from driven from the ASCAL. Scaling is based on the active resolution, this doesn't apply to analog video output when activating the logo overlay. Now let's move onto Air Gallet. Modifying the Cave 68000 core to support this game wasn't difficult overall, but we ran into issues getting past the post-check screen due to its unusual interrupt setup defined by the program ROM.Post-checks also perform an additional memory check that appear to act as a security measure, it tests four additional bytes even though the memory isn't used elsewhere.Pramod reviewed the assembly code and created a ROM patches to skip the memory checks and bypass the IRQ call during post-checks. After finding the necessary values, we were in business.The next task was graphics. Tile layers and sprites in Air Gallet function the same way as in Pretty Soldier Sailor Moon, so it was mostly a matter of setting the correct values for sprite and layer positioning, along with enabling 6bpp formatting for layer 2 and reworking the script originally used for Sailor Moon resolved the transparency issues. After figuring out how the interrupt scheme worked, we ran into a strange quirk during the stage 1 intro. Pressing a button speeds up the framerate, but also caused sprite flicker.This is a perfect example of the unique layering techniques used between tiles and sprites mentioned above as certain objects overlay in the cut scene causing flickering when the timing shifts by pressing a button.We traced the issue to how interrupts are handled during the framebuffer call. Air Gallet uses the same framebuffer setup as Mazinger Z, but with the calls swapped. This was one of the first approaches I tried to fix the issue, but it caused sprites to not display as I didn't realize the framebuffer was swapped. Pramod stepped in and figured out the call is inverted. Since this isn’t required for emulation, it wasn’t documented, which made it a bit of a challenge to track down. We spent July bringing up the remaining titles in the Cave 68000 lineup. Oni: The Ninja Master, Power Instinct 2, and Gogetsuji Legends are now playable. Pramod briefly covered these titles in a recent development update.Unfortunately, these three games still have minor issues that won’t be addressed until we rework the remainder of the core for the Analogue Pocket and MiSTer platforms. I’ll go into more detail in upcoming releases. This month, we're shifting gears and are going back to development on Konami and Toaplan, while focusing on Analogue Pocket framework development. I haven’t said much about Toaplan lately, but I wanted to give a quick update.Pramod recently completed validation of the cycle-accurate NEC V25 (xv25) MCU required for the remaining Toaplan 2 games, restructured the GP9001 to prepare for dual support, and began work on V-V (Grind Stormer). I’ve been working on a Yamaha YM3812 Verilog implementation over the past month to address lingering audio issues in older Toaplan titles. Our new implementation, x3812, is based on low-level emulation using die shot analysis and reverse engineering done by nuked-md.

Installation:

Setting up Air Gallet is similar to Mazinger Z and Sailor Moon and requires a merged Layer 2 ROM. If you are installing Mazinger Z or Sailor Moon from today's update for the first time check the installation instructions linked above.Ensure you have Python 3 installed, then copy the generate_layer2.bat, layer2_to_8bpp, bp962a.u57, and bp962a.u65 into the directory:

After this, double click the generate_layer2.bat or run it from cmd line and you'll see the following message:Add the generated layer2.dd file to a directory named "agalletd", then zip the contents or drag and drop them into a MAME merged set.

Core Options:

I've added the test switch to game settings, this inserts a credit and is necessary to exit the service menu upcoming releases.Here is a list of available cheats for Air Gallet:The service menu is accessed through the EEPROM. To save your changes, click "Save settings".

Update (2025/08/07):

I’ve adjusted the seed for Air Gallet and Sailor Moon. This resolves a lingering ASCAL issue where video_mode/vsync_adjust settings failed to sync with certain monitors or reported incorrect frequencies (shown below).Mazinger Z does not have this issue, and it shares the same video pipeline and standard framework template with Air Gallet and Sailor Moon, so it took some time to find a solution.I resolved the problem by running a seed sweep in design space explorer. With seed 8, there are no monitor sync issues, and the video_mode/vsync_adjust settings are reported correctly in the OSD (shown below).

Disclaimer: All product names, trademarks, and registered trademarks mentioned are the property of their respective owners. "Analogue", "Analogue Pocket", "MiSTerFPGA," "MiSTer", "Air Gallet", "Mazinger Z", "Pretty Soldier Sailor Moon", "Banpresto", "Cave", "Gazelle", "Toaplan", "Toei Animation," 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
FILES22 files
POSTEDAug 5, 2025
ARCHIVEDAug 5, 2025