Thursday, March 5, 2020

Taito Presenter 2000 - part 2

As I wrote in last post, I don't have the power supply for Taito Presenter 2000 and, while in MSXSP meeting, some friends that know how to handle old electronics found that the machine needs to have its capacitors changed by new ones. So, I can't power on this equipment, which cripples many of the tests that I want to do.

But I still want to explore this machine. So I got to try to understand what is the gibberish inside Taito's EPROMs. Let's see the last 16KB of A70-01-I and the full 32KB of A70-02.

We already know that there isn't any recognizable character string inside those sections of the ROMs. Let's see what we can see in the A70-02 EPROM with "hexdump":

0000000 5555 5555 5555 5555 5555 5555 5555 5555
0000010 5555 5555 5555 5555 5555 5555 5555 5555
0000020 5555 5555 5555 5555 5555 5555 5555 5555
0000030 5555 5555 5555 5555 5555 5555 5555 5555
0000040 5555 5555 5555 5555 5555 5555 5555 5555
0000050 5555 5555 5555 5555 5555 5555 5555 5555
0000060 5555 5555 5555 5555 5555 5555 5555 5555
0000070 5555 5555 cc55 cccc cc5c cccc cccc cccc
0000080 5555 5555 5555 5555 5555 5555 5555 5555
0000090 5555 5555 cccc cccc cccc cccc cccc cccc
00000a0 5555 5555 5555 5555 5555 5555 5555 5555
00000b0 5555 5555 cccc cccc cccc cccc cccc cccc
00000c0 5555 5555 5555 5555 5555 5555 5555 5555
00000d0 5555 5555 cccc cccc cccc cccc cccc cccc
00000e0 5555 5555 5555 5555 5555 5555 5555 5555
00000f0 5555 5555 cccc cccc cccc cccc cccc cccc
0000100 5555 5555 5555 5555 5555 5555 5555 5555

When I saw this output, the 0x5555 got my sight. Changing it to binary it is:

0x5555 = 0101 0101 0101 0101

And if this garbage is some kind of drawing? I already saw a similar output in Kanji-ROMs and in some blogs about reverse engineering of old arcade boards. To find this out, I wrote a small program to read the ROM and give an output that looks like a bitmap. If someone wants to use it for something, the slightly sanitized source code is here:

#include <stdio.h>

int main(int argc, char **argv)
{
    if (argc != 2) {
        printf("Usage: %s FILENAME\n\n", argv[0]);
        return 0;
    }

    FILE *f = fopen(argv[1], "rb");
    if (f == NULL) {
        printf("Error: File '%s' not found!\n\n", argv[1]);
        return 1;
    }
    fseek(f, 0, SEEK_END);
    long lsize = 0, i = 0;
    lsize = ftell(f);
    rewind(f);

    while (i < lsize) {
        short int byte = fgetc(f);
        short int mask = 0x80;
        short int j;

        for (j = 0; j < 8; j++) {
            if ((byte & mask) == 0) {
                printf(" ");
            } else {
                printf("#");
            }
            mask >>= 1;
        }
        i++;
    }

    fclose(f);

    return 0;
}

Now, let's see what is inside the mysterious ROMs:

 ### ### ### ### ### ### ### ###
 ###  #   #  ###  #   #  ### ###
  #   #   #   #   #   #   #  ###
  #   #   #   #   #   #   #  ###
  #   #   #   #   #   #   #  ###
 ###  #   #   #   #   #  ### ###
 ### ###  #   #   #  ### ### ###
 ### ### ###  #  ### ### ### ###
 ### ### ### ### ### ### ### ###
 ### ### ### # # ### ### ### ###
 ### ### # # # # # # ### ### ###
 ### # # # # # # # # # # ### ###
 # # # # # # # # # # # # # # ###
 ### # # # # # # # # # # ### ###
 ### ### # # # # # # ### ### ###
 ### ### ### # # ### ### ### ###
 ### ### ### ### ### ### ### ###
 ###  ##  ## ###  ##  ## ### ###
  ##  ##  ##  ##  ##  ##  ## ###
  ##  ##  ##  ##  ##  ##  ## ###
  ##  ##  ##  ##  ##  ##  ## ###
 ###  ##  ##  ##  ##  ## ### ###
 ### ###  ##  ##  ## ### ### ###
 ### ### ###  ## ### ### ### ###
 ### ### ### ### ### ### ### ###
 ### ### ### #   ### ### ### ###
 ### ### #   #   #   ### ### ###
 ### #   #   #   #   #   ### ###
 #   #   #   #   #   #   #   ###
 ### #   #   #   #   #   ### ###
 ### ### #   #   #   ### ### ###
 ### ### ### #   ### ### ### ###
 ### ### ### ### ### ### ### ###
 ###  #   #  ###  #   #  ### ###
  #   #   #   #   #   #   #  ###
  #   #   #   #   #   #   #  ###
  #   #   #   #   #   #   #  ###
 ###  #   #   #   #   #  ### ###
 ### ###  #   #   #  ### ### ###
 ### ### ###  #  ### ### ### ###

Hey! We got something! There are some diamonds and hearts filled with different patterns. Examining a bit more the output we found more hearts, diamonds and some complex drawings that resemble clouds, and other tiles that needs to be combined to make a real sense. Probably these pictures are the ones that the Taito Presenter plays when it doesn't have any game card loaded.

The 16KB in the A70-01-I ROM even have a banner with the machine name!
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   ## ### ### ##
   ## ### ### ### ### ##   #   #
   ## ### ##   ## ### ### ##   #
   ## ### ##   #   ## ### ### ##
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   #   #   #   #   #   #   #   #
   #   ## ### ### ### ##   #   #
   ## ### ##   #   ## ### ##   #
   ## ### ##   #   #   #   #   #
   #   ## ### ### ### ### ##   #
   #   #   #   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   #   ## ### ### ### ### ##   #
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   #   #   #   #   #   #   #   #
   ## ### ##   #   #   ## ### ##
   ## ### ### ##   #   ## ### ##
   ## ### ### ### ##   ## ### ##
   ## ### ### ### ### ### ### ##
   ## ### ##   ## ### ### ### ##
   ## ### ##   #   ## ### ### ##
   ## ### ##   #   #   ## ### ##
   #   #   #   #   #   #   #   #
   #   ## ### ### ### ### ### ##
   #   #   #   ## ### ##   #   #
   #   #   #   ## ### ##   #   #
   #   #   #   ## ### ##   #   #
   #   #   #   ## ### ##   #   #
   #   #   #   ## ### ##   #   #
   #   #   #   ## ### ##   #   #
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   #   #   #
   ## ### ##   #   #   #   #   #
   ## ### ### ### ### ### ### ##
   #   #   #   #   #   #   #   #
   ## ### ### ### ### ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   ## ### ### ##
   ## ### ### ### ### ##   #   #
   ## ### ##   ## ### ### ##   #
   ## ### ##   #   ## ### ### ##
   #   #   #   #   #   #   #   #
   #   #   #   #   #   #   #   #
   #   #   #   #   #   #   #   #
   #   #   #   #   #   #   #   #
   #   ## ### ### ### ##   #   #
   #   ## ### ### ### ##   #   #
   #   #   #   #   #   #   #   #
   #   #   #   #   #   #   #   #
   #   #   #   #   #   #   #   #
   #   ## ### ### ### ### ##   #
   ## ### ##   #   #   ## ### ##
   #   #   #   #   ## ### ### ##
   #   #   ## ### ### ### ##   #
   #   ## ### ### ### ##   #   #
   ## ### ### ##   #   #   #   #
   ## ### ### ### ### ### ### ##
   #   #   #   #   #   #   #   #
   #   #   ## ### ### ##   #   #
   #   ## ##   #   ## ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   #   ## ### ##   #   ## ##   #
   #   #   ## ### ### ##   #   #
   #   #   #   #   #   #   #   #
   #   #   ## ### ### ##   #   #
   #   ## ##   #   ## ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   #   ## ### ##   #   ## ##   #
   #   #   ## ### ### ##   #   #
   #   #   #   #   #   #   #   #
   #   #   ## ### ### ##   #   #
   #   ## ##   #   ## ### ##   #
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   ## ### ##   #   #   ## ### ##
   #   ## ### ##   #   ## ##   #
   #   #   ## ### ### ##   #   #
   #   #   #   #   #   #   #   #

Well, at least one mystery about the Taito Presenter 2000 was solved!

The showbitmap's source code and the output of both ROMs can be downloaded from here.

And that's all for now!

No comments:

Post a Comment