libretro / RetroArch

Cross-platform, sophisticated frontend for the libretro API. Licensed GPLv3.
http://www.libretro.com
GNU General Public License v3.0
10.07k stars 1.81k forks source link

[Feature Request] Is it possile to support "makecode arcade engine" ??? #13738

Open whmzsu opened 2 years ago

whmzsu commented 2 years ago

Is it possile to support "makecode arcade engine" ??? So that we can play game on retro, not special hardware console.

From https://arcade.makecode.com/hardware/adding " MCU MakeCode Arcade currently only targets ARM Cortex-based MCUs, and we have only tested Cortex M4F.

The Arcade display resolution and colour depth requires 160x120x4 bits for a display buffer, taking a little under 10kB. We need at least two sets of display data for double-buffering and the user is very likely to use two or three more for various sprite operations. This, together with heap fragmentation concerns, requires the hardware to have at least 96kB of RAM. Programs with heavy memory requirements may only run if there is more than 96kB of RAM. In addition 512kB of flash and a processor speed of at least 64MHz or more are recommended.

We currently support two hardware variants which match the above criteria:

D51 based on Microchip ATSAMD51G19A (Cortex M4F, 192kB of RAM, 512kB of flash, 120MHz) F4 (formerly F401) based on one of the ST Micro STM32F4xx chips: STM32F401xE (Cortex M4F, 96kB of RAM, 512kB of flash, 84MHz) STM32F411xE (Cortex M4F, 128kB of RAM, 512kB of flash, 96MHz) STM32F412xE (Cortex M4F, 128kB of RAM, 512kB of flash, 96MHz) STM32F412xG (Cortex M4F, 256kB of RAM, 1024kB of flash, 96MHz) The STM32F41x series is listed to run at 100MHz, but to support USB we need to run them at 96MHz. We support 48 pin and larger packages. Only STM32F412 in 64 pin and larger packages support a parallel display interface, which is required if you want to use an ILI9341 320x240 display (see display).

Additionally, we’re considering adding support for the following in the future (but not in the next 6 months):

N840 based on Nordic NRF52840 (Cortex M4F, 256kB of RAM, 1024kB of flash, 64MHz) Of course, many other choices are possible and we would love to hear your feedback.

"

jan4984 commented 2 years ago

Of cause you can make a emulator for your devices with RetroArch. It will be much easier to make a TypeScript runtime other than making a hardware emulator. For all makecode arcade games can be saved as a .PNG file which all TypeScript codes and asserts packaged in.

libretro is an API that exposes generic audio/video/input callbacks. A frontend for libretro (such as RetroArch) handles video output, audio output, input and application lifecycle.

tamlyn commented 9 months ago

Expanding on the answer above, in case it helps anyone:

Libretro

MakeCode

The end user workflow would be: