Two ships firing in stage 1, player 1's score top left in white, player 2's top right in gold, between the metal side strips TWO PLAYERS · STAGE 1

PORTED EXTENDED

NEO-CHORENSHA

Chorensha · X68000 → Neo Geo MVS / AES

Neo-Chorensha is Chorensha v0.10, the 1995 doujin shooter for the Sharp X68000 by Famibe no Yosshin, on Neo Geo hardware. The game is not rewritten: the original's own 68000 program runs on the Neo Geo's 68000, checked step for step against the original. Around it, a second ship and a coin slot.

WATCH ON YOUTUBE

Two players at onceP2 START at the title or mid-game, and a buy-in when a player runs out
Coin-op cabinetMVS coins and credits, an attract demo, AUTO FIRE; free play on the AES
Neo Geo nativeThe original's own code on the Neo Geo's 68000, no emulation

IN MOTION

YOUTUBE · 4K The showcase, chapter by chapter: the cabinet (attract, a coin, AUTO FIRE), one player, two players at once, stage 1's boss and the bonus stage SHOW TIME!!. The ships are flown by a script that searched for runs with no ship lost; the hidden menu's invincibility is never on. Watch on YouTube.

And two captures of MAME running the Neo Geo build, at the Neo Geo's native 320×224, scaled 3× with no filtering, with the game's own sound. The ships are flown by a script, so they play like a machine rather than a player.

0:25 Two players. The title on Free Play, START, and stage 1 with one ship while player 2's corner blinks PRESS START; then P2 START, and player 2's ship rises in from below with its own score, lives and bombs in gold, its shots in its own colours. Both fire through stage 1 to its first big ships. The hidden menu's invincibility is on for both.
0:28 The cabinet, on an MVS with no credit. The attract title with INSERT COIN and CREDIT 00, then (after a cut) the attract demo, recorded from the port itself. A coin ends it: the title comes back with START, CONTINUE and AUTO FIRE, CREDIT 01 and the BIOS's countdown. AUTO FIRE goes ON, START, and stage 1 begins with the shot held down.

WHAT'S NEW

One-player play is the original's: the same enemies, patterns, hit boxes and scoring, its two stages and its bonus stage, SHOW TIME!!. What the port adds sits around the game.

Two players at once

P2 START at the title starts a two-player game in stage 1 (two credits on the MVS). P2 START during a one-player game brings player 2 in with a new game's stock (2 spare ships, 3 bombs, power 0) and score 0, rising in from below as at a respawn. A player out of ships while the other plays buys back in with their own START, at score 0, like the original's CONTINUE, with no time limit. The game is over when no one has a ship left.

Each player has their own ship, lives, bombs, power and score; player 2's HUD mirrors player 1's on the right, in gold. Enemies aim at the nearer ship, and every kill, bomb hit and item goes to the player who made it. The two share the game's pool of 29 shots and its one bomb on screen at a time.

The cabinet

The port behaves as a Neo Geo game. The BIOS takes over between games; left alone, the title alternates with a 30-second demo of stage 1. On the MVS, coins become credits: with none, INSERT COIN blinks and nothing can be chosen; with credits, the menu is START, CONTINUE and AUTO FIRE, and a 30-second countdown starts a game. One credit per game, and CONTINUE costs one too. Credits are spent only through the BIOS, so none is taken without a game starting.

While one player plays alone, the other's corner blinks PRESS START, or INSERT COIN on an MVS with no credit in.

AUTO FIRE

New, not in v0.10. Held, the shot fires one burst every 12 game steps, the fastest that tapping gives in the original. On the MVS its power-on default is a soft DIP setting, OFF unless the operator changes it.

The AES, CONFIG and KAKUSI

The AES, and the MVS on its Free Play switch, are free play: the whole menu, with CONFIG (AUTO FIRE, PCM PLAY, BGM PLAY and the shot/bomb swap). The hidden KAKUSI menu (muteki, stage, acchoh) opens from CONFIG's item with a pad code. Settings last until power-off; nothing is saved.

HOW IT'S DONE

The original program, on another 68000

The X68000 and the Neo Geo both run a Motorola 68000, so the game's compiled code runs unchanged. What it asks of the X68000 is answered by a layer written for this port, the shim: it stands in for Human68k (the DOS), the IOCS, the XSP sprite library the game links, the MCDRV music driver, the joystick and the video hardware. Every one of those interfaces is patched at build time to call it, and files the game would load from disk become data already in ROM. The game's working memory is laid out object by object so its live state fits the Neo Geo's 64 KB, with no extra RAM on the cartridge and no MVS backup RAM.

Graphics

XSP's sprites become Neo Geo sprite tiles, converted at build time; the X68000's background plane becomes columns of sprites, its text plane the fix layer, and its palettes Neo Geo colours. The shim answers XSP's own calls with them every frame.

The screen

Pixels are 1:1. The original's field is 256×256; the Neo Geo shows 224 lines of it at a time, and the view follows the ship only as far as it must to keep it whole, preferring the top of the field, where enemies come from. The 32-pixel strips on either side hold a still metal frame (generated art, reduced to pixel art) on the fix layer. The score and lives sit at the original's places, fixed while the view scrolls; the bombs are pinned 8 lines above the screen's bottom, so a CRT that crops it still shows them: the one declared difference from the original's picture.

Sound

The original's three tunes are recorded from the original running in MAME's X68000 driver, each with its loop point measured, and played back as YM2610 ADPCM-B by a Z80 driver on the cartridge. The 25 effects are decoded from the game's own ADPCM files and re-encoded as ADPCM-A. The driver takes its cues from the game's own music and effect calls, so they start on the same events.

Checked against the original

The original runs in MAME's X68000 driver and the Neo Geo build in MAME's Neo Geo driver, fed the same input at every game step, and their game state is compared after each step: the lock-step. Over the whole game (stages 1 and 2, their bosses, the bonus stage and its two bosses, 35,028 steps), through deaths, game overs and a CONTINUE, and through the CONFIG menu, the state is identical at every step, on the MVS and the AES. The one byte allowed to differ, the sound-effect priority, does so only in a few short windows where the two machines' sound timing meets a step boundary. Whole frames are compared pixel for pixel at 24 moments of the game, and at 31 more across the title, its menus, game overs and CONTINUE: all equal.

Two players on the original's code

Player 2 is not a second ship written from scratch: each game step runs the original's own ship code a second time, with player 2's state swapped in. Movement, shots, power levels, bombs, death and respawn are then the same for both players by construction. A thin layer makes the shared parts (collision, scoring, aiming, items, the view, the HUD) know there are two ships. Player 2's ship and shots take their own palettes, the originals turned a third of the way round the colour wheel. Until a second player comes in, none of it touches the game: one-player play stays identical in the lock-step, and the demo stays one-player.

Speed, and the limits

  • One game step runs per Neo Geo frame, 59.19 a second: about 20% slower than the original's 73.94, a choice made for smoothness. The original's own slowdown in busy scenes is not reproduced.
  • Where a step runs past its frame, the last picture shows again: 753 frames over a whole one-player game. Two players run every shot and every enemy, nothing trimmed, so busy scenes slow down more: 1,465 frames over the same game.
  • Tested in MAME 0.289 (MVS and AES) and on a Recalbox (libretro MAME 0.258). Not yet on real MVS or AES hardware.

SCREENSHOTS

Native 320×224 frames from the Neo Geo build in MAME, shown pixel for pixel.

The title on an MVS with no credit: INSERT COIN, CREDIT 00
The MVS title with no credit in: INSERT COIN, nothing to choose.
The title with a credit: START, CONTINUE, AUTO FIRE ON, TIME 26, CREDIT 01
A credit in: START, CONTINUE and AUTO FIRE, with the countdown.
CONFIG MODE on the AES: AUTO FIRE, PCM PLAY, BGM PLAY, SHOT and BOMB, EXIT
CONFIG on the AES: AUTO FIRE where the original had SCREEN.
Stage 1 starting with one ship, PRESS START in player 2's corner
One player, stage 1: player 2's corner invites a join.
Two ships firing in stage 1, player 2's score in gold on the right
Two players: player 2's HUD in gold, its shots in its own colours.
Player 1 alone under a large enemy, PRESS START in player 2's corner
Player 2 out of ships: PRESS START buys back in, at score 0.
The stage 1 boss fight, large green and silver ships and blue bullets
Stage 1's boss fight.
A boss fight in the bonus stage, crowded with large silver ships and blue bullets
The bonus stage, SHOW TIME!!: one of its two bosses.