
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(malpa)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)