AGAR 1.1.10

Hi there,

As I did a bit of cleaning in my garage, I added some new entries to my AGAR database, and I noticed that faults weren’t reloaded when editing an existing pcb : data was correctly saved in the database, but it wasn’t reloaded during the next edition.

It’s a bit annoying as if you resave the data the second time without noticing, you’ll loose the fault content. I’m surprised this bug went unnoticed this long …

Anyway, it’s now fixed, and I also fixed the way the pcb list was sorted after editing a pcb.

Both versions (Win32 and Linux) are available, check the projects tab above to get any of them.

Cheers !

New config files and MC8123 WIP

Happy new year everyone !

 

Regarding configuration files for SegaDecrypt, I decided to give libconfig a go as a replacement for my big clumsy xml file. I went for version 1.5 as the last version (1.6) has some problems preventing it to compile on my dev setup.

Now each set has its own configuration file, as you can see in the following example, extracted from a real set :


//--------------------------------
// Super Hang On Sitdown 317-0039
//--------------------------------

name =  Super Hang On Sitdown;
version =  317-0039;
protection =  FD1094;

program:
{
    files = [
         epr-10857.25, 
         epr-10859.31 
    ];
    key =  317-0039.key;
    size = 0x20000;
};

override:
{
    process_data_manually = true;
    irq_vector_lower_bound = 0x108a;
    irq_vector_upper_bound = 0x108a;
    post_decryption_copy = ( 
        (0x400, 0x1000,  DATA ),
        (0x1A22, 0x20000,  DATA )
    );
};

crc:
{
    type =  outrun ;
    storage_address = 0xFF0;
    start_address = 0x1000;
    initial_block_size = 0x1F000;
};

Almost everything can be overridden, allowing to handle specific cases required for some sets.


Now that the configuration problem is solved, I started working on the MC8123 decryption. The MC8123 is a Z80 with built-in encryption, Program opcodes and data are encrypted differently, which explains why bootleggers used doubled eproms back in the days : one half was used for the decrypted program, the other half for the decrypted data, and the correct addressing was chosen at runtime.

Using the same technique I used to decrypt FD1094 files, I should be able to generate decrypted files for MC8123.

There are some difficulties though :

  • Opcodes operands are considered as data, and they don’t have a fixed size → a pass to check opcode type and operand size has to be done.
  • There are data chunks interleaved with Z80 encrypted code, and unlike FD1094 encrypted code, there are no data markers allowing to know their boundaries → solution will be to consider everything as data first, and then to follow code flow from interrupts start vectors, jumps, branches, etc. in order to get the program code.
  • Previous point has some weaknesses though : some opcodes (like JP (HL) for instance) are supposed to do an unconditional jump, which destination is based on a processor register. Problem is, the register content is set up at runtime, meaning that you can’t know its value without effectively running the code.

Time to get my hands dirty !

New Super Hang On version decrypted

I migrated enough of the FD1094 part of SegaDecrypt to work on the decryption of a freshly released Super Hang On version. It’s the sitdown one (317-0039).

The decrypted set is available as usual at Jammarcade.

I have more sets in the pipeline, but I want first to change the way configuration is handled, as I’m fed up to deal with a big clumsy xml file. A lot of sets use specific code, and moving it to a xml file won’t be easy to maintain. So I’ll move to a plain text per game configuration file, using libconfig.

 

That’s all for now !

Donations and various news

Hello there !

For a long time I’ve been wondering what was the best way to set up a donation system, and I finally chose to go for a Pledgie account, as  you can see on the right of the page 😉 So if you find anything I do useful or interesting, you have a way to show your appreciation 🙂

Regarding current projects, right now I’m converting SegaDecrypt from Ultimate++ to vanilla C++, as a first step implementing what’s new in the latests releases of the language.

As for Saturnin, I finally decided to go for the Apache License 2.0. I’m migrating the GUI to Qt in order to have something more up to date, and using Qt translation system to implement translations.

 

I will try post more often … (who said deja-vu ? :p )

Cheers !

Sega FD1089 decryption

While I was gathering information about how various Sega encryptions worked, it became obvious that some had a lot in common. So I decided to regroup all the decryption routines into the same software, to be able to capitalize on previous work instead of starting from scratch when working on a new decryption.

I just finished adding FD1089A/FD1089B decryption to the software, meaning that I can generate decrypted sets for PCBs using this kind of encryption. So far Aurail is done (sets 317-0167 and 317-0168), and checksums are automatically fixed. You’ll be able to get them from Porchy’s when the sets will be uploaded.
I’ll try to add more decrypted sets when I have some spare time, but if you need one quick just drop me a line 😉

Next step decryption wise will be to move FD1094 decryption code to the new software. After that I’ll have a look at System 24 FD1094 (floppy drive based), and MC8123 (Z80 based, which I’m far from being fluent with :p

Cheers !

Back in business !

Hi there, it’s been a long time 🙂

As my interests evolved, I decided to move the devlog to WordPress, to focus on content : why reinvent the wheel when quality CMS already exist ?
This new version will also talk about arcade stuff (mostly repair oriented), and of course electronics.

Speaking of arcade repair, I take the opportunity to share about a nice little program I wrote.
But first, a little history …

As time goes by, I’m stacking lots of defective arcade games waiting to be repaired, and I’m having hard times keeping track of what is done and/or what is left to do. At first a simple excel file was enough, then I changed for Task Coach, but this one soon have shown its limits.
After desperately looking for the perfect software, I realized it didn’t exist.
So I decided to create it, and AGAR was born :p

What means AGAR ? It stands for Arcade Games Analysis & Repair, and besides it’s almost the name of my favourite Final Fight character 😉

With this software you can :
– create manufacturers (without duplicates)
– create games linked to these manufacturers (without duplicates)
– create pcbs : with the game linked, its type (original, bootleg, conversion), its origin, its location, its state (working, wip, dead, etc.), its faults when they exist, etc.
– for each pcb, you can add analysis and link actions to them (whether completed or not), pictures, signature data, describe faults, etc.
– you can extract analysis/actions listing for every pcb, in text, JSON or XML format

State of pcbs is shown using configurable colours (text and background), so you can check each state visually. You can also filter pcbs display by state and/or faults.

AGAR is perfectly usable as is, but I intend to add some more modules in the future, like (non exhaustive list) :
– purchase management
– note management
– and maybe a little components stockpile management, but don’t count heavily on this one …

Linux and Windows binaries are available, and current version is 1.1.9. Click on “Projects” at the top of the page to get the link to AGAR’s project page on Bitbucket (including download links).

That’s all for now, I hope you’ll find it useful, as for me I’m using it everyday.

Opening soon (sort of :p)

Last months, I’ve been working on Saturnin with one goal : going open source (yay)
So, after spending countless time on it, everything’s done, and I finally moved my sourcecode to BitBucket (I’ll get back to that point another time).

But there’s still one thing to take care of (well amongst others :p), before opening the depot to the public : I need to choose a licence.
Of course, there are constraints :
– the future version will use plug-ins, and I don’t want to force anyone contributing one to provide its sourcecode
– some of the actual code used in Saturnin wasn’t done by myself (the SCSP core is Stef’s for instance, the 68K code is from either Turbo68K or Musashi) … I will put it into separate dlls also, but that must be taken into account
-some other things that I don’t remind now :p

After looking into existing licenses, I think GPL is too restrictive to my point of view, but LGPL could be a good candidate.

As I’m pretty new to that kind of stuff, I’m seeking advice … so If you have anything relevant to say about that, please leave me a comment.

Thanks !

Damn virus …

My dev machine was overwhelmed by a nasty variant of virut … luckily enough I was able to save everything, but the computer had to be reformatted 🙁 Long story short, I’m now using Windows 7 64 bits 🙂

Saturnin works well under 7, I was a bit worried that it wouldn’t, and I migrated it to Visual Studio 2010.
I put aside the DSP for now, as I decided to do the “preparation to open source” migration (ie renaming french comments / variables into english, using boost naming convention for types, documenting headers using Doxygen, etc.)
I’m not far from the end now, but this kind of work is a real pain, as you don’t have any results visible (until you break something) For instance, I spent a whole month understanding why some polygons weren’t well displayed anymore, while others were just fine … it turned out that I made a cast error in a SH2 opcode, sometimes resulting in coordinates miscalculation …

Anyway, time to go back to work 🙂 (and thanks for the kind comments, I know I’m not posting as much as I want to, but I really appreciate)

DSPeration

Well, the title is maybe a bit strong, but this processor is a really complex piece of work …
The disassembler is done, the interpreter skeleton is ready, and I’m done coding the Operation commands (24 opcodes).

I’m now working on the Load Immediate commands (11 opcodes), DMA, JUMP and LOOP commands will follow shortly (I hope :p)

Understanding how the opcodes really work is difficult, thanks to poor / erroneous documentation, and I won’t be able to test anything until every opcode (and the main loop) is coded … Timing must also be taken care of, as DSP clock is only half of the main SH2’s … so there’s still a lot to do until I can get any sound during the logo assembly :p

I’ve also started toying around with various UI libraries (finally :p), and I think I’ll chose Juce for the next UI overhaul … primary testing with OpenGL gave good results, I’ll have to fire up my image creation software to create some nice icons (ph34r my mad Gimp skiils :D) I’ll try to post some screenshots when I’ll have something more tangible 😉

Until then … have a nice day !