I think it’s high time to address the elephant in the room. Yes, GDEMU has been cloned. The clone is not perfect, it does work but not without issues and can’t have the FW upgraded.

And you know what, turns out it is – after all – my fault that it got cloned. The reason being I made my devices too affordable and picked common off-the-shelf parts with not enough security. I looked at the prices of other similar projects and figured I can make mine cheaper since it didn’t make sense to me that the ODE costs twice what the console does. Turns out that was a huge mistake, too many would rather stuff the cloner’s pockets and claim it’s competition. And best of all I’m the one being called money pinching piracy enabler – might as well play the part. Why should I care how many can afford my devices? If I price them at over 200 Euros I will get less orders but still the same profit. That’s less work for me too. Clearly I need to rethink what I’m doing here.

So, there will be changes. Let’s start with the rules – mentioning or discussing the clones is fair enough but posting links to ebay or sales pages is not. Don’t do it. Also, commenting only to say that you want a clone or got one and it works great? That’s trolling (not even very creative) and wasn’t allowed anyway but I mostly turned a blind eye so far. Too much, I suppose.

As for new projects – I will use more expensive parts now. I’m experimenting with clone-resistant code, and new ideas in general, and DocBrown is going to be the first device to test some of those. That’s why the menu software isn’t ready yet – or actually, it is, but I’m going to release it along with newer FW and not any sooner.

The PCE ODE will require a major redesign though, I’ve put too much time into it to just see it cloned right away. I was too obsessed with cost cutting and frankly I don’t care if I only sell 5 of these by the time I’m done. This was a hobby project I had hoped would be useful for other people as well and initially I only wanted to make just a bunch for some guys I know.

TL;DR: Enjoy your cheap SEGA CD ODE “competition”. Oh wait…


Motherboard, contd.

Pretty please don’t start or fuel flame wars in the comments. Accept that there are people with different views than yours, and/or trolls, and move on. I really don’t have time to moderate so when/if I get another complaint about it, I will not be merciful.

I’m about done shipping Rheas so GDEMU orders will open this Saturday. Which brings us to another issue – it seems some of you think it’s acceptable to send multiple orders “just to be sure you get one”. While that might work, what it also does is flood me with bogus duplicates and blocks other people from ordering since I close earlier. Then I have more work compiling the list and removing these duplicates – and some of them I miss. Then I expect to be paid but these requests are ignored and have to wait 7 days to time out, slowing everything down.
Don’t do that please because I’m annoyed to a point where I might start removing such orders completly as a punitive action. Nobody wants that.

With that out of the way, here’re some results of synthetic benchmarks of the 486 Marty. Keep in mind this is a CPU-heavy code and typical games will be more memory bound. Then again a 386 has to fetch each instruction from RAM to execute it while the cache on 486 allow it to fully utilize the memory bus for actual data transfers. It makes a huge difference.

Time (m:ss.ds)
Marty FMTg3 Marty (486) Marty (486, cache) Marty (486×2, cache)
1:05.84 1:06.04 0:45.46 0:29.86 0:17.82

As you can see CPU-heavy code clock for clock is considerably faster on 486, and with cache enabled the system gets twice as fast. With clock doubler enabled you get almost another such speedup but beware, Marty chipset doesn’t deal well with so fast CPU. It’s difficult to get things working. That being said remember the clock-doubled variants of the 486SLC have 8kB of cache rather than 1kB that Cyrix originally used – that too is a very good reason to be looking for x2 CPU.

Now some memory-bound loops (you can compare the results with my previous post below):

Marty (486) Marty (486, cache) Marty (486×2, cache)
Read (ms) Write (ms) Read (ms) Write (ms) Read (ms) Write (ms)
BYTE 15170 9980 14880 9505 12195 4785
WORD 7590 5000 7465 4770 6125 2405
DWORD 5010 3170 4930 3040 4270 2400


UPDATE: GDEMU orders are open closed. If you didn’t get it there will be another batch very soon.

UPDATE 2: There will be another opportunity to order GDEMU this Saturday, same time as before. With two back-to-back ordering windows the crazy rush hour should not happen – that’s the idea, anyway. That’s done.


First, to answer the #1 question popping up in comments after each ordering window closes – yes, there will be more devices available in near future (several weeks). So if you missed it this time just try again later.

Now, I belive I promised some nudes a while ago and today I finally had the time to deliver. This is for those who actually appreciate all the R&D and testing work I put into my devices.

Step 1 – research and secure suitable replacements. The one on the left I bought in unknown condition, the right one was gifted to me. Obviously I’m going to try the faster one first 🙂

Step 2 – disassemble Marty, locate the original CPU. The hard part is actually keeping track of all the screws, I like to put them back in the exact place I removed them from. Marty can have either Intel or AMD 386SX in it, I think AMD was more common since it used smaller process and run cooler with less power. At the very least the Intel one is a low power variant.

Step 3 – remove original CPU. Don’t inhale the flux smoke, label says it causes death or worse. BTW be careful not to short or overheat your CMOS/RTC battery. I have mine replaced with a holder.

Step 4 – retire old CPU. Don’t discard it in case the new one is dead or damaged. This is also why I had 2 to choose from (and a backup solution in form of an AMD 386SX on an old PC board).

Step 5 – so far so good, clean the pads. This is the most stressful step for me as it can be very easy to rip pads/traces on these older PCBs if you’re not careful.

Step 6  – solder the new CPU in, enjoy your 486SX2 Marty.

Do note that the CPU says 50 (as in, 25×2) but the actual clock is what the crystal generator next to CPU provides (32/2=16). So it’s actually 16MHz CPU still but when you enable the internal clock multiplier it will be 32MHz. And this is really the only way of doing it unless you replace the generator too – but then you’ll have problems with the rest of the mobo being overclocked, which it might not like.

Also, the clock multiplier and internal cache is disabled after reset (in order not to cause any compatibility issues) and has to be enabled by software. Which Marty BIOS won’t do, obviously. So you only get a small boost from 486 advanced pipeline but you’ll still be limited by the clock and memory bus. Game images have to be modified to include a small program to be run before the actual game executable – and that will be easier with ODE, obviously.

Null Sheen

Phoebe batch is almost done, sorry for the delay but I run out of bubble wrap and ordered a new roll but it got lost somewhere, I had to order yet another one and wait for it to arrive. On top of that my weekends are quite busy now.

I’m going to take orders for Rhea on Thursday, it’s a free day here. Gives me opportunity to unload the Saturday a bit. Sorry the last batch got sold out in minutes, I really have no idea why, it was actually bigger than usual. I try to plan these things well in advance and with such crazy ups and downs it’s quite difficult to balance the production.

In other news, I’m looking for 386 owners, early Intel pre-D1 stepping. I don’t think AMD ever made those due to Intel lawsuit but if you do have such AMD chip I’m interested in it as well. Basically I’m trying to verify if my CPU bug detection code actually works on other stuff than POPA (which is common even in AMD processors) so I need a known defective CPU to test on. I will ask you to run some DOS executables I prepared and report the results. I can make the tests run headless, booting from a floppy and write the result to a file – that’s in case you don’t have a working monitor or it’s a laptop with dead LCD/backlight.

You can test what stepping your 386 is by running NSSI from here: (boot your system without EMM386). Value of 8 is D1 (for AMD it’s reported as B but it’s actually a clone of Intel D1). Do note FM-Towns machines can’t run that program (and most of PC DOS stuff actually) and Gen3+ are D1 anyway, though perhaps the very first Towns is actually using something older.

Anyway, if you have an old 386 and would like to help out please leave a comment. AMD 40MHz owners need not apply – these things are too new 🙂

UPDATE: Orders open closed.


I’m pretty much done shipping GDEMUs and so now Phoebe is in full swing. Time to plan ahead.

I would like to start the DocBrown batch but it seems there has been a lot of interest in my ODEs lately and I agree it would be unfair if a small batch was sold out in seconds, only to be resold for profit. There’s nothing wrong with that in general but if the actual Marty owners can’t get DocBrown at all then what point is there in me setting a fixed price.

So… I will open orders for DocBrown on Saturday but with a twist. Once you place the order I will contact you and demand a proof of Marty ownership. To make it simple – every Marty has a serial number sticker in the SRAM card bay area. Make a legible photo of that, that’s all. If, for some reason, your Marty has lost that sticker we will work something out – dont’ worry.

This will make sure actual owners get the ODE and if there is still interest I will just make another batch for anyone to buy, that’s in case you’re planning on getting Marty but don’t have it just yet. I think that’s fair and also I can make the batch smaller or bigger if needed. So this will be a true preorder since I don’t have the PCBs ready yet.

Oh and to make this clear, if you try to order DocBrown but can’t provide the proof I need I will remove you from the list. And if there are a lot of such entries I will think of some sort of punitive action – you were warned. I want this to be a nice, slow-paced preorder for once.

Sleep Paralysis

GDEMUs required to complete the current batch are almost ready but still need to be cleaned, inspected, programmed and tested. And packed. And shipped. Which is a lot of work that people just never even think of when they say “manufacture it somewhere”. Point here is however the next week will have two national holidays and I will take the rest off to recharge a bit. So not much, if any, work will be done in that time.

But, I could perhaps at least prepare the list for Phoebe so orders will open on Saturday. As to actual shipping… we’ll see. I don’t want to mix both GDEMU and Phoebe since there is a risk I’ll mess it up, and at the same time I want to get both out the door ASAP. Usually the problem is people paying later than 24hrs after I ask for money since I try to ship the next business day. So if I do decide to mix both ODEs I will treat all “late” payments as 2nd class and delay the shipping to combine it with the correct devices. This lowers the likehood of a mistake on my side and gives you some motivation to check your email/PayPal more often. Either way you still get the 7-day payment window as before, that doesn’t change.

All early DocBrowns were shipped long time ago, please stop asking about those. The first normal batch is planned for late May. Menu software, the beta at least, is almost ready too so it’ll be a good time to release it.

Forsaken Well

All Rheas have been shipped so it’s time for that small GDEMU run. I will open orders, as usual, on Saturday. As promised I will try to better match the time to USA west coast. If my calculations are correct you should be able get up at 8 and still have time for shower and breakfast. I’m not making it USA exclusive but I do reserve the right to reject other orders.

Also, people, the “Name” field in the ordering form? It’s for your name. Preferably it should match the Paypal one, it makes my life easier. I’m not selling your personal info on the side to Facebook or Google (or anyone else for that matter), I’m not that evil. Besides Paypal probably already did that long ago 🙂

Now, I wanted to explain a few things regarding FM Towns Marty because it gets a lot of flak from uninformed people. Some even actually own the console and still repeat that BS anyway…

First thing is the Marty CPU. The 386 “haha, slow piece of shit” SX. Well, I now have a working generation 3 Towns tower and have run some actual tests to compare. Here are the RAM read and write results, done for 8, 16 and 32-bits access patterns:

Marty FMTg3
Read (ms) Write (ms) Read (ms) Write (ms)
BYTE 17170 12315 21600 12155
WORD 8590 6170 10810 6080
DWORD 5565 3140 5410 3050

Noticed something? Write is faster than read – that’s curious but not that uncommon, depends on any extra cycles that have to be added to meet setup and hold times to make things reliable. Plus the tests aren’t identical. But the real shocker is how Marty is actually way faster at 8- and 16-bit reads, and pretty much matches 32-bit ones even with it’s reduced 16-bit bus. How is that possible if the tower has a 386DX CPU running at the same clock speed?

The answer is actually simple – wait states. Now this is a bit of my speculation but back in ’88 or so, when Towns was close to release, DRAM was still slow and expensive. And much like today the faster you went, the more it cost. So first generation Towns had a slow RAM that required 3 wait states to work, and my guess is that setting was left for gen 2 and gen 3 to keep things at the same speed and not break any compatibility. The CPU was the same anyway.

Marty was released after gen 3, along with generation 4 and the new U-models that had the monitor integrated in the case. These too were 386SX based. By that time though DRAM was considerably faster and so it’s running with zero wait states, basically removing that SX half-width data bus penalty. “Wait,” you might say, “wouldn’t optimized software deal mostly with 32-bits anyway?” – and that is faster on the DX, if not by much. Plus what about VRAM? Well, I’ve run some more tests:

Marty FMTg3
BYTE 15090 23625
WORD 7560 11815
DWORD 7550 5920
FONT 367450 383870

These are VRAM writes, and the last test is font rendering (again measured in ms). As you can see Marty is way faster except for 32-bits – which is now exactly the same speed as 16-bits due to CPU having to split each access into two and no clever optimizations for that taking place. So only very optimized 32-bit block copy routines will be faster on the 386DX. But hey, that’s probably what games mostly use, right? Perhaps, but 386 doesn’t have any cache memory (not counting TLB) and you still need to actually run the program, and x86 code is messy. Which means every instruction is RAM read, often more than one if the fetch is not power-of-two bytes long, or longer than 4 bytes, or unaligned. At which point Marty will pull ahead and indeed the font test was faster on the SX-based system.

So, TL;DR is Marty has it’s issues but slow CPU is not one of them.

By the way, there is a program that can change the wait states on gen 1-3 Towns, though keep in mind the actual slow RAM is still there, you can’t reduce it by much and expect the system to still work. As a rule of thumb you can go one less wait state with each generation, so my unit can actually go to zero and still seems to be stable. I’ve tested that setting too and, except 32-bits, RAM reads are still slower than Marty. But with writes getting a bit faster and 32-bits too, the font test is now clearly won by the tower. Starting with generation 4 there is also a FAST mode, basically zero wait state mode guaranteed stable by manufacturer. Though to be frank if the 386 isn’t cutting it for a game you want to play, neither FAST mode nor a 486SX will help. You need a DX2 or Pentium based machine.


UPDATE: GDEMU orders were open what, 3 minutes, and everything went. In fact it’s possible some of you will have to wait a bit more since I might have oversold a bit – this was a small batch after all.