|
Joined: Apr 2012
Posts: 293
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 293 |
I'm in need of some assistance with a device I'm working on ... It's the Hybrid Music 5000 Synthesiser, schematic at https://www.retro-kit.co.uk/user/cu...chnologyHTMusicSynthesiser-Schematic.pdfMy initial implementation was a port from another emulator, and worked well, and in stereo. I'm now updating it to make use of the DAC76 device (Am6070 on schematic), but the current DAC76 only supports a single output channel whereas the Music 5000 uses both decode and encode outputs switched by the EnD input line. So the DAC76 device requires another input line ed_w, no problem. I'm not sure how sound_stream_update should be changed to output to both channels though, depending on state of the EnD line. My limited knowledge of the sound system suggests the device can only output to either decode or encode at any time, but wouldn't sound_stream_update need to update both channels? Anyone suggest how this should be implemented?
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: Apr 2012
Posts: 293
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 293 |
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: May 2004
Posts: 915
Senior Member
|
Senior Member
Joined: May 2004
Posts: 915 |
Very cool! You should make a video of it running 
|
|
|
|
Joined: Apr 2012
Posts: 293
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 293 |
Very cool! You should make a video of it running  Thanks, I've never really played Frontier though did have it on the Amiga back in the 90's. Will consider a video when I'm happy with the emulation, want to get a little more performance out of it. I should add that this is a port of the ST version, and has to run from the Winchester as the executable is 2MB which is too large for any Acorn floppy formats.
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: May 2009
Posts: 1,889 Likes: 1
Very Senior Member
|
Very Senior Member
Joined: May 2009
Posts: 1,889 Likes: 1 |
Very cool! You should make a video of it running  Will consider a video when I'm happy with the emulation, want to get a little more performance out of it. Just to clarify, if you use -aviwrite and also specify -noafs, then the resulting video will play back full-speed regardless of how slow the emulation is during recording.
|
|
|
|
Joined: Apr 2012
Posts: 293
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 293 |
Back to my performance issues ... would converting memory mapped slot devices to use map(address_map &map) instead of read/write handlers be a worthwhile improvement? My tube and fdc slot interfaces could easily be converted, and would probably make the code more concise too.
I know the 32016 is still under development but running the Cambridge Workstation (acw443) is down to ~50%, so if converting the tube slot interface to use map is worthwhile then it should improve performance of this machine.
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: May 2009
Posts: 1,889 Likes: 1
Very Senior Member
|
Very Senior Member
Joined: May 2009
Posts: 1,889 Likes: 1 |
It's not going to improve performance by any notable margin. The simple fact is that you have fast interpreter CPUs. That's a death sentence for any kind of performance in MAME.
|
|
|
|
Joined: Apr 2012
Posts: 293
Senior Member
|
OP
Senior Member
Joined: Apr 2012
Posts: 293 |
The simple fact is that you have fast interpreter CPUs. That's a death sentence for any kind of performance in MAME. Yeah, but I get good performance from emu3 which uses the NS32016, and similarly for other machines using ARM7. It's just when I put something on the tube interface it seriously kills performance.
BBC Model B, ATPL Sidewise, Acorn Speech, 2xWatford Floppy Drives, AMX Mouse, Viglen case, etc.
|
|
|
|
Joined: Mar 2006
Posts: 1,050
Very Senior Member
|
Very Senior Member
Joined: Mar 2006
Posts: 1,050 |
For the AM6070 encode/decode issue, the AM6070 device probably needs to have a stream-input plumbed to it (using the new stream system which makes this easier than ever before) and then someone to write the appropriate-delay successive-approximation or flash or hybrid ADC code that it should run per clock/sample.
LN
"When life gives you zombies... *CHA-CHIK!* ...you make zombie-ade!"
|
|
|
|
Joined: Nov 2016
Posts: 51
Member
|
Member
Joined: Nov 2016
Posts: 51 |
Please note that the 32016 is seriously non-optimal right now; in particular, it currently fetches instructions "piece by piece" without any prefetch or aggregation, so it's going to exacerbate any inefficiencies in your memory pathway. I hope this will be improved somewhat when I get to implementing the 32082 MMU and the 32016 instruction prefetch logic, but for now it's very much a "get it working" implementation. With this in mind and from a very quick look at the 32016 tube implementation, you may be able to improve things a bit by eliminating your (8-bit) read/write trampolines. There are a few different ways to do this, one of them as follows, mostly in device_reset(): - Install your ram_device directly into the memory map.
- Install the ROM shadow over it, overwriting the RAM read handler for the relevant range.
- Install a write tap in the RAM region.
The tap logic does the following: - Re-installs the ram_device, overwriting the ROM shadow.
- Deletes itself.
This means that for most of the time, the CPU will directly hit the 16-bit (effective, due to 32016 data bus width) ROM or RAM handlers instead of your trampolines. The cost of the tap is minimal because it's a one-shot.
|
|
|
1 members (Olivier Galibert),
19
guests, and
3
robots. |
Key:
Admin,
Global Mod,
Mod
|
|
Forums9
Topics8,853
Posts116,510
Members4,927
|
Most Online890 Jan 17th, 2020
|
|
|
|