Coin-Op Collection Presents: NMK16 (Black Heart)
Today's beta release for the Analogue Pocket and MiSTerFPGA platforms is the next entry on the NMK16 platform. Black Heart is a horizontally 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)
Developed by NMK and published by UPL in 1991, Black Heart is the fourth release on the platform, following Super Dimension Fortress Macross, US AAF Mustang and Thunder Dragon.
This post covers a technical overview of Black Heart for the NMK16 platform, the work the board required, and the game itself. Additional entries for the NMK16 platform can be found at the links below:
https://www.patreon.com/posts/159070988/ - Super Dimension Fortress Macrosshttps://www.patreon.com/posts/159083730/ - US AAF Mustang
https://www.patreon.com/posts/168998367/ - Thunder Dragon
Licensing:
Black Heart 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:
Black Heart runs on NMK's 68000-based hardware (PCB UPL-90068), 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. There is no protection MCU and no graphics descrambler on this board, so the graphics ROMs are read directly.
The video system outputs 256x224 in a horizontal 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 was covered in full with Thunder Dragon, so the short version is that it has no CPU-accessible registers and the vertical timing PROM is its entire program. A counter steps that PROM one entry every two scanlines across the 278-line frame, and each 8-bit entry carries the interrupt trigger, the interrupt level the 68000 is handed, VBLANK, VSYNC, and the sprite DMA trigger. Black Heart is the fourth board released on the platform and the clearest demonstration of what that design buys.
The four boards agree on the frame itself. VSYNC runs lines 8 through 13 on all of them, active display opens at line 38 and covers 224 lines, the level 4 interrupt fires at line 262 as vertical blank begins, and the sprite DMA fires two lines later at 264. That much is the raster, and it does not move between these boards.
What moves is the interrupt map. Macross and US AAF Mustang carry the same PROM byte for byte, an interrupt at level 2 when the display opens at line 38 and two raster interrupts at level 1 on lines 90 and 218. Thunder Dragon drops the level 2 interrupt entirely and keeps the two rasters on the same lines, so its 68000 only ever sees levels 1 and 4. Black Heart keeps the level 2 interrupt at line 38 but runs a single raster interrupt, moved down to line 124.
None of that is a difference in the chip. The NMK902 is identical on all four boards, and the game's interrupt map is data sitting in a 256-byte PROM beside it, which is why the core reads its interrupts out of the board's own part rather than carrying a table per game. Change the PROM and the frame changes with it.
Core Options:
The MiSTer core includes video settings for aspect ratio, vertical scaling and cropping, scandoubler effects, and vertical positioning and sync adjustments. 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 stage select is new for this release and was written specifically for the core rather than carried over from an existing database. It seeds the stage only while that byte still reads zero, so it places the player on any of the eight stages at the start of a game and leaves normal progression to advance from there. The remaining cheats are infinite credits and, per player, invincibility, infinite lives, infinite extra weapon, and maximum fire power. Invincibility holds the player's hit counter inside a safe window rather than writing a fixed value, so the player has to move right at the start of a stage for it to take hold.
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 extra weapon, and maximum fire power. Arcade dip switches available on Pocket are Difficulty, Lives, and Demo Sounds.
The core supports two sets, Black Heart and Black Heart (Japan).
History and Gameplay Information:
Black Heart was developed by NMK and published by UPL in May 1991. The staff is undocumented beyond the music, which is credited to Kazunori Hideya, the same composer as Super Dimension Fortress Macross and Thunder Dragon on this platform, who has said he wrote most of the game in compound and irregular time signatures.
The game is a horizontally scrolling shooter for one or two players at once. The player is Zil, a warrior fighting from the back of a dragon, with a shot and a fire breath. The fire does considerably more damage but drains as it is used and is refilled by collecting pixies, so the two attacks trade against each other rather than one replacing the other. Enemies drop coins as they are destroyed, and eight stages each close on a boss, with Zil working toward Jeanne, held with the pixies by Taranith, whose black magic army broke a three hundred year peace and started the war the game opens on.
Black Heart never left Japan at the time of release. It reached players elsewhere for the first time in November 2021, when Hamster, which now holds NMK's catalog, released it through the Arcade Archives line on modern platforms.
Updates:
Black Heart is the fourth release on the NMK16 platform, and the rest of the first wave is behind it. Vandyke and Acrobat Mission are the remaining titles from the first wave, 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 (2)
The style and music reminds me of something you would find on the Amiga. Big animated sprites and interesting music. Thank you so much for the great work!
Black Heart is a great game! Thanks team!
