Coin-Op Collection Presents: NMK16 (Thunder Dragon)
Today's beta release for the Analogue Pocket and MiSTerFPGA platforms is the next entry on the NMK16 platform. Thunder Dragon is a vertically scrolling shooter built on NMK's 16-bit custom hardware.
Task Force Harrier (1989)
US AAF Mustang (1990)
Vandyke (1990)
Bio-ship Paladin (1990)
Black Heart (1991)
Acrobat Mission (1991)
Thunder Dragon (1991)
Hacha Mecha Fighter (1991)
Super Dimension Fortress Macross (1992)
Koutetsu Yousai Strahl (1992)
Saboten Bombers (1992)
GunNail (1993)
Super Dimension Fortress Macross II (1993)
Thunder Dragon 2 (1993)
Bombjack Twin (1993)
Power Instinct (1993)
Rapid Hero (1994)
Released in 1991 by NMK and distributed by Tecmo, Thunder Dragon is the third release on the platform, following Super Dimension Fortress Macross and US AAF Mustang. This release supports the unprotected ROM variant, and stood up the NMK902 custom, the timing and interrupt chip the first two posts left for later.
This post covers a technical overview of Thunder Dragon for the NMK16 platform, the work the board required, and the game itself.
Licensing:
Thunder Dragon is distributed through the Coin-Op Collection licensing portal, which serves both MiSTerFPGA and Pocket from the same dashboard. Patrons need to register their device and generate a key before launching the core. Step-by-step instructions and the FAQ are available on the Help page.
The core is a beta release and carries the beta flag in the distribution database, so update_all does not fetch it unless you opt in. The option will be exposed in the update_all GUI in a future update; until then the flags are opted into from the downloader.ini file. Find the Coin-Op Collection section, or add it if it is not there, and set the filter so the beta flag is not excluded:
db_url = https://raw.githubusercontent.com/Coin-OpCollection/Distribution-MiSTerFPGA/db/db.json.zip
filter = [MiSTer] !coinop-collection-alpha
That pulls the public releases along with anything carrying the beta flag, Thunder Dragon included. Dropping the second term takes alpha cores as well:
[Coin-OpCollection/Distribution-MiSTerFPGA]db_url = https://raw.githubusercontent.com/Coin-OpCollection/Distribution-MiSTerFPGA/db/db.json.zip
filter = [MiSTer]
Overview:
Thunder Dragon runs on NMK's 68000-based hardware (PCB 91070), driven by a single Motorola MC68000 at 8 MHz. The audio system is the one introduced with Macross, an NMK004, a Toshiba TMP90C840 microcontroller running at 8 MHz, taking sound commands from the main CPU and driving a YM2203 (OPN) at 1.5 MHz for FM and PSG output along with two OKI M6295 ADPCM chips at 4 MHz, each with its own bank-switched sample ROM. Audio output is mono. This is the unprotected board, so there is no protection MCU and no graphics descrambler in the path, and the graphics ROMs are read directly.
The video system outputs 256x224 in a vertical orientation at 56.205 Hz. Graphics are handled by a set of NMK custom ICs, the NMK902 generating the interrupt and video timing chain, the NMK901 managing the sprite attribute table and its DMA, and two NMK903s latching and multiplexing the graphics data.
The display composites three layers from back to front, a scrolling 16x16 4bpp background tilemap, 16x16 4bpp sprites pulled from a DMA-buffered list, and a fixed 8x8 4bpp text layer on top for HUD elements. The palette holds 1024 entries split evenly across the background, sprites, and text layer, four bits per channel plus a shared intensity bit expanded to eight bits at output.
Development Challenges:
NMK902 - Timing and Interrupt Generator:
The NMK902 is the last of the NMK customs to be covered and the one that runs the frame. It has no CPU-accessible registers at all. A counter steps the vertical timing PROM one entry every two scanlines, walking 139 entries across the 278-line frame, and every event the 68000 sees comes out of those entries rather than from anything the program writes.
Each 8-bit word carries five things. Bit 7 is the interrupt trigger, firing on its rising edge, bits 6 through 4 are the interrupt level the 68000 is handed, bit 2 is VBLANK, bit 1 is VSYNC, and bit 0 triggers the sprite DMA. Decoding Thunder Dragon's own PROM gives the whole frame. VSYNC runs lines 8 through 13, active display starts at line 38 and covers 224 lines, raster interrupts fire at level 1 on lines 90 and 218, the level 4 interrupt fires at line 262 as vertical blank begins, and the sprite DMA fires at line 264.
That is also why the part is a PROM rather than a register set. Thunder Dragon raises two interrupt levels, IRQ1 for the raster and IRQ4 for vertical blank, and never raises IRQ2 at all, while Macross drives three levels at different lines out of the same silicon. The chip does not change between boards, the PROM does, so the core reads the timing out of the board's own part instead of carrying a table per game.
NMK-110 - Protection MCU (WIP):
Two genuine Thunder Dragon boards exist. The one released here is the unprotected revision dated 8th January 1992. The earlier board, dated 4th June 1991, carries an NMK-110, which is a Toshiba TMP91640 running at 4 MHz with 16 KB of internal ROM and 512 bytes of internal RAM, sitting across the whole of the 68000's address space with two of its ports as the handshake.
The platform already has a Toshiba MCU in x90840, the in-house TMP90C840 that stands up the NMK004 sound processor, but the TMP91640 is a different variant of the same TLCS-90 family with twice the internal ROM and twice the RAM, so that board needs the variant built before it will run. The additional sets will be released with wave 3 with Hacha Mecha Fighter as the NMK-113 with its own firmware, so one piece of work covers both protected titles on this platform.
x2203 - YM2203:
x2203, the in-house YM2203, has moved on since the first two NMK16 releases. It now carries the SSG-EG envelope modes and the chip's BUSY flag, neither of which was in place when Macross and Mustang went out.
Four bugs were also found bringing up other hardware and corrected against the YM2203C. Three sat in the SSG-EG envelope path, an alternating-mode direction latch that only updated when the attack did not re-trigger, a phase reset firing on every repeating mode rather than only the two sawtooth modes, and an attack onset on the inverted modes that reflected one sample too early.
The fourth was in Channel 3's special mode, where the three sub-operators take independent frequencies and the mapping from those registers to the operators in the FM algorithm was permuted incorrectly. All four live in x2203 itself, so every core using it carries the fix, this one included.
Core Options:
The MiSTer core includes video settings for aspect ratio, vertical scaling and cropping, scandoubler effects, and vertical positioning and sync adjustments. Thunder Dragon runs vertically, so a screen rotation toggle is included for HDMI displays. Horizontal positioning and sync adjustments are not available, as the board's horizontal timing is fixed by the 82S129 horizontal-timing PROM just as it is on hardware, and the refresh rate toggle is disabled for the same reason.
Audio settings provide separate OPN FM, OPN PSG, and two M6295 PCM toggles, each with its own volume control, covering the full sound section. Arcade dip switches are directly accessible from the OSD. Game settings include per-player auto-fire with adjustable rates, mapping options for Player 1 and Player 2, and a synced mapping mode that mirrors Player 1's layout to Player 2.
Cheats are accessible from the OSD. The set includes a stage select that places the player on any of the first seven stages, infinite credits, and per-player invincibility, infinite lives, infinite bombs, and maximum shot power, along with a per-player weapon select that locks the helicopter into its Vulcan, Fire, Multi-Way, or Missile armament.
The Pocket core provides auto-fire with per-button targeting and adjustable rates. Its cheat set is a single-player subset, stage select, invincibility, infinite bombs, maximum shot power, and weapon select. Arcade dip switches available on Pocket are Difficulty, Lives, and Demo Sounds.
The core supports one set, the 8th January 1992 board, for the reasons covered above.
History and Gameplay Information:
Thunder Dragon was developed by NMK and reached arcades in August 1991 in North America and September 1991 in Japan, distributed under license by Tecmo. The board this release runs is the later revision, dated 8th January 1992 on its title screen. The staff roll credits Yukio Tomonari as producer and Yosuke Ono as director, with Merry Tamio on game design, Ikezu Kenzi on scenario and graphics alongside Giant Ama, and a programmer credited only as Lieut. Col. Ore. Most of those are handles rather than names. The music is credited to Hide-Kaz, Kazunori Hideya, who also scored Super Dimension Fortress Macross for this platform.
The game is a vertically scrolling shooter for one or two players, flying an attack helicopter across eight stages. An eight-way stick handles movement with one button for the shot and one for bombs. Four weapons are collected during play, a spread machine gun (Vulcan), a high-firepower automatic cannon (Fire), a refraction laser (Multi-Way), and a multi-missile spread (Missile). Bombs, extra lives and brief invincibility drop as well, and collecting stars raises a score multiplier. Each stage closes on a boss, and clearing the eighth loops the game back through at a higher difficulty.
The game carried the working title Slash Metal during development, and tiles from it are still sitting in the ROM. NMK returned to it in 1993 with Thunder Dragon 2 on the same hardware family. Thunder Dragon itself stayed in arcades until 2021, when Hamster, which now holds NMK's catalog, released it through the Arcade Archives line on modern devices.
Updates:
Thunder Dragon is the third release on the NMK16 platform, and the rest of the library is behind it. Vandyke, Black Heart, and Acrobat Mission are apart of the first wave of releases for NMK16, each one reusing the audio and video work already in place and filling in the parts of the boards that differ from game to game.
The files are attached to this post, and update_all will carry the core once it syncs. Please allow the updater time to pick it up.
NMK16 Wave 1:
US AAF Mustang (1990)
Vandyke (1990)
Black Heart (1991)
Acrobat Mission (1991)
Thunder Dragon (1991)
Super Dimension Fortress Macross (1992)
NMK16 Wave 2:
Task Force Harrier (1989)
Bio-ship Paladin (1990)
Hacha Mecha Fighter (1991)
Koutetsu Yousai Strahl (1992)
Saboten Bombers (1992)
Bombjack Twin (1993)
NMK16 Wave 3:
GunNail (1993)
Super Dimension Fortress Macross II (1993)
Thunder Dragon 2 (1993)
Power Instinct (1993)
Rapid Hero (1994)
Updater support for the Analogue Pocket has been pushed to GitHub, once it's integrated we'll see everything pending added to GitHub for automatic updates. The maintainers of pupdate have confirmed receipt and will publish an update later this week.
Once that's done, future beta releases will be released via pupdate. We will also cover the previously published Midway cores this week and see an update for them. For now, you'll be required to manually install today's release for the PocketFPGA platform.
Comments (6)
what are you suposed to do with the pocket .mra file?
Hey there, I followed the directions on registering the coinop chipID on mister but I can’t boot anything from the folder to make the QR code pop up. What am I missing?
It's very impressive all your work atrac17 and pramod 2025/2026 so many arcade games thank a lot for that. It's unsane
Great! NMK games are quite hidden gems but a lot of fun!. Thanks team!
And the Pitfighter Core?
I've never announced I'm working on PitFighter. Sorry.
