
Shinobi Megadrive Beta
I just finished working on a beta version of a Shinobi arcade port for the Mega Drive / Genesis! This is an early build, so there might be further updates and refinements down the road. 🎮🥷 Any feedback or bug reports are greatly appreciated! Shinobi for Mega Drive: port write-up 1. Goal The port aims to play exactly like the arcade (Sega System 16A) on a real Mega Drive with a flashcart. • Why faithful, not a loose remake: the project's rule is "no mistakes", with logic identical to the arcade (enemies, timing, routes). A reinterpretation would change the game. • Why real hardware: the target is a console with a flashcart, so everything is tested on MiSTer, not only in an emulator. • Why start with mission 1: polishing one full mission before expanding solves the shared problems (AI, levels, graphics, music) only once. 2. Approach: run the original code The game runs the arcade's 68000 code as is, with a layer (HAL) that translates what the arcade expects from its hardware into Mega Drive hardware. • Why not rewrite it: both machines use the same 68000 CPU. Reusing its code guarantees the same logic without copying every enemy and routine by hand. • Why a HAL: only what the Mega Drive lacks changes: video, palettes, text layer, sprites, controls and sound. The rest of the game is untouched. • Why minimal patches: each change to the original code (such as the continues check) is small and verified, so the behaviour stays the same. 3. Graphics and palettes The Mega Drive has fewer colours and less video memory than the System 16A, so graphics are converted ahead of time and split per scene. • Why convert in advance: converting at run time would cost too much CPU. Graphics are prepared once with custom tools. • Why unify colours: there are only 4 palettes of 16 colours. Characters that repeat with different arcade palettes share one look; the ninjas each keep their own colour. • Why rewrite the text layer: the arcade's text and HUD move to their own plane, with rules so that maps, title cards and fades appear at exactly the right moment. 4. Sound The original music is transcoded for a custom Z80 driver, which plays it on the Mega Drive's FM chip. • Why the Z80: it frees the 68000, which is already busy running the arcade game. • Why transcode: the arcade uses an FM chip from the same family (YM2151 versus YM2612), so its notes and instruments carry over without recomposing the music. • Why no arranged version: a Streets of Rage 2-style arrangement was tried, but it did not sound as intended and was dropped. Only the original music remains. 5. ROM and banks The ROM is 5 MB and uses the SSF2 mapper to go past the 4 MB limit. • Why banks instead of compression: decompressing graphics at run time would cost performance. With banks, data is read directly. • Why SSF2: flashcarts and MiSTer support it, and they are the port's target. • Why 5 MB: data was grouped by mission so each scene uses only its own bank, which cut the size without losing anything. 6. Additions The extras sit outside the arcade game, so its logic is untouched. • Options menu (difficulty, continues): the home version has no board settings (DIP switches). The menu replaces them. • Secret stage select (Konami code): handy for testing any stage, but hidden so it does not spoil normal play. • Mission map without scrolling at each start: only the red blinking of the mission area was kept, since that is what matters. • Boot logo, jingle and "Port Mr. X.Todd" credit: they sign the work. • "Free fan port, not for sale" notice: it makes clear the project is free and must not be sold. 7. Testing Each version is checked in an emulator and then on MiSTer. • Why an emulator: it can replay a game frame by frame, take screenshots and compare against the arcade. • Why a bot: it plays without cheats from power-on to the mission 2 boss. It proves everything can be completed and exposes blockers a short test would miss. • Why MiSTer: it is the closest thing to the real console with a flashcart, which is where the port must run
Mr. X.Todd 11 followers· portfolio 9 View creator →




