ITKarma picture

New thread of narration


My journey was quite long, and today is the third anniversary of the start of the Edge of Emulation series of articles. When I first worked on emulating a Barcode Taisen Bardigun barcode scanner in 2017, I had no idea how much more I can do. My goal was to complete the list, research and document one device at a time, but I did not know if I had the necessary skills to complete this task. Over the past few years, I have encountered many difficulties and many different problems. Nevertheless, I somehow managed to overcome all these obstacles thanks to the time taken, determination and the help of friends and colleagues. Some devices are very simple, and it took only one to two days to emulate them correctly. However, others were stubborn and difficult. The topic of this article gave me a particular headache.

In the early 2000s, the Japanese sewing company Jaguar released a machine with one very interesting function. Sewing patterns were not integrated into the Jaguar JN-100 sewing machine itself (also known as “nuyell”); instead, she connected to the Game Boy using Link Cable and received instructions. The software, called the Raku x Raku Mishin, was supplied on a regular black Game Boy cartridge and was involved in transferring data to the JN-100. Users could program the machine to sew various patterns, buttonholes, kana characters, letters, and even short contours created by the user. The American company Singer ("Singer") saw the potential for business in the JN-100; later, the two sides agreed to release in the USA an almost exact copy of the machine under the Singer IZEK 1500 brand. In 2001, Jaguar created a second model called the JN-2000 (or “nuotto ”), Which boasted an increased sewing speed and a special embroidery device called EM-2000. The JN-2000 was backward compatible with the Game Boy cartridge for the JN-100, however, three additional programs were released for the new JN-2000 embroidery functions. Although Jaguar has gained notable success with its products, the Singer IZEK-1500 model in the United States has not become particularly popular. There were plans to release a new version, also with embroidery support, but Singer never fully realized them. Therefore, the JN-2000's ability to embroider Mario graphics on clothing could only be used in Japan.

Some might find the idea of ​​combining Game Boy and sewing machines ridiculous, but, nevertheless, all three models were historically important for both the video game industry and home sewing. Although long before this, industrial sewing machines had programmable sewing capabilities, the consumer market lagged behind them in functionality and price. Today's cheap digital sewing is the norm, but at the turn of the century, Jaguar revolutionized the world by providing affordable and easy-to-use equipment for consumers. Using the Game Boy as the main interface reduced complexity (just a few buttons, menus can be colored and any amount of information can be displayed, even tutorials). In addition, the company saved thanks to the use of well-known components, because it did not have to develop equipment from scratch. Moreover, often instructions for sewing machines are supplied from external sources. Modern sewing machines often connect to a PC via USB to transfer embroidery designs, and the future may be with applications for smartphones that transmit data via Bluetooth. Be that as it may, the Nintendo handheld console was the first (and only?) Device to work with a sewing machine; She has contributed to the promotion of digital sewing and embroidery. Although this seems like a strange alliance, in practice both devices worked pretty well.

But even with all this, such sewing machines remain one of the most exotic and amazing accessories for Game Boy. They demonstrate how far the humble Game Boy can go beyond the boundaries of video games. Unfortunately, although we know a lot from the history of Jaguar and Singer machines, the details of their work have been a mystery for decades.When I found out about them, I could not resist trying to find out what secrets are kept inside. Strictly speaking, neither sewing machines nor their software are video games. However, they are too culturally important to ignore. So that their story does not disappear over time, I decided to participate in their preservation. I have already managed to emulate quite crazy projects on Game Boy: toys with infrared motion detection, cartridges powered by the Sun, Amiibo-style figures and robots. But emulation of a sewing machine? This is something completely different. To do this, you need to go crazy, right?

Needle in a haystack


Examination of these machines requires physical access, which in turn means additional costs. After all, there were three different models (JN-100, JN-2000, IZEK 1500), in addition, each in itself is worth decent amounts. Models JN-100 and IZEK 1500 are not common, but you can find them, however, some difficulties lead to higher prices. IZEK 1500 is usually sold for about 150-250 dollars, but if original materials are added to the machine itself, for example, a VHS cassette with instructions, software for Game Boy or even a box, then its value increases by hundreds of dollars. Delivery, even within the same country, requires another 25-50 dollars. JN-100 on Japanese sites usually sells much cheaper. Many are marked “broken” and can cost $ 20-50. However, international shipping can easily double or triple this amount.

The JN-2000 is really rare, because it was most likely sold in much smaller quantities. Auctions for the dozens of the first two cars are held almost every few months, but the JN-2000 model is sold a dozen times a year. Damage to the collector’s wallet varies greatly - from 30 to 160, 400 or even $ 1,500, depending on the completeness. For the most expensive that I saw, they asked for 5100 dollars. The kit included: the all-new JN-2000, EM-2000, two copies of Raku x Raku Cut Shuu/Moji, and one copy of Mario Family (which is probably the rarest Game Boy Color software). Needless to say, it took a lot of money, patience and good luck to buy all three sewing machines. Fortunately, I imported both Jaguar models long before the COVID-19 epidemic. The virus has prevented many types of transportation, limiting the possible delivery options and raising tariffs (sometimes at times - yes, I mean you, DHL).

As mentioned above, the Jaguar JN-100 and Singer IZEK-1500 in almost all aspects are almost perfect copies of each other. The only obvious differences are the power cables (retractable in the JN-100 and plugged in the IZEK-1500) and color schemes. The JN-100 was delivered in six color options, and the IZEK-1500 has only a blue color. Both machines have translucent plastic parts that evoke memories of the aesthetics of the iMac G3. The JN-2000 has a completely different case style, similar to other Singer products, such as many Futura models. It also has completely transparent plastic parts, although it was made only in red. There is an empty slot on the machine platform where Game Boy is inserted during sewing. Most notably, part of the JN-2000 shifts and opens the port to which the EM-2000 embroidery device is connected. All three models have integrated Link Cable.

ITKarma picture

From left to right: IZEK 1500, JN-2000, JN-100. It was not easy to place the whole gang on my table.

In total, 5 types of compatible software were written for these machines. The first, the Raku x Raku Mishin, came with all the JN-100s. Its main purpose is patterns for sewing and custom patterns, buttonholes, some Latin characters, Kana characters, and some kanji characters. When the IZEK-1500 appeared in the USA, the name of the software changed to “Sewing Machine Operating Software”, but the basic functions remained the same. However, instead of kana and kanji, the Latin alphabet was expanded and new styles were added (italic and contour letters). It seems that there is a European version, but little details about it. Raku x Raku Moji handled embroidering katakana, hiragana, some Latin characters and letters, and many kanji characters. Unlike Raku x Raku Mishin embroidery, their structure was complex and consisted of hundreds of stitches, not 20-30.Raku x Raku Cut Shuu is able to embroider cute and standard patterns - rocket, flowers and various cartoon animals. The last cartridge - Jaguar Mishin Sashi Senyou Soft: Mario Family - is almost the same, but all the graphics in it have the theme of games about Mario. It has Princess Peach, Mario, Luigi, Vario, Yoshi and several other characters, however, surprisingly, Bowser is missing.

ITKarma picture

These GBC cartridges are one of the rarest. To buy a complete Mario Family, you have to take a small loan from the bank.

My research on these sewing machines began exactly a year ago, at the beginning of May 2019. Usually, I spend only a few weeks on a hacking device. I needed a maximum of several months for analysis and test execution before I could figure it out. In fact, I thought that I could cope with the bulk of the work in one or two days off. If everything went according to plan, then this article would be written in 2019. Unfortunately, I spent a lot more than a couple of days. These sewing machines have become a puzzle for me that I have never had to deal with before, and many times they have perplexed me. Although I cannot call them the most difficult devices for reverse engineering, they have definitely become the most tedious. I thought it would be a couple of trivialities, but ran into a much more difficult case.

Sew or not sew


Singer IZEK 1500 was the easiest to buy, so I started to study it first. To start, I created a very simple ROM hack Sewing Machine Operation Software, which, after interrupting the serial interface, recorded all the data transmitted through it. It is curious that I did not see any significant data, but only repeating patterns of two values: CDMY0CDMY and CDMY1CDMY. Having passed ROM through the debugger of the GBE + emulator, I saw that not every data transfer should cause interruption of the serial interface; therefore, the ROM hack lacked important information. Unlike all other Game Boy accessories, the IZEK 1500 switches between data transfer using internal and external synchronization. In fact, when communicating with Game Boy, it switches between master and slave (and the console also switches, always in the opposite mode, to match the machine). Data transfer from the Game Boy to the IZEK 1500 is always done through external synchronization, so the sewing machine controls the bit rate. With this transfer, the software disables serial interface interruptions, but GBE + sees them perfectly and displays them in the log.
The data captured by the emulator was like a packet transmitted to the sewing machine with instructions on how to sew a pattern. I immediately saw that it had a heading, followed by a body containing something resembling XY coordinate pairs for sewing points; at the very end there was a certain checksum. As far as I could then judge, the pattern was realized by a simple shift of the sewing point up, down, left or right by different sizes. In order for GBE + to correctly emulate these sewing machines, he needed to recreate such sewing in the form of pixels on the screen. To do this, just take the XY coordinates from these packages and start drawing lines, right? Pretty easy and hassle-free. No difficulties.

The first pair of patterns labeled CDMY2CDMY before CDMY3CDMY were lines that moved straight down and sometimes changed the X coordinate to create diagonals. I copied part of the line rendering code from my NDS 3D renderer, passed it the coordinates from the package and saved the result to a BMP file. The output of these patterns is consistent with the previous ones shown on the Game Boy screen. However, when it came to the rest of the patterns, everything quickly began to break. The main example of these errors was the CDMY4CDMY pattern. Instead of zigzagging like the others, he walked exactly sideways, and then vertically up. I treated each Y coordinate as positive in order to move down because I did not know how the IZEK 1500 handles negative numbers. Everything should have been pretty obvious, let's say, for negative numbers, bit 7 matters, but for all positive numbers it doesn't. But there was nothing of the kind.

Pattern B-007

Here is the same pattern.

CDMY5CDMY

And here is the raw data transmitted by the Game Boy console.

I took a test piece of fabric and watched each movement to check what each XY pair should do. It is fairly easy to notice that the X coordinates behave normally, gradually shifting from left to right as they increase, and then abruptly shifting back and forth to start the pattern again. However, the Y coordinates behaved differently. At first it seems that they are moving at random, although this is not particularly unexpected, given that the pattern moves slightly up and down. However, when I started my investigation, the Y coordinates looked very strange to me. An important detail was that the X coordinates work relative to absolute positions, and the Y coordinates behave differently. The width of the pattern can only be this way (from CDMY6CDMY to CDMY7CDMY), because the needle physically moves only this distance. The length of the pattern continues as long as the fabric supplied to the machine is enough.

Correctly interpreting the Y coordinates was quite difficult. In the world of logic, values ​​like CDMY8CDMY would move fabric down 8 units, CDMY9CDMY would move fabric 8 up, and CDMY10CDMY would leave it in place. Ideally, the system would look like a 5-bit version of reverse . Looks pretty clear, right? The difference in the up and down direction would be to enable/disable bit 4, and zero would keep the current vertical position. At least I expected it. However, dealing with reality is much more difficult. The example in pattern B-007 was a pair of vertical lines, but the Y coordinate never even comes close to zero. In an extreme case, one could assume that the horizontal line would be represented by two different X coordinates and two Y coordinates with the same value, but it was completely different.

I was so busy with how I think the coordinates looked like I couldn’t notice how they actually behave. I spent months thinking of all kinds of crazy rules for describing how machines create horizontal, diagonal and vertical lines for all other patterns. Many hours were spent formulating each possible case of the X and Y coordinates and the types of lines that they should draw. Looking back, I can say that I missed a few obvious tips that could simplify my work.

Once, when I studied all the rules I came up with, I noticed something very curious about horizontal lines. It seemed that they all used CDMY11CDMY as the Y coordinate. Why use this value to indicate no vertical shift? Why use this value instead of zero? Another thought struck me: what if values ​​less than CDMY12CDMY perform a shift down, and values ​​above it shift up? Suddenly, almost all the patterns made sense. Since GBE + received any pattern it captured via the serial interface and rendered it to a BMP file, I could very quickly evaluate the results visually. With the old complicated rules, only a small fraction of the patterns looked correct, and many were mistaken. After changing the code in accordance with the new discovery, almost all the patterns began to be drawn correctly. The last task was to calculate the correct lengths for each Y coordinate. In the end, I came to this scheme:

CDMY13CDMY

By defining these Y values, I uncovered yet another strangeness of the XY coordinates. For any X coordinate, the Y coordinate that controls the vertical movement is in the last previous Y coordinate sent, not the next. To demonstrate this, let's return to the CDMY14CDMY pattern: the first horizontal line going to the right does not use the XY values ​​from CDMY15CDMY. It’s better to read this as CDMY16CDMY, where the X value indicates the movement to the right, and the Y value means the absence of vertical movement. It might be better to classify them as YX values, but be that as it may, the raw bytes of the coordinates are a bit “mismatched” from a human point of view.

Converting this information to pixels was pretty easy. Each X value represents 1 pixel. For Y values, CDMY17CDMY is zero, and each value above it simply shifts 1 pixel up, and each value below shifts 1 pixel down. With this scheme in GBE +, you can draw the most complex patterns: swans, flowers and hearts without the slightest problem. Even user patterns were beautifully rendered. Determining the XY coordinate logic caused me a lot of headache. I’ll just say that these three machines do everything completely stupidly. There is nothing intuitive to use CDMY18CDMY as a zero replacement. There is nothing clear about using the previous Y coordinate instead of the next. Perhaps someone will say that so many sewing machines are arranged inside, or that communication with devices is usually implemented this way, or that some microcontrollers are designed that way. In fact, I see and understand the logic behind this, but it does not bother me. This is stupid and will always remain stupid for me.

Be that as it may, after all the patterns began to work correctly, I went on to test the letters. This function worked only partially in GBE +. Strange, but in the output BMP file, which I used for debugging, only the first couple of letters was displayed. For example, if you try to embroider “ABCD”, only “AB” will be displayed. After carefully examining the data transmitted from Game Boy, I realized that GBE + did not process the most important part of the packet format. When the Game Boy passes the packet to the sewing machine, its length can be only 128 bytes. However, embroidering a long sequence of letters requires several hundred XY coordinates (since many of their parts contain double or triple stitches). To send such an amount of XY coordinates requires the transfer of several packets, and GBE + processed only the first packet found. After making the changes, GBE + learned to parse additional packages, due to which the embroidery of not only letters, but also buttonholes was fixed.

ITKarma picture

Examples of patterns from Raku x Raku Mishin/Sewing Machine Operation Software

Examples of more complicated sewing, a few letters and buttonholes. Obviously, the buttonholes were not very high quality on real machines either.

Textile Competition


Having tested the ROMs and Sewing Machine Operation Software, and Raku x Raku Mishin, I was satisfied that GBE + is able to reliably emulate the Singer IZEK 1500 and Jaguar JN-100. But that was only half the battle, as the Jaguar JN-2000 and its embroidery device remained a complete mystery. Given how complicated embroidery can be, I could only imagine how difficult it would be to deal with EM-2000. A serious problem hindering further progress was my lack of EM-2000. When I found them on the sites, they were sold only bundled with the JN-2000, due to which the price became much more than $ 1,000. A reasonable price auction was found only after I completed research on these machines. No need to say that I didn’t have the necessary equipment.

However, the EM-2000 was a lot like some embroidery devices that Singer released around the same time for select Futura models. Apart from the colors, the two devices looked the same. I suspected that the Futura embroidery machine might be compatible with the JN-2000. After all, the Singer IZEK 1500 was JN-100 copy-paste; perhaps the two companies shared with each other and other models. When the Futura embroidery device was delivered to me, it did not fit into the JN-2000 connector because it had two pieces of plastic that interfered with the connection. After an hour of manual sanding, I removed the plastic stoppers and managed to insert the Futura device into the JN-2000. Unfortunately, it turned out to be completely incompatible. None of the software could recognize the connection of the embroidery device.

ITKarma picture

Left - EM-2000. On the right is the Futura embroidery device. They look like twins. Same size, one shape. Unfortunately, only one of them is compatible with the JN-2000.

Unable to test the device directly, I could only reverse engineer the software and protocol that Game Boy used to embroider. The first task was to determine how the JN-2000 tells the Game Boy whether the EM-2000 is connected. Before and after sending the packet to the sewing machine, the Game Boy transmits the activity bytes of the connection to continuously check for a connection. Sewing machines should return their current state as a single byte. A zero answer allows most of the IZEK 1500 and JN-100 to function normally, but Raku x Raku Moji, Raku x Raku Cut Shuu and Mario Family complain about the lack of an EM-2000. Earlier, I accidentally found out that if you set bit 1 of the status byte, then the software considers that the EM-2000 is connected. Having tried other random values, I found out that CDMY19CDMY and CDMY20CDMY allow the software to continue execution without errors. It seems that the first value indicates the connection of the small hoop, and the second indicates the connection of the large hoop. Only some patterns can be embroidered with a large hoop.

Using the correct status byte instead of displaying an error enabled data transfer. The data transmitted from Game Boy was very similar to other packages used in the IZEK 1500 and JN-100. However, the format of the coordinate data was obviously different. Unlike another rather complicated coordinate system, the embroidery coordinates turned out to be very simple to understand. Just looking at the numbers, I almost immediately realized how everything works. The CDMY21CDMY value moves the staple point 5 units to the right for X coordinates or 5 units down for Y coordinates. CDMY22CDMY moves the staple point 5 units to the left for X coordinates and 5 units up for Y coordinates. If bit 6 is set, then X coordinates and Y move in one direction, otherwise in the other. In addition, the XY coordinates are not confused. Compared to the IZEK 1500 and JN-100, it’s much easier!

By connecting the lines between these coordinates, GBE + was able to draw many of the patterns. Unfortunately, almost all of them had serious problems with rendering, parts of the embroidery were randomly scattered. Mario's face was shifted, Princess Peach didn't have one at all, and Luigi simply consisted of a bunch of squiggles. In each of the cases, only the first part looked correct, and then everything broke stably. When embroidering, patterns are divided into several continuous segments. Most often, most of the pattern can be embroidered from one point to the next, it resembles drawing along the contour. However, sometimes it is impossible to stitch individual segments without a complete transition to a new position that is not connected to the old. An example of this is the eyes of many characters, separated objects (bubbles surrounding the dolphin), and colored areas clearly separated by contours or other colors. Essentially, the JN-2000 stops stapling when the embroidery device moves to a new position. GBE + considers everything as one continuous line and never moves to a new position. There are sections within some of the packages transmitted by the JN-2000 that describe how to move to a new area. They begin with the CDMY23CDMY byte, and end with the CDMY24CDMY byte. The data looks something like this:

CDMY25CDMY

At first I thought that this data describes some 16-bit number, in which the least significant byte comes first (Least Significant Byte, LSB). That is, the first two bytes form the hexadecimal number CDMY26CDMY. By the same logic, the second 16-bit number should look like CDMY27CDMY. If we consider that these 16-bit numbers are shifts in X and Y, the first number can be something like a negative value of X (left shift), and the second - a positive value of Y (shift down). However, when studying the rest of the data, I realized that there are an odd number of bytes. There is enough data for four 16-bit numbers and another 8-bit remainder value. This part of me was very confusing for several days. Based on the data shown above, it seems that the third 16-bit value should be CDMY28CDMY, and the fourth 16-bit value should be CDMY29CDMY. The last byte remains “hanging” without a pair.

When I looked at the various shift datasets, one of those moments came when an idea suddenly occurred to me. What if in the data shown above the fifth byte is just a kind of delimiter for the next 16-bit shifts in X and Y? This would explain why the Game Boy transmits an odd number of bytes.Other patterns had many shifts, and when I checked the logs, I found that after each shift in X and Y there is a byte CDMY30CDMY. In the data shown above, the last shifts in X and Y are zero, which means no movement. After making small changes to the GBE + code, the emulator began to correctly parse all shift coordinates. The only thing that was wrong was the upside down and down directions.

CDMY31CDMY

But some patterns still remained distorted. After certain shifts, the sewing coordinates X and Y were mixed, which led to the creation of lines running in many different directions. Packets transmitted by the JN-2000 are only 128 bytes long, and sometimes the shift data has to be split into two packets. Handling such situations was not easy. All three sewing machines use the CDMY32CDMY byte to report the start of a batch and CDMY33CDMY to report the end of another. You need to check if these bytes are part of the packet control or if they are actually part of the shift data.

The last problem was the initial X and Y coordinates. All embroidery patterns are actually several patterns combined into a sequence. For example, Mario Family first embroiders the green parts of Yoshi, and then moves on to the boots and spikes on the back, flow to the saddle, white belly and, finally, to the general contour. The principle is to embroider parts with the same color. The program asks the user to select a new thread and send individual transfers to the JN-2000. The first packet of each transmission reports the initial positions X and Y. They are not connected in any way with the previous sewing points or shift coordinates, because the user can transfer any part of the pattern in any order or skip parts completely (for example, if white fabric is used as the basis, then the user may want to skip the Mario gloves embroidery). If incorrect initial coordinates are used, then the picture will not match, as it should when drawing each segment.

Black and white demo of drawing each piece of the Mario embroidery design

Here we show how the initial values ​​of X and Y should work. Each segment is embroidered separately, but all of them are correctly aligned.

The initial X and Y coordinates are also 16-bit LSB values. These are absolute values, that is, they tell you exactly where to start embroidering within the hoop. Users can choose their starting point through software, and Game Boy will transmit the corresponding data. By manipulating this function, I was able to record the maximum and minimum values ​​of X and Y, thus determining how their coordinates work. The right side is defined as CDMY34CDMY, the left as CDMY35CDMY. The top is set as CDMY36CDMY, the bottom is set as CDMY37CDMY. Thanks to these sizes, GBE + can indicate the correct starting point for each pattern. This, in turn, finally solved all the problems of going abroad when embroidering.

Several designs from Mario Family + GBE + output

Finally, everything looks perfect!

Sew everything together


So far, the emulation of these sewing machines has consisted only in the fact that GBE + displayed an image file after processing the last packet sent by the software. Although this approach is convenient for debugging and experimenting, it is completely unsuitable for ordinary users. Although he, strictly speaking, performs the task. It always seemed to me that emulation is needed for research, and not just for recreation and observation. In order to truly convey all the sensations of working with something like IZEK-1500, users need to interact with the device and control the output in real time. All this brings us back to the question: how to emulate a sewing machine?

In my previous article on toys Cyber ​​Drive Zoids I used a separate screen to draw a small animated robot, simulating a model, albeit pretty roughly.In fact, the source of inspiration for creating this separate screen in Cyber ​​Drive Zoids was working with sewing machines, I just finished that project first. The principle is to use a separate screen as a kind of notebook for drawing. The cursor moves, and after a simple press of a button, embroideries and patterns begin to appear. A menu-assisted interface helps you dynamically change various options, such as thread color, thread thickness, sewing speed, image saving, image cleaning, and connecting/disconnecting the emulated EM-2000.

The end results were quite pleasant and strongly resembled a virtual sewing machine. I think it’s very important that a separate screen demonstrates how sewing machines sew. For example, it shows how the EM-2000 device would move in reality when creating embroideries. Most of us will never be able to see these devices live, not to mention the patterns they create. However, now anyone can see why they have become so popular.


Although these cartridges are not real games, you can still play with them!

Loose ends


Before concluding this article, I would like to take the time to debunk some misconceptions regarding sewing machines. First, the only sewing machine that can perform complex embroidery is the JN-2000. You cannot use the IZEK-1500 or JN-100 with the Mario Family, for example, because they are not compatible with the EM-2000. In their platform there is no connector for an embroidery device. But it’s curious that the Raku x Raku Mishin and Sewing Machine Operation Software cartridges have error messages saying that the EM-2000 is connected, although it is most likely impossible to do this (at least without serious modifications of the machines). This hints that the EM-2000 was already being developed at the time of the release of the JN-100; besides, it is likely that IZEK wanted to create its own model based on the JN-2000.

Secondly, it must be said that despite the preliminary demonstration in Game Boy of the pattern of each JN-2000 embroidery, pixel art is only an approximate image of real embroidery. Part of the details simply does not fit on a 160x144 screen. For example, in the image of Princess Peach in the Game Boy there are no eyebrows, eyelashes, frills on the dress next to the neck and the gap between her gloves and the sleeves of the dress. In many cases, embroidery is much more complicated than shown in the software, especially in the case of some patterns from Raku x Raku Cut Shuu. Be that as it may, the finished results are much more impressive than their samples on the Game Boy screen.

Thirdly, yes, these sewing machines actually worked! I very often meet such a strange reaction when people find out about these models (would Jaguar or Singer sell such expensive, but faulty products?) All three cars are actually pretty good and can work without a Game Boy, but in this case they limited to straight sewing. They coped with everything the manufacturers announced without any problems.

Conclusion


Working with these sewing machines was a difficult task. They were a rather big punishment, but in the end it seems to me that the result was worth all this work. Each of them added a unique chapter to the history of video games, which, I hope, we will never lose again. It has already been 20 years since the JN-100 first introduced the world to sewing through Game Boy, so I think it's best to celebrate the anniversary of this achievement with emulation.

I was previously surprised by exotic peripheral gaming devices, but I must admit - the JN-100, JN-2000 and IZEK-1500 are so far the most impressive of my examples. Hearing of something like this, you might think that this is crazy and shake your head.Sewing machine controlled through Game Boy? I recall how MAME finally managed to emulate the Sonic The Hedgehog popcorn machine ; then I thought it was a completely crazy example of persistence in preserving the history of video games. Since then, I dreamed of doing something similar - to bring back to life a large, awkward, strange piece of iron, expensive and hard to find. I seem to have finally achieved my goal.

I have a feeling that I just recently started writing these articles, but in fact three years have passed already! I can proudly say that almost all additional devices directly affecting gameplay and software programming in commercial DMG and GBC games are emulated to one degree or another! Unconquered remains only one noteworthy accessory for DMG (the first Game Boy). When I started work in 2017, there were countless unknowns, and at least seven devices have not been researched for decades. I hope that I have made a small contribution to improving the situation with Game Boy emulation, and that these articles of the Edge of Emulation series will inspire people to search for other areas of the video game history that have remained forgotten and need to be preserved. Despite everything said, my path is far from complete. It looks like my todo list is not getting shorter. In 2020, I will jump from one device to another, and have already chosen a new large project for myself: AGS-006, or Play-Yan. If I'm lucky, I can tell you something in the next few months.

Source