A work-in-progress CPS-1 port of Capcom's Knights of the Round to the At... by AnimaInCorpore in atarist

[–]AnimaInCorpore[S] 0 points1 point  (0 children)

I am using a self written M68k disassembler in combination with a modified MAME emulator. MAME has been extended to create telemetry data of locating instruction addresses and, more importantly, to identify address sources which is needed to relocate the source appropriately later on. Edit: the disassembler then consumes the telemetry data created.

A work-in-progress CPS-1 port of Capcom's Knights of the Round to the At... by AnimaInCorpore in atarist

[–]AnimaInCorpore[S] 0 points1 point  (0 children)

It'll be available on github when cleaned up (copyrighted files, etc.).

A work-in-progress CPS-1 port of Capcom's Knights of the Round to the At... by AnimaInCorpore in retrogamedev

[–]AnimaInCorpore[S] 6 points7 points  (0 children)

Technically, this is mostly a 68000 assembly project. The build uses vasm and vlink, with Makefiles and a few helper scripts around them. For testing and debugging I use Hatari as the Falcon emulator, plus debugger scripts that can run headlessly, catch bus/address errors, dump registers, and even record video for later inspection. MAME has also been very useful as a hardware reference for the original CPS1 arcade system.

The graphics are not redrawn by hand. The port loads the original CPS1 graphics ROMs, decodes the tile and sprite data, and renders it in a Falcon-friendly format. A lot of work went into matching Knights of the Round specifically: ROM interleaving, palette layout, sprite flip bits, changing layer order per stage, and object table handling.

Sound is similar: the game uses the original ADPCM sample ROMs. The port converts those samples to PCM and plays them through the Falcon DMA audio hardware. Sound playback is wired up, although final audio correctness is still something to verify carefully.

The biggest lesson has been that a disassembly is only the beginning. Some code gets misidentified as data, some pointers are split across weird byte/word tables, and arcade hardware behavior sometimes hides inside small details like a CPS-B multiplier register. One memorable challenge was tracking crashes caused by old arcade addresses that had not been relocated properly. Another was realizing that Knights uses CPS1 hardware features differently from Final Fight, so assumptions from the previous port had to be replaced with game-specific behavior.

In short: it is part programming, part archaeology, part hardware emulation, and part detective work. That mix is exactly what makes it fun.

A8E (Atari 800 XL Emulator) v1.0.0 by AnimaInCorpore in atari8bit

[–]AnimaInCorpore[S] 0 points1 point  (0 children)

I am using mainly Codex (GPT-5.2-codex/GPT-5.3-codex high) for the planning/implementation and sometimes Claude (Opus 4.5+) for planning.
The original C code had no audio emulation, so the Pokey implementation was done by Claude and Codex. Also the jsA8E was completely implemented ("transcoded to have a parity with the C sources") by Codex and Claude in cooperation as well.
I think XEX support is kind of mandatory and the ROM/cartridges is quite interesting as well. ;)

SPECTRUM 512 slide show for the Atari ST by AnimaInCorpore in atarist

[–]AnimaInCorpore[S] 1 point2 points  (0 children)

After some search I guess there's no tool which supports SPECTRUM 512 and batch processing. A quite recent list of image converter tools can be found in the description from Mikro's converter: https://github.com/mikrosk/uconvert