Makaron first test version !!!


Staff member
1) Minimum requirements

* Pentium 2 or compatible

* Graphics card with full SM 1.0 support (VS 1.1 & PS 1.4)

* Windows XP SP2 / 32-bit

* DirectX 9.0c

* 256MB of free RAM

* 25MB of free hard disk space

Note that these are merely prerequisites to run the executable at all. Some CPU architectures are better suited to run Makaron then others; right now Core2 seems to outperform other designs.

Makaron should run just fine on Windows 2000 SP4. Windows 9x/ME, Vista or 64-bit operating systems have not been tested.

To actually use Makaron you'll also need:

* Sets of Dreamcast ROM image files

* DirectX-compatible gamepad

Any gamepad will do, but unless it has at least a directional pad, one analog stick and 7 buttons, you will not be able to map all of Dreamcast controller functions.

You will need three sets of ROM files (BIOS & FLASH), one for each respective region: Asia (JP), Americas (USA) and Europe/Australia (EU).

Put the files in the ROM folder. You can try and substitute files you have for the ones you do not, but remember this might not work.

- "BIOS_JP.bin" & "FLASH_JP.bin" pair: BIOS revison 1.004

- "BIOS_USA.bin" & "FLASH_USA.bin" pair: BIOS revision 1.01d

- "BIOS_EU.bin" & "FLASH_EU.bin" pair: BIOS revision 1.01d

USA & EU BIOS files seem to be exactly the same. Proper FLASH files are very important, as many so-called USA/JP ones are just EU hacks. Dreamcast stores user preferences in the FLASH area, along with last valid RTC settings. Most emulators therefore overwrite those files with updated values. You can suspect your FLASH file is invalid/damaged when:

- NTSC BIOS (orange swirl logo) sets 50Hz refresh rate, instead of 60Hz

- You are being asked to set up current date/time every time you run emulator

- BIOS does not boot GDI images specified for that region

Get it here :

I'll add it soon in the emulation section

Source :
Some news :)

I'm not going to rant about how people don't appreciate my hard work, but I do have to say this: You can't have perfect emulation of Dreamcast 3D system so stop bugging me about it.

Most of you simply don't care, but to those that do I will now explain some more PowerVR technical mambo-jumbo. Get your popcorn :)

One of the most interesting features of Dreamcast 3D chip is the ability to handle Order Independent Translucency, OIT in short.

Note: I'm not that fond of the word 'translucent'. I often misspell it as well. See this OpenGL explanation to understand difference between transparency and translucency better.

As a rule of thumb assume that transparency is when surface has parts either fully opaque or fully transparent, like wall with holes, and translucency is when there are parts not fully transparent but not completly opaque either, like tinted glass. This is only important because transparent objects can be drawn using Z-buffer and alpha-testing, which is faster than fully blending translucent objects.

Full WIP :
Here is Makaron Test 9 for your pleasure. There are lots of internal changes, but nothing revolutionary - so don't expect it to be much better/faster compared to earlier versions. From user point of view, it's almost the same as T8. Quite frankly the only reason I'm releasing it is to test some new stuff inside. For example, it's only thanks to user input that I found the NVidia FX series cards bug so fast (and actually it affected all cards, just that FX couldn't cope with it at all).

There are also people out there who simply have to test anything new that is released, because they love emulating stuff. So this is like a small gift for them, to enjoy for few moments before the novelty wears off :)

Like I said, there are tons of small (and not so small) internal changes to the emulation engine. Some of this stuff is so new it wasn't even tested much yet, so expect bugs. If you find a game that doesn't work now and it used to, please drop me a note - I'd like to find and fix the regressions first.

I won't go into much detail, but here's a list of things I consider interesting enough to explain a bit:

Dynamic Z-buffer range compression

This is a new method of dealing with overblown Z/W values. Most of the work is done in vertex shader so there should be no noticable speed impact. I mean, if there is then your graphics card was too slow to begin with and this is just another drop in the bucket.

Now I can handle geometry more like PVR2 does, which is good because this allows proper shadow casting. Very much like NANs, infinities are now detected and handled CPU-side - so far it appears to work as expected. All this and no Z-precision issuses, not that I'm aware of at least. Unless there's a game out there making a real use of 32-bit floating point HDR in Z-buffer this might just be THE solution :)

Note: There are games that still do not render properly due to other bugs, also this does nothing to cure transparency/ordering problems.

Shader Model 2 is now default

Makaron will now use VS 2.0 and PS 2.x (x being 0, a or b - where available), and fall back to 1.1/1.4 if it has to. What's more, I might be dropping SM1 support sometime in future. There are so many problems with it... I've had VS 1.1 break geometry which VS 2.0 handled just fine. And let me remind you again that palletized textures filtering is disabled on PS 1.4 beacuse it's too primitive for that kind of processing.

It's also about features that older cards do not have - like multiple render targets, or floating-point type surfaces. The Z compression code is considerably shorter compiled for 2.0 profile than it is for 1.1 by the way. Funny thing though, even if SM3 code is shorter it actually executes slower on most cards. That and the bugs I found in the drivers made me choose SM2 as the best perfomer.

Texture caching fixed

At least I hope it is :) Makaron MT version should no longer crash so much or trash textures. That does mean the single-threaded version will be a bit slower though - it's a tradeoff I've made to allow for proper locking. Some bugs still remain, mostly to be seen in Soul Calibur, but that's another story.

Shadows now work

Well, most of the time, and so are enabled by default. There are several ways it can be done - so far I was unable to come up with one method capable of handling all cases. Maybe there isn't one... Well, for now you can switch between different algorithms - you'll need to do that for Crazy Taxi series at least.

You really should be using multiple-core system for Makaron, mind you - this is the target PC I'm aiming for. SH4 speed is very important, but once you can do rendering in parallel most games will happily run full-speed on as little as 70-100MIPS. Seeing as AthlonXP clocked at 2000MHz is just below the required minimum, I'd say any mid-level X2 or C2D system will do fine.

The known bugs you will surely ecounter are mostly in AICA (sound module) code. The volume levels are still wrong - not sure why, I made the tables up to the specs. And yet PCM range often exceeds 16-bit, causing major distortions even if clipped. Also, ARM speed has been reduced to 1.5MIPS - this should make Soul Reaver happy. This is not exactly correct either, and will probably break some other games... I'll keep looking for a better solution.

As usuall, if there are any silly-yet-critical bugs discovered, I'll fix them right away. Other ones will have to wait for next "major" release :p

WARNING! Be careful not to overwrite your VMU or INI files when moving to T9!

Source :

Download :
There's a special today - a frontend to Makaron donated by slrhui - you can get it here. Please contact the author about it should you need any changes done. And be sure to thank him if you find it usefull.

Here's Makaron Test 9/1. The main purpose of this release it to fix some issues T9 had, but there are other changes as well.

Firstly there's the new AEG code in AICA - not entierly correct mind you, but it will get better in time. I belive I've explained it enough before but just to be sure: It makes AICA module somewhat slower. Nothing is free you know. It should be offset by ARM7 code being recompiled this time.

Second major change is the addition of fog processing. You will need at least Pixel Shader 2.0 for this to work, and it better be fast (worst case scenario, that is palletized & filtered texture with fog and color clamping, is 9 textures lookups + some 50 other instructions per pixel).

This also causes Makaron to lag a bit at startup now, as it has to recreate some 200 PS programs to cover all possible cases.

I tried not to touch SH4 code much, but I did change how HOLLY handles DMA transfers. This might break quite a number of things but was necessary to fix couple of games. Mostly CAPCOM ones, go figure. Some people out there should really learn how to use DMA... There are games that start the DMA and assume it's going to finish before the program advances to the point where it has to use the transferred data - without actually checking that. The easiest way around this problem is to complete the transfers the moment they are started - but of course there are other games that get confused by immediate end-of-transfer interrupt, or miss it, and hang. Yet other games require that the transfer at least advances a bit once started, or the unchaged counter will make them think it's already done. All this is also very timing-related, might work or not depending how fast the emulator goes and when the interrupts actually arrive. Not funny.

I solved this by forcing DMA transfers to take time to finish - just like on the real hardware. The difference is a DMA in progress will slow SH4 (because it's blocking memory bus or HOLLY) and Makaron doesn't account for that. Not to mention I can't exactly check for interrupts every instruction, like SH4, as this would kill performance. I came up with timings that should work well on both slow and fast systems - but it might still need some tweaking.

As a side effect you now get to experience loading times. Just like on your good old Dreamcast. Yay! :) So be patient when staring at blank or "Please wait" / "Now loading" screens. I know this feature will not get good press but I like it. So it stays :)

By the way, fixes to DMA engine (although not timing-related) made "Soul Calibur" and "Dead or Alive 2" dialogs re-appear.

Emulation speed/statistics information is no longer displayed. If you want it, re-enable it in F12 menu.

On a special request from Yuki I've looked into MakaronPAD plugin. It is now possible to assign normal digital buttons to POV directional pad. The plugin version has been bumped up - not a big deal, but it won't work in T8/T9 unless you hex-edit it. You shouldn't be using those anymore :)

Enough Makaron for this year. Silmeria still needs to be rescued and I want some strong monsters to test out triple Nibelung Valesti combo (Hrist->Lenneth->Alicia) :]

Download :
I think I've finally got the DMA code working. Well, for me at least :) It needs to be tested further on variety of hardware - and that's where you people come in. Expect T10 soon.

Some loose thoughts I feel like voicing:

1) T10 might be a bit slower than T9 series. It'll most likely affect only low-end systems as there isn't really much of a difference (if any) on my E6600.

2) WinCE games usually crash when emulation speed drops below certain treshold. In other words, if you got fast system you should get stable performance.

3) Due to changes in GD-DMA code loading times are back. It's considered normal behaviour since this is how Dreamcast works. Thanks to those changes compatibility has improved and following titles should now boot and work:

- all Dream Preview discs

- original MIL-CDs

- Street Fighter Zero 3

- SEGA Tetris Online

- Tetris 4D

4) CD-DA (audio tracks) will play, but still use the older method of fetching data. This might cause Makaron to crash but it's very unlikely as data reads and playing audio are mutualy exclusive tasks.

5) There are some minor changes in full-screen setup code (the debug window will be hidden and not forcibly refreshed). No 16:x aspect ratios yet.

6) Changes to sorting/drawing code broke shadows in Virtua Fighter 3tb. I'm not planning on fixing that anytime soon though, as it would break many other things. Late T9 versions have this problem too, by the way.

7) Makaron now disables screen saver when run. It's only going to be a problem if it crashes, as it might not re-enable it on exit. Just so you know.

8) If you manually enable MMU the recompiler will not switch to address translation mode until it's actually requested, so there's no speed penalty in BIOS and most games. Some however (like Ikaruga) use only partial translation and this can be emulated without full-blown MMU support. It'll work either way but will be a lot slower with MMU enabled. Some WinCE games are automatically recognized (this works only for GD images) and MMU will be turned on when necessary. In short: keep it off unless Makaron complains about it.

UPDATE: Few more notes:

There were some last-minute cleanups in the code, I hope I didn't break anything :)

MT version is the one I actively develp, the other is just dumbed down not to support threading. Not tested much so your mileage may vary.

As always, make sure you backup your own INI files if you want to keep them. For GDROM.ini though you should comment out the GDMT setting, or choose one of the following:

-1 is immediate mode. This will block emulator and allow the read to complete. In short: worst performance, but should always work. This is also the default mode for non-MT version.

0 is deffered mode. The read still blocks, just not right away but rather outside SH4 main loop. It might provide smoother emulation (if it works at all :)

1 is threaded mode. Disk reads are scheduled to separate thread for another core/CPU to take care of. Best speed, smooth emulation, should now work with every game. This is the default for MT version.

Threaded mode can't be selected for non-MT version of Makaron - deffered method will be used instead. This limitation was introduced on purpose, and might be lifted in future. Note that unless you have multiple cores/CPUs it will work just like deffered mode anyway.

I'd also like to remind you that there's a frontend to Makaron called mkfro. Highly recommended for people who can't work my INI files.

Anyway, click here to download Makaron T10.

UPDATE2: If you experience random crashes while in-game movies play (or are about to start), or from time to time CD/GD image refuses to boot (but works most of the time) - report this. Give me the title and your PC specs.

Source :
T9/4 and T10 were rather unstable but this time around I'm more happy with both GD and DMA code. It's not just bugfixes though, there are several new features in this version:

- support for VMU sounds

- improved Z-buffering

- fully functional DSP

- experimental anisotropic filtering

DSP is enabled by default. It might slow down things a bit, though (as usual) if you have a fast C2D you won't notice it. I'm really considering running whole AICA on separate thread now by the way, so it should improve in future for multi-core systems.

Please note that there's a slight slowdown noticable (in audio) when sequenced music is being played, in all Makaron versions released so far. This is sort of design flaw (and due to rather demanding hardware setup) and will be someday corrected.

Anisotropic filtering is too enabled by default, to 8x - it will be scaled down if your card can't support such mode. This will only be a problem for those cheap cards that support AFx8 but are very slow at it, in this case you might get quite a performance drop. If this becomes an issuse I'll tell you how to disable AF :)

Download :

Source :
New version awaits you on SendSpace :)

This time the package includes NAOMI emulator as well. And I've modified the code a bit, let's hope this will make the Data Execution Prevention exception go away.

Both executables can now reside in the same directory, but because of that there are some minor changes:

* Dreamcast BIOS/FLASH filenames must now start with Dreamcast_ prefix.

* NAOMI BIOS filenames must start with NAOMI_ prefix.

* The main configuration file for NAOMI emulator is now called NAOMI.ini

And yes, you still need to extract and decrypt any NAOMI games you wish to run from the GDI image. It's also possible to extract them from CHD files.

Remember to install the runtime libraries for MSVC 2008 SP1 if you get those silly "not installed correctly" errors.

UPDATE: It seems I forgot to put the newly compiled Makaron executable into the package. Sorry :)

Redownload, I've updated the link. Also, if you add "aniso = 0" to the Settings section it should disable anisotropic filtering. Not really tested.

Download :

Source :
NAOMI Test 12/2 is here.

This is just a few tweaks and changes added to the old T12 core - I'm still working on new version and that's not yet ready. The reason I'm releasing T12/2 is the addition of code, written by Andreas Naive, that allows run-time M2/M3 decryption of NAOMI carts without having to rely on trojaned out protection data.

Once the game key is obtained for a given cart - and this is done with another trojan and some smart analysis (Andreas approach) or brute forcing (cough) - all data can be derived directly from the encrypted parts.

I've added a simple ZIP handler and now you can load some of MAME games:

"Capcom vs. SNK", "Cosmic Smash", "Gun Spike" / "Cannon Spike", "Dead or Alive 2" / "Dead or Alive 2 Millenium", "Giga Wing 2", "Giant Gram 2000", "Heavy Metal Geomatrix", "Marvel vs Capcom 2", "Moero Justice Gakuen" / "Project Justice", "Power Stone", "Power Stone 2", "Toy Figher", "Virtua Tennis", "WWF Royal Rumble".

More MAME images will be supported in future.

Some titles still need the protection data to be present because M1 and compressed M2/M3 variants are not yet supported by the decoder. You will get a nice error message if any required files are missing

Oh, the decoder works only for MAME images at this point. The plain images will need some game detection code to properly set the keys.

UPDATE: Yup, apparently Sendspace guys don't like Makaron. Or emulators in general. They deleted the file citing terms of use violation. I will upload T12/2 to another place but this gives me opportunity to add support for a few more MAME images so please wait a bit.

UPDATE2: Updated version is now available.

- "Toy Fighter" off-by-one bug fixed

- "Giant Gram 2000" will now load (but won't work due to missing M1 data)

- "Virtua NBA" added (though the "virnbao" version will not work, this one seems protected?)

- "Samba De Amigo" added (I'm not saying it's playable mind you)

- "Guilty Gear X" _would_ work if not for a truncated protection file (but here's a hint, unpack, add zeros to the file to match required length and pack it again and it will work now)

- "Dead or Alive 2 Millenium" will now properly load parent ROM (same goes for other games with variants)

- "18 Wheeler" added (not tested)

- "Crazy Taxi" added (not tested)

- "Death Crimson OX" added

Source :