
Lander decides to set up Cho Ren Sha on his cogitation terminal.
5:30AM
Spoiler

Meep Meep.
Icarus' recent thread on the new X68000 Mini version piqued my interest again, so I went digging to find the best way to experience this gem on a modern machine, and decided to document it here for posterity.
ChoRenSha 68k - Windows v1.01 (Latest build from 2017)
ChoRenSha 68k - Legacy Versions
The Windows build seemed a reasonable first call, being the more accessible of the two on account of not needing emulation.
(In theory, at least - I have to run it via Wine, but will be focusing on platform-agnostic issues for purposes of this post.)
Linux (via Wine)
Spoiler
Wine 8.10+ - Game runs as expected, displaying an unscaled 1:1 image surrounded by black bars in fullscreen.
Wine 8.6 - Game runs as expected, displaying in full screen with scaling, but 2x scaling mode results in a black screen.
Proton 8-8, Wine < 8.x - Visuals lock up shortly after entering the menu. Can be fixed by injecting dgVoodoo2. 2x scaling mode results in a black screen.
And so to the first problem: The Windows version displays at 640x480, but the internal resolution of CRS is 256x256. Uh-oh, that's not a clean multiple...
The F-keys can be used to switch between scaling modes as follows:
F1 - 1x
F2 - 2x
F3 - 2x w/Scanlines
F4 - 1.875x (Default)
F5 - 1.875x w/Scanlines
...But each is a compromise:
1x - Pixel perfect shooter for ants.

2x - Death lurks in the overscan.

1.875x - That's no diagonal, it's a BrainΦΠΦTemple post in tileset form!


Display
The second problem is filling the display. I'm unsure how this works under actual Windows (please - chime in!), as Wine exhibits different behaviour across different versions, but assume the baseline VGA resolution is similarly non-negotiable.
This isn't ideal, since it can result in excess black bars, blurry bilinear upscaling, or potential aspect ratio issues.
dgVoodoo2 can be used to force a sharp integer-multiple resolution, but is subject to limitations around the original 640x480 aspect that make it difficult to get a fully optimal nearest-integer-multiple display.
Input
Input is also tricky, since the game appears to map DirectInput analog axes to ship movement, and ignores the POV hat that most D-pads are mapped to. And of course, no autofire.
I use a stick that can work around this, but there's a responsiveness issue somewhere in the translation to analog output that adds frequent delays and input drops, so that's no good either.
On real Windows this can likely be worked around via AutoHotKey or similar, but that's still more a patch than it is a proper fix.
Compromise
At this point, I just wanted to play some CRS, so decided to let it be for the moment and put up with the technical trouble.
...Until I encountered the true antagonist of this thread:

God's Holy Trousers, what's an XSP?
Operating a machine I don't understand isn't very Engineer, so back to square one we go.
Screen does nothing, XSP Mode does nothing, XSP Vertical does nothing... Time for a search.
Anyone?

Nope

Nobody here but us chickens

WHERE ARE YOU PEOPLE?!

And thus spake the pros:

Oh dear. But, thanks to the development notes hosted on Shmuplations, I learned that XSP is the sprite framework created so CRS could break the 68k hardware sprite limit, though that didn't explain why XSP Mode and XSP Vertical don't seem to do anything.
XSP Vertical's naming lines up with STK Vertical, which rotates the stick input, so surely there must be something going on here?
Alright, time for some ground truth.
ChoRenSha 68k - X68000 v1.10 (Latest 2023 build)
ChoRenSha 68k - Legacy Versions
...Or the closest I can get without real hardware or a mini, at any rate. If nothing else, emulation means total control over input and scaling.
Emulators
Windows
XM6 Type-G - Site and documentation is in Japanese, but UI is in english. You want the xm6_typeg_336_20230523.zip link.
Multiplatform
Retroarch (or equivalent Libretro frontend) with the PX68k core
MAME / GroovyMAME
I already had a Retroarch setup with the PX68k core installed, which will happily load the v1.10 XDF, so booted it up and was pleasantly surprised to find it seemingly as responsive as the Windows version, even absent support for runahead.
Frame advance doesn't seem to work for discrete testing, but if there's any built-in lag it seems to be within the acceptable 1-3 frame range.
Tight enough for me to one-life up to Stage 6 on my second day of play, at any rate

Anyway, one prod at XSP Vertical later, and...
Whoa, Cho Ren Sha Hori


To wit, it appears that XSP isn't used on Windows - at least not to the same extent - where DirectX is layered on top instead, with the F-keys acting as a skeletal config interface.
Screen appears to be a 68k-specific resolution switch, since setting it to 0x0002 causes a temporary overscan-like zoom that goes away when switching between menu and game.
And XSP Mode - drumroll please - is effectively a quality setting for the sprite rendering backend.
XSP Mode 0x0001 - Flicker is introduced when many sprites occupy the same line.

XSP Mode 0x0003 - No flicker.

0x0002 produces the same results as 0x0003 in my early-game testing, which I assume is to tweak performance on different 68k configurations.
I don't know much about the hardware, but PX68k exposes a clock rate setting with three entries that aren't labeled OC, so it seems a plausible explanation.
Anyway, I dug around and found a couple of other interesting bits, so have assembled a reference for posterity:
Configuration | |||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Setting | Values | Description | |||||||||||||||||
Game Level | Normal | Baseline difficulty. | |||||||||||||||||
Hardcore | Hard difficulty. | ||||||||||||||||||
Screen | 0x0000 | Default screen setting. | |||||||||||||||||
0x0001 | Same result as 0x0000 on my emulated machine. | ||||||||||||||||||
0x0002 | Appears to apply overscan zoom, but corrects when starting a game. | ||||||||||||||||||
Note: Does nothing on Windows | |||||||||||||||||||
XSP Mode | 0x0001 | Introduces flicker if too many sprites occupy a single scanline. | |||||||||||||||||
0x0002 | Same results as 0x0003 on my emulated machine. | ||||||||||||||||||
0x0003 | No flicker. Default for v1.10. | ||||||||||||||||||
Note: Does nothing on Windows | |||||||||||||||||||
XSP Vertical | Off | Default playfield orientation. | |||||||||||||||||
On | Playfield is rotated 90 degrees CW. | ||||||||||||||||||
Note: Does nothing on Windows | |||||||||||||||||||
STK Vertical | Off | Default stick orientation. | |||||||||||||||||
On | Stick input is rotated 90 degrees CW. | ||||||||||||||||||
Shot / Bomb | Shot=A Bomb=B | Default button mapping. | |||||||||||||||||
Bomb=B Shot=A | Reversed button mapping. | ||||||||||||||||||
Start Select | Off | Select locks ship X position. Start locks ship Y position. | |||||||||||||||||
On | Select pauses. Start locks ship Y position. | ||||||||||||||||||
Note: Axial locking does not occur on Windows. | |||||||||||||||||||
Mute SE | Off | Play sound effects during gameplay. | |||||||||||||||||
On | Disable sound effects during gameplay. | ||||||||||||||||||
Mute BGM | Off | Play background music during gameplay. | |||||||||||||||||
On | Disable background music during gameplay. | ||||||||||||||||||
SE Test | 0x0000 ... | Press B to play the selected sound effect. | |||||||||||||||||
Music Test | 0x0000 ... | Press B to play the selected music track. | |||||||||||||||||
Init Score Data | Reset the high score table. |
If you're looking to play on a modern machine and don't have access to original hardware or a mini, you should consider emulation for the best experience.
Especially seeing as v1.10 is currently X68000-only, and has some nice audiovisual updates.

On the emulators themselves:
Personally, I use Retroarch with the PX68k core since it's snappy, has rock solid I/O, and allows total configuration plus extra niceties like fanciful GPU scanline upscaling. However, it lacks savestate support.
MAME appears to run the game at full speed with low latency when properly configured, but comes with an imperfect video emulation warning, which appears to manifest as mild background corruption during full-screen flashes. Savestates warn about not being officially supported for X68000, but appear to work correctly once the game has finished booting.
For Windows players who don't want to reach for a big emulation fronend, XM6-Type G runs the game well, and has full support for savestates.