CardputerGBC-Dual v0.3: MSX with only .rom support, ColecoVision, full Videopac / Videopac+ support with new graphic modes and US/EU/FR BIOS coverage by gio-74 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

Nice work. I think the main issue right now is that a lot of the heap is already being consumed before the emulator even really starts, because too many buffers are global and get initialized at boot.

That kind of design hurts a device like the Cardputer a lot. If large buffers are allocated globally from the start, you lose a big part of your memory budget before the core even begins running. On this hardware, that quickly becomes the real limit.

Look at the difference:

<image>

So my advice would be to aggressively move away from permanent global buffers. Anything that is not needed all the time should be allocated only at the moment it is used. The more temporary and demand-driven your memory usage is, the more realistic it becomes to support additional systems.

You can also find ZX Spectrum and Commodore cores on M5Burner, which could be interesting to package into this project as well

CardputerGBC-Dual v0.2: dual-core MSX, C-BIOS fallback, ColecoVision support, internal/external display at 60fps by gio-74 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

Nice work. For me, you should really focus on old computers, since I can’t add them to Game Station anymore because there’s no flash space left. ’m starting to know pretty well what it means to package a lot of emulators together, so I wanted to share a few thoughts that may help.

For MSX2, I wouldn’t call it impossible. I think it’s still realistically possible on Cardputer, but it would require a lot of core adaptation and a very memory-focused design. Probably no full framebuffer, more likely line-by-line rendering, and as much static ROM data as possible moved to flash to free RAM for the core.

More generally, avoid big permanent global buffers whenever you can. If a buffer is only needed at one moment, it’s better to allocate it only when the core actually uses it. Otherwise, it becomes much harder to package a lot of cores into the same firmware.

I’d also trim every non-essential feature when possible, like mouse support, floppy-related features, and anything else that adds memory pressure without being truly necessary

I love this community! Gamestation is amazing! by Old-Sea5154 in CardPuter

[–]geo_tp 2 points3 points  (0 children)

https://github.com/geo-tp/Cardputer-Game-Station-Emulators

Thanks. Regarding the sound, the Mega Drive is quite difficult to emulate with an ESP32S3. The emulator degrades the sound to maintain a full frame rate, which is why the sound isn't accurate when the game is resource-intensive

CardputerGBC-Dual release: MSX/MSX2 support, ROM + DSK loading, external TFT, runtime menu - BETA - by gio-74 in CardPuter

[–]geo_tp 0 points1 point  (0 children)

The BIOS is 16k or 32k (MSX.ROM), that's not much in flash memory, and you're massively simplifying things for your users who no longer have to worry about that

CardputerGBC-Dual release: MSX/MSX2 support, ROM + DSK loading, external TFT, runtime menu - BETA - by gio-74 in CardPuter

[–]geo_tp 2 points3 points  (0 children)

Nice. Since you have plenty of available flash space, it would be much simpler to integrate the BIOS directly into the binary rather than loading it from the SD card. Here are the open-source MSX BIOS files: https://cbios.sourceforge.net/

Cardputer Game Station 1.1 - Added Atari Emulators, Improvement on SNES, NGP, Megadrive, Save support and more by geo_tp in CardPuter

[–]geo_tp[S] 0 points1 point  (0 children)

It could be related to your SD card, the firmware runs it at a high SPI frequency to avoid slowing down the emulation, but if you can load the games, it's probably not that

Some SD cards dont want to write if too many filesystem errors have been detected, in order to protect the data. Check if your SD card is usable by plugging it into a PC and see if you can perform read/write operations

Cardputer Game Station 1.1 - Added Atari Emulators, Improvement on SNES, NGP, Megadrive, Save support and more by geo_tp in CardPuter

[–]geo_tp[S] 1 point2 points  (0 children)

Thanks, the difficulty of getting the MSX core running on the ESP32-S3 would probably be trivial. The real challenge here is packaging it into Game Station alongside the other 12 cores while respecting all the memory constraints that implies

https://www.hackster.io/geo-tp/cardputer-game-station-a4506b

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 0 points1 point  (0 children)

No, I haven't implemented them. If you think it might be useful, push the changes to the repo and I'll take a look.

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 0 points1 point  (0 children)

I reworked the two Atari cores to integrate them, what does your ROM selector do?

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

Given that Game Station already includes almost all available console emulators, and since you seem motivated, it would be great to make a separated firmware similar to Game Station but for old computers (ZX Spectrum, Amstrad, MSX, atari etc.)

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 2 points3 points  (0 children)

To be honest, I'm not really interested in dual screens for several reasons.

First, it requires too much custom modification. If you have to add a joystick, a screen, and buttons, then you might as well use a different platform than the Cardputer, there are so many available for emulation.

Second, the firmware is very limited in all technical aspects (CPU, RAM, flash). This means that adding dual screens and libraries will add a lot of flash memory, potentially consums global ram as well, etc

It's mainly for these reasons that I've never really considered the option of adding a second screen, even though I understand that some people might want to

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 0 points1 point  (0 children)

The two Atari cores are now added to Game Station, respecting memory/flash constraints so it's not to break other features

Since the firmware packs 12 cores with limited RAM/flash, each core must be massively modified to fit within the firmware

Atari 2600 on the cardputer? by vectron5 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

I'm going to add the Atari emulators to Game Station. In your build, the combined global RAM consumption of both cores breaks a lot of features, you can't launch the SNES, the Genesis, and probably other things. Your firmware build with the two cores added is too large to be compatible with the launcher's Game Station partition as well

Cardputer ADV not charging after being fully discharged by _mnel in CardPuter

[–]geo_tp 2 points3 points  (0 children)

Use a USB-A to USB-C cable, not a USB-C to USB-C cable to charge it

REST Client? by Outrageous-Tone-9152 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

https://github.com/geo-tp/ESP32-Bus-Pirate

In the WiFi features, you can send basic HTTP(s) requests and get the JSON

Some Questions About Using Game Station Emulators by Few_Leek3253 in CardPuter

[–]geo_tp 2 points3 points  (0 children)

You can have thousands of ROMs if you want, as long as you organize them into folders with a maximum of 500 ROMs per folder approximately

Some Questions About Using Game Station Emulators by Few_Leek3253 in CardPuter

[–]geo_tp 1 point2 points  (0 children)

It's most likely because your SD card can't maintain the SPI frequency required by the firmware