News...

NEWS...


Hi!... My name is Roberto Fresca, and I'm part of the MAME Dev Team since 1998. Here you can find some technical things about rare hardware. This site is intended to avoid duplicated efforts. This page is *always* in construction... :-)




--- 2013/12/25 21:30 ---

HO-HO-HOOOO!... Soccer New & Mongolfier New.

Thanks to Peter Ferrie that found the NVRAM offset checked by both games, we got rid of the protection and after some dedicated work got the games working. There are some other things to reverse to be 100% sure, but seems that emulation is accurate.

Here some snaps:

Soccer New (ingame) Soccer New (ingame) Soccer New (ingame) Soccer New (ingame) Soccer New (ingame) Soccer New (ingame) Soccer New (ingame) Soccer New (ingame)

Settings and Test Mode...

Soccer New (Settings / Test Mode) Soccer New (Settings / Test Mode) Soccer New (Settings / Test Mode) Soccer New (Settings / Test Mode)

And here some Mongolfier New shots...

Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame) Mongolfier New (ingame)





--- 2013/05/23 23:30 ---

TOP XXI...

Again, another rare PCB dumped by ANY. This time, the hardware is composed by a M68000 (@ 12MHz.), a U6295 (OKI compatible) driving 4-bit ADPCM samples for sound, and a PIC16C65B for some obscure purposes. Also two ACTEL A40MX04 monsters just in case you're not scared enough with the PIC... :-P

The game is 'TOP XXI' and as the title suggests, is a black jack / 21 game. Come in two flavors... with and without playing cards. Here some snaps:

TOP XXI (cards) TOP XXI (cards) TOP XXI (cards) TOP XXI (cards) TOP XXI (cards) TOP XXI (cards) TOP XXI (cards) TOP XXI (cards)

Now, with numbers instead of playing cards...

TOP XXI (numbers) TOP XXI (numbers)

And here the different service / settings mode screens...

TOP XXI (settings) TOP XXI (settings) TOP XXI (settings) TOP XXI (settings) TOP XXI (settings) TOP XXI (settings) TOP XXI (settings)

The game is working properly, but I think the most interesting it has to offer, is the title girl... ;-)





--- 2013/05/11 23:10 ---

Crystals Colours...

I don't know... maybe the game name fascinated me... or I just had the impression that would be a big challenge, but as soon as ANY (special thanks to him) dumped this rare game, I focused myself into the hardware internals in a glorious attempt to emulate it. The hardware is a sort of newer Ten Balls style hardware but with some protections, plus encrypted video and color RAM.

Crystals Colours PCB

The system is composed by 1x G65SC02 + 1x AD-65 (OKI6295 compatible) for sound samples + 2x XILINX XC9572 driving the evil encryption scheme. The program has some data channels for *maybe* some polling protocol as SAS/CAS/etc... Feeding the wrong values, a service-text mode triggers, a fixed amount of points is set, and the program starts to decrement them one by one.

Well... As I quoted before, the game has video and color RAM encrypted, so once I got the ROMs properly loaded, the graphics decoded and had the enviroment to run the game, I got the following screens:

Crystals Colours (encrypted video and color RAM) Crystals Colours (encrypted video and color RAM)

So... Now we need to work in the encryption scheme...

To start the analysis, I was searching for the big digits the game has. Each one is composed by 6 tiles (3x2). You can see the following table, where 'Normal tile #' is the tile number called to be drawn, and 'Scrambled tile #' is the phisical tile position in the matrix:


    Normal | Scrambled
    tile # | tile #
    -------+----------
     0x00  | 0x000   \
     0x01  | 0x800    |
     0x02  | 0x100    | Big "0"
     0x03  | 0x900    |
     0x04  | 0x004    |
     0x05  | 0x804   /
    -------+----------
     0x06  | 0x104   \
     0x07  | 0x904    |
     0x08  | 0x008    | Big "1"
     0x09  | 0x808    |
     0x0A  | 0x108    |
     0x0B  | 0x908   /
    -------+----------
     0x0C  | 0x00C   \
     0x0D  | 0x80C    |
     0x0E  | 0x10C    | Big "2"
     0x0F  | 0x90C    |
     0x10  | 0x010    |
     0x11  | 0x810   /
    -------+----------
     0x12  | 0x110   \
     0x13  | 0x910    |
     0x14  | 0x014    | Big "3"
     0x15  | 0x814    |
     0x16  | 0x114    |
     0x17  | 0x914   /
    -------+----------
     0x18  | 0x018   \
     0x19  | 0x818    |
     0x1A  | 0x118    | Big "4"
     0x1B  | 0x918    |
     0x1C  | 0x01C    |
     0x1D  | 0x81C   /
    -------+----------
     0x1E  | 0x11C   \
     0x1F  | 0x91C    |
     0x20  | 0x200    | Big "5"
     0x21  | 0xA00    |
     0x22  | 0x300    |
     0x23  | 0xB00   /
    -------+----------
     0x24  | 0x204   \
     0x25  | 0xA04    |
     0x26  | 0x304    | Big "6"
     0x27  | 0xB04    |
     0x28  | 0x208    |
     0x29  | 0xA08   /
    -------+----------
     0x2A  | 0x308   \
     0x2B  | 0xB08    |
     0x2C  | 0x20C    | Big "7"
     0x2D  | 0xA0C    |
     0x2E  | 0x30C    |
     0x2F  | 0xB0C   /
    -------+----------

Now, we can see some binary patterns here...


    TILE   NORMAL POS     SCRAMBLED POS
    ----+---------------+---------------
     00: 0000 0000 0000 : 0000 0000 0000
     01: 0000 0000 0001 : 1000 0000 0000
     02: 0000 0000 0010 : 0001 0000 0000
     03: 0000 0000 0011 : 1001 0000 0000
     04: 0000 0000 0100 : 0000 0000 0100
     05: 0000 0000 0101 : 1000 0000 0100
     06: 0000 0000 0110 : 0001 0000 0100
     07: 0000 0000 0111 : 1001 0000 0100

     08: 0000 0000 1000 : 0000 0000 1000
     09: 0000 0000 1001 : 1000 0000 1000
     0A: 0000 0000 1010 : 0001 0000 1000
     0B: 0000 0000 1011 : 1001 0000 1000
     0C: 0000 0000 1100 : 0000 0000 1100
     0D: 0000 0000 1101 : 1000 0000 1100
     0E: 0000 0000 1110 : 0001 0000 1100
     0F: 0000 0000 1111 : 1001 0000 1100

     10: 0000 0001 0000 : 0000 0001 0000
     11: 0000 0001 0001 : 1000 0001 0000
     12: 0000 0001 0010 : 0001 0001 0000
     13: 0000 0001 0011 : 1001 0001 0000
     14: 0000 0001 0100 : 0000 0001 0100
     15: 0000 0001 0101 : 1000 0001 0100
     16: 0000 0001 0110 : 0001 0001 0100
     17: 0000 0001 0111 : 1001 0001 0100

     18: 0000 0001 1000 : 0000 0001 1000
     19: 0000 0001 1001 : 1000 0001 1000
     1A: 0000 0001 1010 : 0001 0001 1000
     1B: 0000 0001 1011 : 1001 0001 1000
     1C: 0000 0001 1100 : 0000 0001 1100
     1D: 0000 0001 1101 : 1000 0001 1100
     1E: 0000 0001 1110 : 0001 0001 1100
     1F: 0000 0001 1111 : 1001 0001 1100

     20: 0000 0010 0000 : 0010 0000 0000
     21: 0000 0010 0001 : 1010 0000 0000
     22: 0000 0010 0010 : 0011 0000 0000
     23: 0000 0010 0011 : 1011 0000 0000
     24: 0000 0010 0100 : 0010 0000 0100
     25: 0000 0010 0101 : 1010 0000 0100
     26: 0000 0010 0110 : 0011 0000 0100
     27: 0000 0010 0111 : 1011 0000 0100

     28: 0000 0010 1000 : 0010 0000 1000
     29: 0000 0010 1001 : 1010 0000 1000
     2A: 0000 0010 1010 : 0011 0000 1000
     2B: 0000 0010 1011 : 1011 0000 1000
     2C: 0000 0010 1100 : 0010 0000 1100
     2D: 0000 0010 1101 : 1010 0000 1100
     2E: 0000 0010 1110 : 0011 0000 1100
     2F: 0000 0010 1111 : 1011 0000 1100

     40: 0000 0100 0000 : 0000 0100 0000
     80: 0000 1000 0000 : 0000 1000 0000
     C0: 0000 1100 0000 : 0000 1100 0000
    100: 0001 0000 0000 : 0000 0000 0010

So... We have enough data to decrypt on the fly the tiles physical position through the following bitswap:


    FEDCBA9876543210 -> normal tile index.
        ||||||||||||
        |||||||||||+--> B -
        ||||||||||+---> 8   \
        |||||||||+----> 2    |
        ||||||||+-----> 3    |
        |||||||+------> 4    |
        ||||||+-------> 9    |> FEDC0A517694328B -> encrypted tile index.
        |||||+--------> 6    |
        ||||+---------> 7    |
        |||+----------> 1    |
        ||+-----------> 5    |
        |+------------> A   /
        +-------------> 0 -

Second step: Color RAM. Colors are scrambled in the following way:


      Normal  | Scrambled
      offset  | offset
    ----------+-----------
    0x00-0x1F | 0x00-0x1F
    0x20-0x3F | 0x40-0x5F
    0x40-0x5F | 0x20-0x3F
    0x60-0x7F | 0x60-0x7F
    ----------+-----------
    0x80-0x9F | 0x80-0x9F
    0xA0-0xBF | 0xC0-0xDF
    0xC0-0xDF | 0xA0-0xBF
    0xE0-0xFF | 0xE0-0xFF

The color codes are swapped in blocks of 32 bytes... 0x20 / 0x40 and 0xA0 / 0xC0, giving us the following binary representation:


        Normal     | Scrambled
        offset     | offset
    ---------------+-----------
     00: 0000 0000 : 0000 0000
     20: 0010 0000 : 0100 0000 <-- changed
     40: 0100 0000 : 0010 0000 <-- changed
     60: 0110 0000 : 0110 0000
     80: 1000 0000 : 1000 0000
     A0: 1010 0000 : 1100 0000 <-- changed
     C0: 1100 0000 : 1010 0000 <-- changed
     E0: 1110 0000 : 1110 0000

So, the algorithm to properly decrypt the color codes is the following one:


    color_index = BITSWAP8(color_index,7,5,6,4,3,2,1,0)
                                         | |
                                       swapped

Finally I got the encryption broken and graphics are now perfect. About the program, as I said before, there are 9 ports expecting data for some sort of polling system or whatever. Feeding the proper value and once I wrote working inputs from the scratch, I got the game working properly. Also I figured out and hooked the button-lamps set

Here some snaps....

Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM)

Also the 'Management', 'Statistica' and 'Programmazione' modes...

Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM) Crystals Colours (decrypted video and color RAM)

Another happy end, and a new rare game preserved!... :-)

BTW, if you want to give a try, just make sure the volume is at a lower level before starting the game or else you might be surprised. I got the game working at 4:00 on the morning, and the first thing the game does after booting, is to trigger a broken glass sound a bit louder... Just woke up my family, that came to see what's happened. :-P

**** UPDATED ****
You don't need to be worried about the broken glass anymore... The sounds samples volume is now normalized. ;-)



--- 2013/04/28 16:30 ---

Mundial-Mondial...

Another rare PCB dumped by EMMA Italian Dumping team. This one seems to be from middle 80's, and holds a soccer thematic game.

Mondial PCB

The system is composed by 1x UM6502 + 2x PIAs EF6821P + CRTC UM6845 + discrete circuitry for sound... The program ROM contains two different programs in banks of 0x4000 each. These programs are for the Italian and French languages respectively. The graphics are a real mess inside the GFX ROMs (maybe for some kind of protection). Here some snaps...

Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian)

And the French one...

Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian) Mundial (Italian)





--- 2013/04/25 12:10 ---

Good Luck II (Yung Yu)...

A few days ago, EMMA Italian Dumping team found and dumped some rare boards. One of them was made by Yung Yu in 1992, and caught my attention because looks like a Golden Poker / Cal Omega based hardware with a lot of improvements...

Good Luck II PCB (Yung Yu)

They saved the 2x PIA 6821 for I/O, but added more graphics banks (8) to get extended graphics. Also used a AY-3-8910 for input ports (not for sound), and improved the sound system through a Yamaha YM2413 that sounds really good, adding nice tunes to the current game (Good Luck II). The color system is driven by 3x bipolar PROMs (one for each RGB channel).

There are odd things in the program, like pieces of code trying to initialize inexistent devices (PIA's 6821 that should be mapped at 0844-0847 and 0848-084b), and even try to handle a 'suppossed' lamps set (also hooked in the phantom PIAs). I think these are just leftovers... Now the game is working properly with all bells and whistles. Only remains to fix a single graphics bank, that is meant to show the game instructions.

Here some snaps...

Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles) Good Luck II (turtles)

Settings & bookkeeping modes...

Good Luck II (settings-books) Good Luck II (settings-books)

And here playing with classic cards instead of turtles...

Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards) Good Luck II (cards)

******** UPDATED: 2013/04/24 20:10 ********

Found the bug on the banking system. Now the whole graphics system is working perfect. Here the 'Rules of the Game' screens... :-)

Good Luck II (instructions 1) Good Luck II (instructions 2)





--- 2013/02/08 16:40 ---

New York Joker...

A few days ago, David Haywood submitted this game that fits in the High Video driver in a not working status due to the lack of Inputs and outputs mainly, and I offered him to work in the remaining stuff. Now I can say that the game will be promoted to working state after get I/O, lamps and sound working properly. Here some snaps...

New York Joker (cards) New York Joker (cards) New York Joker (cards) New York Joker (cards) New York Joker (cards) New York Joker (cards) New York Joker (cards)

Also playing with bowling pins instead of cards...

New York Joker (pins) New York Joker (pins) New York Joker (pins)

Settings, bookkeeping and input test modes...

New York Joker (pins) New York Joker (pins) New York Joker (pins)







HOME --- OLDER ENTRIES --- NEWER ENTRIES