Welcome, Guest. Please login or register.

Author Topic: Curse of the SDL  (Read 24722 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline unusedunused

  • Sr. Member
  • ****
  • Join Date: Nov 2005
  • Posts: 479
    • Show only replies by unusedunused
Re: Curse of the SDL
« Reply #44 on: August 09, 2011, 12:42:19 PM »
Quote from: Khephren;653768
Amiga sample playback is at 28khz. If you open and close a double scanned screen, that allows 56khz playback. Also, even the A500 is capable of channel mixing.There have been 8 channel MOD's since the late eighties. The problem as I have mentioned, is that ports from other platforms do not use Amiga tricks to increase the speed/quality of sound and graphics fidelity.

try a old amiga game and a sample ripper.in winuae you can too rip samples-
you see sample rate is not often larger as 7 khz, because on A500 memory was low and memory need save

also transpose a sample with paula have very ugly sound quality.amiga have a 7 khz filter so it sound not so ugly as when disable the filter.

modern systems as sdlmixer use linear transpose this cost more CPU power but have good sound quality so you can get CD quality sound

so the first thing you can do, when you want play a sdl game on a slow amiga, is switch music and sound off.
 

Offline itix

  • Hero Member
  • *****
  • Join Date: Oct 2002
  • Posts: 2380
    • Show only replies by itix
Re: Curse of the SDL
« Reply #45 on: August 09, 2011, 12:57:20 PM »
Quote from: bernd_afa;653771

todays games use alphachannel for all objects.
this mean before calc a pixel, the pixel data need read, the object data is add and then the pixel is written.

but because amiga GFX card access is so slow, and a gfx card read is more slower than write, this slowdown alot.


It is only slow if you dont have HW accelerated alpha blits.
My Amigas: A500, Mac Mini and PowerBook
 

Offline utri007Topic starter

Re: Curse of the SDL
« Reply #46 on: August 09, 2011, 01:06:57 PM »
Nobody who have common sense doesn't drem to play halflife with his/her 68k amiga.

There is no modern games for 68k amigas and woun't be. But still... still, amiga is hobby amchine and it is perfectyly possible play games with 320x256 resolution and some strategy games with 640x512 resolution.

It would be nice to use Netsurf with screen 640x512 and 256 colors or maybe even 64 colors. It should work any amiga wich has enough memory. Reducing palette would make memory requirements slower also.

Web browser is tool, so I don't dream to read days pappers with with my 68040/40mhz/64mb/Aga machine, but quite often I want to do/donwload something with it.

I F we are looking games/apps to port to our beloved amigas, we should look projects from 90 centry

Like:

http://liberatedgames.com/
http://www.dmoz.org/Computers/Systems/RISC_OS/Software/Games/

AMiga.org members has also dozens of abandoned projects, so it would be smart to ask projects here. IF somebody want to do something and don't want to start from scratch
« Last Edit: August 09, 2011, 01:31:56 PM by utri007 »
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline Crumb

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 1786
  • Country: 00
    • Show only replies by Crumb
    • http://cuaz.sourceforge.net
Re: Curse of the SDL
« Reply #47 on: August 09, 2011, 01:13:32 PM »
Quote from: bernd_afa;653771
sdl is able to work in same way as you told, when use HWSURFACE.but then many modern games run slower.


If you use SDL doublebuffer functions even if you enable HWSURFACE it will run slower than cgx using double buffer functions (at least on UAE).

Quote

todays games use alphachannel for all objects.
this mean before calc a pixel, the pixel data need read, the object data is add and then the pixel is written.


That depends on the game generation and the coder. Reading from gfx ram is slow even on pc so it's better to perform the calculations in ram and write the pixels with the new value directly.

There are decent games like Diablo, Age of Empires or Starcraft that run happily on a 640x480 8bit screen.

Quote

but because amiga GFX card access is so slow, and a gfx card read is more slower than write, this slowdown alot.


The problem is coding 2d games using graphic card as a big framebuffer instead of taking advantage of accelerated blitting and scrolling. And the problem for modern games is that you could be using Warp3D to move 2D images using hardware resources instead of transfering one dozen of megabytes per second. Just upload your gfx to RTG ram configured as textures and move them using Warp3D instead of cpu: you'll reduce bus bandwitch required to move the gfx and will require a less powerful cpu

Quote
a better test to compare between a native port and sdl is maybe quake


what? sorry, I strongly disagree because Quake on classics is mostly cpu limited and its use of SDL is limited to:
a) locking display bitmap, writting the pixels directly to gfx ram or...
b) performing a raw copy (just like WritePixelArray on RTG)

so there's hardly any difference with CGX code. Any difference in performance could be due SDL handling of double buffer/vsync in a different way but it's caused by the SDL port. A better test would involve using SDL blitting functions, instead of simply copying raw data through amiga bus to rtg ram.
The only spanish amiga news web page/club: Club de Usuarios de Amiga de Zaragoza (CUAZ)
 

Offline Khephren

  • Hero Member
  • *****
  • Join Date: Feb 2002
  • Posts: 606
    • Show only replies by Khephren
Re: Curse of the SDL
« Reply #48 on: August 09, 2011, 02:38:28 PM »
Quote from: bernd_afa;653772
try a old amiga game and a sample ripper.in winuae you can too rip samples-
you see sample rate is not often larger as 7 khz, because on A500 memory was low and memory need save

also transpose a sample with paula have very ugly sound quality.amiga have a 7 khz filter so it sound not so ugly as when disable the filter.

modern systems as sdlmixer use linear transpose this cost more CPU power but have good sound quality so you can get CD quality sound

so the first thing you can do, when you want play a sdl game on a slow amiga, is switch music and sound off.
 

Who's talking about the A500? who in their right mind would try running SDL on such a platform? Also, much of the OCS limitations came from lack of storage space, not bus throughput. I quite happily play 14bit multi channel ADPCM  music on my A1200/030, and it sounds brilliant. And the machine has plenty of bandwidth for other tasks.

The first thing you want to do if you play a game on Amiga is not use SDL, and use as many amiga hardware tricks as you can. Many Amiga demo's run in HAM modes and have 14bit sound. SDL would not allow this on such a limited platform, and I would it even allow you to reach such a low level? I doubt it.
 

Offline unusedunused

  • Sr. Member
  • ****
  • Join Date: Nov 2005
  • Posts: 479
    • Show only replies by unusedunused
Re: Curse of the SDL
« Reply #49 on: August 09, 2011, 03:49:00 PM »
>The first thing you want to do if you play a game on Amiga is not use SDL, and use as >many amiga hardware tricks as you can. Many Amiga demo's run in HAM modes and have >14bit sound. SDL would not allow this on such a limited platform, and I would it even >allow you to reach such a low level? I doubt it.

I do now compare on my winuae system and notice the SDL version is only 10 % slower.in numbers it is 91 fps sdl_quake and 99 fps quake68k on a 1920*1080 fullscreen 8 bit

so there is no hope that you can

>There are decent games like Diablo, Age of Empires or Starcraft that run happily on a >640x480 8bit screen.

this are not so speed critical stuff, as a action shooter or jump and run with scrolling.
If there is a SDL version here, then there are good chances that it is playable, maybe with low samplerate

>I quite happily play 14bit multi channel ADPCM music on my A1200/030, and it sounds >brilliant. And the machine has plenty of bandwidth for other tasks.

can you post a link of such a song and player ?.and the 7 khz filter of your amiga need set to off.have you hear the music over headphone or a good stereo sound system ?

maybe with the 1084 monitor speakers it sound ok, but with a good loudspeaker it sound very bad.

for amiga the only player which can do good quality is octamed soundstudio when you enable in mixing routine stereo and filter and can reach better quality.but then a simple 4 channel song use full cpu load on a classic.try it out, if you not believe.

but its possible to change sdl mixer that it do crappy nearest soundmixing to be faster.maybe there is a option so nearest sound mixing is possible.

but this give only little speedup, actual games are design that there are at least 11 channels here.11 channels is the default of sdl_mixer.if a developer need more he can enhance.

@Itix
>It is only slow if you dont have HW accelerated alpha blits.

As far i know no 2D gfx card have HW accelerated alpha blits.Or do you know any for amiga ?

today OS use 3D features of GFX Card for that.

@Crumb
>what? sorry, I strongly disagree because Quake on classics is mostly cpu limited and >its use of SDL is limited to:
>a) locking display bitmap, writting the pixels directly to gfx ram or...
>b) performing a raw copy (just like WritePixelArray on RTG)

thats true, netsurf SDL work the same way, but when you look how games work, then you see that code do only copy some bytes to gfx buffer.

and this copy operations are limit by GFX Bus access.
sdl is very fast, it convert any bitmap format to screen bitmap format.
if somebody want write a game for amiga RTG, he must write code for do this.P96 or CGX functions are not so fast, because i test what happen when i use instead of SDL blit operations the CGX functions direct.was slower seem CGX do also have more calling overhead.a simple 1 pixel blit was slower in P96 too

also SDL use runlength encoding for 1 bit alphamasks and prepare the images to faster blit.this is too faster, it avoid lots of mem access and check for mask operations

and when you write a game that run on RTG you have of course no copper or can do some display tricks smooth scroll etc.
« Last Edit: August 14, 2011, 04:47:02 PM by bernd_afa »
 

Offline fishy_fiz

  • Hero Member
  • *****
  • Join Date: Jan 2005
  • Posts: 1813
    • Show only replies by fishy_fiz
Re: Curse of the SDL
« Reply #50 on: August 09, 2011, 04:01:29 PM »
Having recently set up amithlon again Im thankful for SDL and the software it bring to a more powerful "68k amiga" system, but I love my a1200+40mhz appollo '040+32 meg as well.
 While such a system is humble in modern terms there's still potential there that was unfortunately never really tapped. Yes there's games that can take advantage of faster hardware, but only really fps and other 3d games, nothing to push the strengths of an '030 upwards +fast ram based aga machine in the way shadow of the beast, elfmania, super stardust,etc. push a 7-ish mhz 68000 +ocs/ecs or 14ish mhz 68ec020  +aga respectively.

There's plenty of gaming styles that the amigas hardware lends itself nicely to. Just look at its catalogue. Chances are there's at least a few classic amiga games that everyone would like to see (for more random examples) upped from 16/32 colors to 64/128, sound enhanced, a few extra nice gfx effects, full speech, extra animation and a bunch of other quite feasible "enhancements".  

If nothing else maybe this untapped potential (for games) of expanded aga machines will motivate me to make a "serious" classic amiga game  :)
Near as I can tell this is where I write something under the guise of being innocuous, but really its a pot shot at another persons/peoples choice of Amiga based systems. Unfortunately only I cant see how transparent and petty it makes me look.
 

Offline unusedunused

  • Sr. Member
  • ****
  • Join Date: Nov 2005
  • Posts: 479
    • Show only replies by unusedunused
Re: Curse of the SDL
« Reply #51 on: August 09, 2011, 05:25:02 PM »
>The problem is coding 2d games using graphic card as a big framebuffer instead of taking >advantage of accelerated blitting and scrolling. And the problem for modern games is >that you could be using Warp3D to move 2D images using hardware resources instead of >transfering one dozen of megabytes per second. Just upload your gfx to RTG ram >configured as textures and move them using Warp3D instead of cpu: you'll reduce bus >bandwitch required to move the gfx and will require a less powerful cpu

thats theory, who have a fast RTG system that is able to use warp3d ?
when you use SDL 3D Games then all can do with GFX card.but when 3d games are written for SDl, PC have speed at 500 MHZ and more and much faster GFX bus and no limit of 256 Pixel texture size of Voodoo 3.

wawa have work much to port some usable 3D games to classic.but the 256 pixel texture limit was the problem in voodoo 3 and the limit mem in compare to modern systems, because every game use a background texture of screen resolution.this mean at least 640*480.

and last very few users own a voodoo 3.most users have a GFX card with only 2 or 4 megabyte of RAM.thats too few

I have written a game engine for amiblitz and storm mesa, but nobody write a fast working game for it, and Thilo choose his own 2d engine that can do some blits on 2d Card.

but  also this is not able to play a modern game fast on a classic.for example the game amega one

http://www.a1k.org/forum/showthread.php?t=18578

or panzers

http://www.a1k.org/forum/showthread.php?t=14115

is too slow to play on 640*480 on classic

any help is welcome to make this games playable on a classic.in amiblitz you can write asm code and some routines are asm optimized.but if the GFX bus can not transfer more data is the main problem
« Last Edit: August 09, 2011, 05:31:37 PM by bernd_afa »
 

Offline Crumb

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 1786
  • Country: 00
    • Show only replies by Crumb
    • http://cuaz.sourceforge.net
Re: Curse of the SDL
« Reply #52 on: August 09, 2011, 08:15:47 PM »
Quote from: bernd_afa;653790

>There are decent games like Diablo, Age of Empires or Starcraft that run happily on a >640x480 8bit screen.

this are not so speed critical stuff, as a action shooter or jump and run with scrolling.


Well, if your scrolling is not hw accelerated and blitting functions are non existant you´ll also depend on bus bandwitch unless you have some gfx memory to store some parts like backgrounds and draw them using blitter.

Quote

>I quite happily play 14bit multi channel ADPCM music on my A1200/030, and it sounds >brilliant. And the machine has plenty of bandwidth for other tasks.

can you post a link of such a song and player ?.and the 7 khz filter of your amiga need set to off.have you hear the music over headphone or a good stereo sound system ?


Do you use the horrible audio filter? I never met anyone who liked it :-) there are plenty of players that will allow you to output more than 7Khz sounds (e.g. HippoPlayer). In fact many games use higher frequency sounds.

Use paula directly at 28Khz 8bit instead of AHI and you´ll get a nice speedup.

Quote

@Crumb
>what? sorry, I strongly disagree because Quake on classics is mostly cpu limited and >its use of SDL is limited to:
>a) locking display bitmap, writting the pixels directly to gfx ram or...
>b) performing a raw copy (just like WritePixelArray on RTG)

and this copy operations are limit by GFX Bus access.


On Amiga it´s limited by cpu speed, not bus access. If you use AGA or a CV64 you won´t see much difference. If you are talking about emulators... well, uae behaviour will be different than a real Amiga.

Quote

sdl is very fast, it convert any bitmap format to screen bitmap format.
if somebody want write a game for amiga RTG, he must write code for do this.P96 or CGX functions are not so fast, because i test what happen when i use instead of SDL blit operations the CGX functions direct.was slower seem CGX do also have more calling overhead.a simple 1 pixel blit was slower in P96 too


Are you talking about real Amiga with real CGX/P96 drivers or WinUAE p96 driver that draws all the stuff in memory and later copies the graphics to the graphic card? I mean: I don´t believe blitting a rectangle in the screen with SDL on a real Amiga is faster than copying it using real blitter with CGX functions. With a CV64/CV3D/Picasso4/AnythingPCI? I seriously doubt it. WinUAE results are FAKE because the p96 driver doesn´t act like a real Amiga driver. BTW, I hope you don´t mean you tried to blit a 1pixel x 1pixel bitmap with p96, that would be useless and ridiculous... why would you want to do that? use 8x8 or 16x16 at least.

Quote

and when you write a game that run on RTG you have of course no copper or can do some display tricks smooth scroll etc.


You can use ScrollVPort() to change the base address of the screen even with RTG cards, and you can also design your game to maximize the use of rtg blitter and avoid touching the bus as much as you can: load the most (recently) used graphics in graphics memory and use blitter to draw backgrounds and so on.

you can also keep a copy of the graphics in fastram to avoid reading and just compose the parts you need and update only the parts with transparent graphics on top. If that sounded problematic you could use MMU to mark what parts you need to transfer and which ones you don´t.

If we talk about 3D games you should simply use Warp3D or OpenGL and avoid software rendering. And if we talk about games using 3d card you could use it for 2d stuff too: Kas1e and Karlos have done that, the former with his mag and the later with his small apps.

Classic Amiga results != WinUAE results
The only spanish amiga news web page/club: Club de Usuarios de Amiga de Zaragoza (CUAZ)
 

Offline Crumb

  • Hero Member
  • *****
  • Join Date: Mar 2002
  • Posts: 1786
  • Country: 00
    • Show only replies by Crumb
    • http://cuaz.sourceforge.net
Re: Curse of the SDL
« Reply #53 on: August 09, 2011, 08:29:13 PM »
Quote from: bernd_afa;653796
>The problem is coding 2d games using graphic card as a big framebuffer instead of taking >advantage of accelerated blitting and scrolling. And the problem for modern games is >that you could be using Warp3D to move 2D images using hardware resources instead of >transfering one dozen of megabytes per second. Just upload your gfx to RTG ram >configured as textures and move them using Warp3D instead of cpu: you'll reduce bus >bandwitch required to move the gfx and will require a less powerful cpu

thats theory, who have a fast RTG system that is able to use warp3d ?


Anyone who has a Mediator for example.

Quote

when you use SDL 3D Games then all can do with GFX card.but when 3d games are written for SDl, PC have speed at 500 MHZ and more and much faster GFX bus and no limit of 256 Pixel texture size of Voodoo 3.


Quake2&Wipeout run fine on my A4000. For 2D stuff 256x256 tiles are not a problem.

Quote

wawa have work much to port some usable 3D games to classic.but the 256 pixel texture limit was the problem in voodoo 3 and the limit mem in compare to modern systems, because every game use a background texture of screen resolution.this mean at least 640*480.


With all my respect to wawa, recompiling pc games is not the same as developing native ones designed to run on Classic Amigas with Warp3D or MiniGL.

Quote

and last very few users own a voodoo 3.most users have a GFX card with only 2 or 4 megabyte of RAM.thats too few


Most of Mediator/GREX/Prometheus users have Voodoo3 with 16MB. That´s enough to make good games.

Quote

any help is welcome to make this games playable on a classic.in amiblitz you can write asm code and some routines are asm optimized.but if the GFX bus can not transfer more data is the main problem


If you want to have good results on classics you can´t simply treat them as a PC even if you use a RTG card: you have to design your engine to avoid copying to graphics mem as much as you can, just load the most used graphics at the beginning and transfer through the bus the least used and smaller ones. WinUAE probably won´t give you the right impression about the real bottlenecks.
The only spanish amiga news web page/club: Club de Usuarios de Amiga de Zaragoza (CUAZ)
 

Offline utri007Topic starter

Re: Curse of the SDL
« Reply #54 on: August 09, 2011, 11:50:11 PM »
SDLquake is surpizenly fast

060/66mhz/RTG
With same colordepth and screen size clickboom's quake is 2,5fps faster

040/40mhz/AGA
Clickboom's quake is more than 3fps faster, actually clickboom's quake is almost as fast than SDLquake 060 8,5fps/9,1fps

On 060 both are playable with a little patience, but on 040 system 3fps is difference between totally unplayable and playable.

So when will SDL Netsurf support amiga fonts and 8bit screens??
« Last Edit: August 09, 2011, 11:52:18 PM by utri007 »
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline utri007Topic starter

Re: Curse of the SDL
« Reply #55 on: August 10, 2011, 11:22:27 AM »
Conclusion:

SDLquake is 37%-22% less speedy than clickboom's quake

Such a low spec machines every frame is important. Good result any way, I would ques that it is much more worse.
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline matthey

  • Hero Member
  • *****
  • Join Date: Aug 2007
  • Posts: 1294
    • Show only replies by matthey
Re: Curse of the SDL
« Reply #56 on: August 10, 2011, 07:55:45 PM »
Quote from: utri007;653920
Conclusion:

SDLquake is 37%-22% less speedy than clickboom's quake


With or without hardware Warp3D support? Since Bernd's version of SDL uses StormMesa->Warp3D, that could make a huge difference. The CPU and gfx card could also make a large difference to the percentage. It would be more useful information to post your specs and settings with the results.

Quote

Such a low spec machines every frame is important. Good result any way, I would ques that it is much more worse.


Yea, a couple of frames per second difference is a lot when below 15 fps. There are plenty of possibilities for speed up of that amount. CyberPatcher type "missing" instruction patches can be valuable on 68040 and 68060 and CopyMem and other system patches and enhancements can help with 2D or 3D. For Warp3D hardware acceleration, there is faster 68k enhanced Warp3D libraries (originals are poorly optimized) and setting the Queue size larger in indirect mode (default with StormMesa and SDL I believe) with an environmental variable can help significantly. QuakeGL/BlitzQuake in 640x480x16 runs at good speed once the textures are cached on my 060@75MHz Amiga. The slow Mediator bus speed isn't as much of an issue then. Fast games are certainly possible at 640x480x16 on high end Amigas but usually require some attention to optimizing and most Amiga compilers don't generate very optimal code.
 

Offline utri007Topic starter

Re: Curse of the SDL
« Reply #57 on: August 10, 2011, 09:19:14 PM »
Clickboom's quake doesn't do warp3d. I belive that with warp 3d support result would similar, ie. sldquake / glquake

It is 060 version, it much faster than original exe with 040 also.

Bern is author of SDL version of Netdurf, so in this case 3d tests are useless.

Maybe 80% todays classic amigas has at least 030 and 64mb ram? Maybe 50% has 040/060 with at least 64mb ram? 40% has a somekind of RTG card? 20% has a mediator or similar with at least 8mb ram on their garphics card?
« Last Edit: August 10, 2011, 09:24:22 PM by utri007 »
ACube Sam 440ep Flex 800mhz, 1gb ram and 240gb hd and OS4.1FE
A1200 Micronic tower, OS3.9, Apollo 060 66mhz, xPert Merlin, Delfina Lite and Micronic Scandy, 500Gb hd, 66mb ram, DVD-burner and WLAN.
A1200 desktop, OS3.9, Blizzard 060 66mhz, 66mb ram, Ide Fix Express with 160Gb HD and WLAN
A500 OS2.1, GVP+HD8 with 4mb ram, 1mb chip ram and 4gb HD
Commodore CDTV KS3.1, 1mb chip, 4mb fast ram and IDE HD
 

Offline itix

  • Hero Member
  • *****
  • Join Date: Oct 2002
  • Posts: 2380
    • Show only replies by itix
Re: Curse of the SDL
« Reply #58 on: August 10, 2011, 11:07:35 PM »
Quote from: bernd_afa;653790

today OS use 3D features of GFX Card for that.


Is it a problem? There are 3D gfx cards for Amiga.
My Amigas: A500, Mac Mini and PowerBook
 

Offline commodorejohn

  • Hero Member
  • *****
  • Join Date: Mar 2010
  • Posts: 3165
    • Show only replies by commodorejohn
    • http://www.commodorejohn.com
Re: Curse of the SDL
« Reply #59 from previous page: August 10, 2011, 11:17:03 PM »
Yeah, but how many people have one? I didn't even have an RTG card until fairly recently.
Computers: Amiga 1200, DEC VAXStation 4000/60, DEC MicroPDP-11/73
Synthesizers: Roland JX-10/MT-32/D-10, Oberheim Matrix-6, Yamaha DX7/FB-01, Korg MS-20 Mini, Ensoniq Mirage/SQ-80, Sequential Circuits Prophet-600, Hohner String Performer

"\'Legacy code\' often differs from its suggested alternative by actually working and scaling." - Bjarne Stroustrup