KrzysioCart Micro SD - a revolution for fans of the Pegasus / Famicom console.

I present to you my latest creation - KrzysioCart MicroSD - a cartridge for the Pegasus console, which will be the last one you will buy - no other will be needed. The card supports 82% of all games released on the NES / Famicom / Pegasus console. The following mappers (chips that extend the capabilities of the console) are supported:
Częstość | ID | Nazwa | Ilość | % całości
występowania | mappera | | tytułów |
-------------+---------+-------------------+---------+----------
1 | 1 | MMC1 | 804 | 24,62
2 | 4 | MMC3 | 765 | 23,42
3 | 0 | NROM | 434 | 13,29
4 | 2 | UNROM | 336 | 10,29
5 | 3 | CNROM | 236 | 7,23
6 | 7 | ANROM | 60 | 1,84
...
17 | 71 | CAMERICA | 14 | 0,43
...
30 | 232 | CAMERICA Quattro | 8 | 0,24
...
43 | 15 | 100-in-1/168-in-1 | 4 | 0,12
SUMA: 81.48
In addition, only this cartridge supports the famous 168-in-1 compilation, without which no Polish fan of this console would imagine dozens of hours spent playing - this is my tribute to Polish users.


For the impatient, there is good news right away - the cartridge can be purchased from me (I invite you to the end of the article for details). The kit includes:
- cartridge in the housing
- 4 GB MicroSD memory card
- MicroSD card reader for USB, enabling recording to the card
So that's all you need.
The cartridge has been tested on the most popular console models:
- MT777DX
- IQ502 rev2 / 3
- SP60 (on the scalaku)
- RINCO (Thompsonic)
- two no-name glutes
It works without any problems on each of them. Additionally, it has the built-in option to update the software directly from the SD card - just select the appropriate file! Nobody else came up with something like this in Europe, and I was the second in the world to start working on this topic in 2012, when no one was thinking too much about flash-carts!
History
I took my first serious steps in the subject of Pegasus in 2012, when I created a huge cartridge, which is my master's thesis. It was based on a module with the Xilinx XC3S400 (Spartan 3) system. In the final phase, the cartridge handled over 95% of titles, including even MMC5 and VRC6. However, due to its complicated construction, it remained the only prototype specimen.

A few years later I decided to create a slightly simpler medium - based on the Xilinx XC9572XL chip - 72 macrocells (more here: https://www.elektroda.pl/rtvforum/topic3094839.html)


Initially, it was supposed to support only the 168-in-1 compilation and the games from Złota 5 and 4 (mapper Camerica # 71 and # 232) and UNROM. What all these games had in common was that they had 8 KB of CHR-RAM. Later, support for NROM games was added, consisting in modifying the software so that after selecting a game, and before transferring control to it, the processor would record the graphics from that game to RAM (NROM has 8kB of ROM memory). Then, by changing the SRAM memory from 6264 (8 kB) to 62256 (32 kB) and connecting the two highest address lines, the CNROM mapper could be operated. Another light software modification was to add MMC1 support (but only games with 8 kB CHR-RAM). By adding 8kB of PRG-RAM ($ 6000- $ 7FFF), you could still run MMC1 games with additional RAM, such as Legends of Zelda, Dyna Blaster. Adding MMC1 support with CHR-ROM and MMC3 mapper was not possible due to insufficient resources in the CPLD chip and the lack of legs - I used all of the available I / O ports and still had to resort to some tricks, e.g.. multiplexing: Y 2 minutes). The loading time of the game consists of:
- clearing the Flash memory (a few seconds),
- reading from the selected ROM with the game of data portions to the PRG-ROM memory (sector by sector) and its programming (byte by byte),
- reading from the selected ROM with the game portions of data to the CHR-RAM memory and its writing.
Initially, the write algorithm consisted in reading one byte, programming it, and then checking:
- do you need to load a new sector,
- do you need to change the bank to memory,
- or maybe it's the end of programming?
The series of checks after each byte was extremely inefficient. I remember spending one of the evenings pondering and changing this way. After all, if it was possible to program the whole instead of `byte-by-byte`, divide it into programming blocks of 256 bytes, followed by checking the above conditions, then it would work much faster. However, before programming each block, define how many bytes should be programmed in a given iteration (1-256) and store it in the Y register. Then the main programming loop could look like this:
;w Y - ilość bajtów do zaprogramowania
program_chunk_loop:
lda (ptr_src), Y
sta (ptr_dst), Y
iny
bne program_chunk_loop
Even if the initial block length calculation takes a while, we still have an advantage, because each iteration of the above loop is incredibly fast. But can it be further accelerated? Yes! - because the entire programming subroutine is executed in RAM anyway (you cannot simultaneously program ROM and execute code from it), if a long, five-cycle indirect read / write command (through the zero-page pointer and the Y register) - `` lda ( ptr_src), y` convert to absolute read command: `lda $ ffff, y` (where the address $ ffff will be cleverly changed in RAM before each entry to the block loop), then we gain 2 cycles for each revolution (and the rotation is 256) .
Programming the game Super Mario Bros 3 (256 KB PRG-ROM + 128 KB CHR-ROM): 17 seconds:

Rapprochement:

Another close-up:

Comparison with CHR-RAM programming:

Additional mappers
Adding support for more mappers is not possible due to the almost complete use of the FPGA chip. However, the board has been designed in such a well-thought-out way (connecting all address lines from the CPU to FPGA) that it can also serve as a testing platform for other rarer mappers and possibly implement such mappers instead of the current ones (eg VRC6).
Summary
After making a fully functional prototype copy as expected, I thought that all console owners are waiting for such an invention. A hard-to-reach and expensive competitive product (everdrive) is not within the reach of most people, so my project may be unique - I made a dozen or so pieces for other 'gaming enthusiasts' and decided to do it too.







-------------------------------------------------- ----------
KrzysioCart Micro SD - FAQ :
1. How to order
Send an email to: krzysiocart(_at_)gmail.com
2. What is the price, what do I get in the set
The price is PLN 250 with shipping included. The set includes: a cartridge in the housing (random color) + 4 GB MicrosSD memory card (random manufacturer) + MicroSD card reader for USB (random look)
3. What games are supported?
Mapper # 0 (NROM), # 1 (MMC1), # 2 (UNROM / UOROM), # 3 (CNROM), # 4 (MMC3), # 7 (ANROM / AOROM), # 15 (Contra 100/168-in -1), # 71 (Camerica), # 232 (Camerica Quattro).
The cartridge has 1 MB PRG-ROM + 256 kB CHR-RAM / ROM + 8 kB PRG-RAM
4 screen mirroring and RAM protection with a battery after a power failure are not supported.
4. Will it work on my console?
The cartridge has been tested on the most popular console models:
- MT777DX
- IQ502 rev2 / 3
- SP60 (on the scalaku)
- RINCO (Thompsonic)
- two no-name glutes
He didn't cause any problems at all. I can not guarantee that it will work on every one, because console manufacturers use various 'tricks' to reduce the cost of its production, resulting in reduced compatibility (e.g. replacement of the 7805 stabilizer with a zener diode, skipping the SND-OUT / IT line, omitting the CIRAM- line! CE), but on 99% of consoles it should work fine.
5. Is the cartridge safe for my console?
Yes! The cartridge is made on a 1 mm thick PCB, so it does not push the contacts out of the socket, and the tight housing keeps the cartridge in the socket. The buffers used in it, converting the voltage levels of 5 V (from those present on the cartridge connectors) to 3.3 V (for low-voltage systems) protect the console and the systems and do not cause excessive current consumption (e.g. if resistors are used)
6. Will another (larger) memory card work?
Any microSD cards up to 32 GB, formatted in the FAT16 or FAT32 file system with an allocation unit (cluster) size from 512 bytes to 64 KB, are supported. The card must enable communication in SPI mode. Some cards (especially from SanDisk) have a non-standard SPI mode and thus cause problems, which has been taken into account. Most cards should work fine.
7. Why the game X works properly on the emulator, and the cartridge does not work at all / displays incorrectly / does not display the image.
Emulators:
i. idealize situations (e.g. they assume that RAM is zeroed after startup),
ii. block illegal game operations (e.g. if the game uses CHR-ROM, attempts to write to CHR-ROM are ignored),
iii. try to fix invalid headers in games (e.g. if the NES header declares it is 128KB CHR-ROM and the game tries to
refer to further banks, they are taken modulo 128).
The case of i. Usually concerns unlicensed (amateur) games, which the developers did not test on the hardware. In this case, please contact the game developer directly to release the fix.
Case ii. it may concern, for example, Doki Doki Amusement Park, Krusty's Fun House games (in both the initial screen has a few tiles blurred because the game is trying to save something to CHR-ROM).
On the other hand, amateur games from Shiru (eg Aleter Ego, Zooming Secretary) have a wrong initialization function that clears the entire CHR-ROM area, as a result the game displays a black image. Patches for these games have already been released on forums.nesdev.com
8. Why is the progress bar not showing while loading the game, only the screen changing colors?
The processor, programming the PRG / CHR memory, intensively switches the PRG and CHR banks, so an attempt to display anything would involve the need to reload the set of tiles to a new bank, which would slow down the programming process.
9. What is the issue of legality?
By law, game ROMs are subject to copyright laws (and so are computer programs). You can have ROMs of games with original cartridges (backup is allowed). The memory card supplied with Krzysiocart is empty - the buyer himself records the games he / she is entitled to. In addition to thousands of licensed games, there are tons of legal, free fan-made games available on the internet (homebrew production)
Comments
Add a commentBravo for skill, persistence and execution :) Programming optimization. The 6502 is a real coder :) [Read more]
Beautiful work, craftsmanship and a masterpiece! Each time you read a colleague's post with flushed face :) Ten years ago I tried to do with the self-made C64 cartridge, but it did not live up to what... [Read more]
Mr. friend phanick, maybe you could publish your book about fpga, something for beginners, I would definitely buy it, because how to learn it from the best :D [Read more]
I have a question, maybe weird, because I haven't had much contact with Pegasus. What is mapper? What is he responsible for? For example, what is the difference between mmc1 and mmc2? On the page... [Read more]
A very nice design. However, I have a question. Does a colleague protect the pads entering the cartridge slot with something? They will fall asleep over time and there will be no contact. It would be worth... [Read more]
If it would be a ready / finished project, you can order a printed circuit board with gold plating of the contacts, the difference in price is negligible. [Read more]
I suggest sending one piece to Arhn.eu :) [Read more]
Amazing presentation, great idea. Contact me to pick up new electrode gadgets, in addition to 300 points you will also get gadgets. [Read more]
Although the project is interesting, I regret to notice that there are already better ready-made items. Starting from the original Nintendo mini-NES (cost about PLN 450 - I bought this console for PLN... [Read more]
What are you even comparing? Emulator for the actual console and the actual cartridge? You can do such an emulator for PLN 30-40. This is not the point. [Read more]
For most users, what counts is the end result, i.e. the ability to play their favorite games. Preferably on original equipment and in original games. Today it is unreal as everyone knows. Half measures... [Read more]
@mobor People are different, for some it is important to play and for others to play hardware. One will want to go somewhere for the pleasure of driving and what counts is to go, and the other will... [Read more]
Well, but I wrote clearly that you can buy a COMPLETE, NEW CONSOLE from Nintendo for 4 hundred and upload the entire NES romset to it The entire design, equipment and workmanship is from Nintendo, so... [Read more]
You don't understand fun. I have a spectrum _ for my own pleasure_ done on fpga, and that's what fun is all about. And whether something is commercial or not will decide the market [Read more]
I understand the fun and I wrote about it after all. Also about commerce. I am only criticizing this last aspect [Read more]
You can't criticize the commercial aspect - just because you can't see the market, it doesn't mean you don't. Ultimately, customers will verify this. [Read more]
How can that not be criticized? :) You want to buy it - just for yours. Time will show who was right [Read more]
Are these ROMs from emuparadise or Nintendo adding them? :) [Read more]
Nice :) A lot of work, but the pleasure of playing retro equipment must give you satisfaction. A few weeks ago I missed my old consoles, so I dug out my banana pi, gave a 16GB card, threw Lakki and now... [Read more]