tomcw ee44c17b8a Cybernoid Test 1
. Cybernoid AY-regs exported from FUSE (so Spectrum freqs)
. Cybernoid AY-regs generated by fixed 6502 code (so MB freqs)
. convert noise period from ZX to MB(1MHz)
. moved org from $6000 to $4000
2020-09-20 12:06:07 +01:00
2020-09-20 11:50:15 +01:00
2017-04-21 21:56:00 +01:00
2020-09-20 11:50:15 +01:00
2017-04-21 21:56:00 +01:00
2020-09-20 12:06:07 +01:00
2020-09-20 12:03:05 +01:00
2017-04-21 21:56:00 +01:00
2017-04-21 22:23:53 +01:00

Cybernoid Music Disk

My motivation was to really push the MAME AY8910 emu code, as the Apple Mockingboard music (Skyfox, Ultima) wasn't really exercising it that hard.

So as a little R&D proj, I thought I'd convert Dave Rogers' Spectrum 128 Cybernoid routine (written in 1988).

Here's a summary of how I did it:

  • I got cybernoid.ay from here
  • Split it into bin's with AYSplitR
  • Disassembled with Inkland's dz80w here
  • I wrote 6502 macros to replace the z80 opcodes
  • For cybernoid, I hand converted the z80 code to 6502 (using the macros)
  • I added a few extension to AppleWin's debugger to help debug the 6502 code (ACME symbol loading & ZP pointer support).

I use Skyfox's MB detection routine.

The Z80 regs are emulated with zero-page memory locations $F0..$F8 The playback routine is very inefficient, as it:

  • saves the ZP memory
  • restores the Z80 regs
  • runs the IRQ handler
  • saves the Z80 regs
  • restores the ZP memory

This allows playback to work simultaneously with Applesoft & ProDOS. If DOS3.3 doesn't disable IRQs around disk I/O, then it won't work on a real Apple (under DOS3.3), but it'll still work on an emulator :-)

I profiled the IRQ handler and IIRC, it takes about 20% of the frame on average. This is poor, but the code can easily be optimised. Remember this was really just a proof of concept.

After this, I wrote a python script to do the Z80->6502, and quickly converted Cybernoid-II.

Currently playback on real h/w produces noisy renditions of the tunes. I have replaced my AY-register update routine with the slower one used by Skyfox which gives better but not perfect results.

Tom 25 March 2006

Description
Apple II Cybernoid music disk
Readme 106 KiB
Languages
Python 95.9%
Batchfile 4.1%