Skip to content

MSX.emu - RetroBIOS

Type standalone
Classification Community forks
Source https://github.com/Rakashazi/emu-ex-plus-alpha
Upstream http://bluemsx.msxblue.com/
Version 1.5.85
Profiled 2026-08-12
Cores msx-emu, MSX.emu, MSX-EMU
Systems msx, msx1, msx2, msx2plus, msxturbor, colecovision
Technical notes

Android and Linux member of the EX Emulator series by Robert Broglia, published as com.explusalpha.MsxEmu (MSX.emu/metadata/conf.mk:2,4,6,7, README.md:3-4) and reached by ES-DE through its MSX-EMU find rule. blueMSX is vendored under MSX.emu/src/blueMSX and driven by the app's own board, ROM loader and archive layers (MSX.emu/src/CMakeLists.txt:6-16). Content is read from .rom, .mx1, .mx2 and .col cartridge images and from .dsk disk images, directly or as the first matching entry of a .zip, .7z or .rar (MSX.emu/src/main/system.ccm:83-87, MSX.emu/src/main/Main.cc:521-618). A disk image of 1 MB or more is mounted on a Sunrise IDE controller instead of a floppy drive (MSX.emu/src/main/Main.cc:549,556-561,588-603).

Two of blueMSX's board types are built, every MSX variant and ColecoVision. createBoard returns 0 for anything else, and SVI, ColecoAdam, SG-1000, SF-7000 and SC-3000 have neither a board file in the build nor their mappers (MSX.emu/src/main/Main.cc:171-200, MSX.emu/src/CMakeLists.txt:80-83, MSX.emu/src/blueMSX/Common/MsxTypes.h:145,150).

Everything the emulator loads comes from a machine definition. machineCreate opens Machines//config.ini and reads its [Slots] section, where each line carries a slot, a subslot, a start page, a page count, a numeric ROM type and the ROM's path (MSX.emu/src/blueMSX/Board/Machine.c:300-339,450-468). machineInitialize then loads each named path, and a file it cannot read sets success to 0 for every ROM type but one, which fails msxCreate or colecoCreate and ends the load with "Error loading machine files for" (MSX.emu/src/blueMSX/Board/Machine.c:1168-1181, MSX.emu/src/blueMSX/Board/MSX.c:247,277-281, MSX.emu/src/blueMSX/Board/Coleco.c:403,416-420, MSX.emu/src/main/Main.cc:215-219,262-269). Every ROM a definition names is therefore required for that machine, and only for it.

Paths are resolved against the user's BIOS folder first and the application bundle second (MSX.emu/src/main/RomLoader.cc:57-92,94-133,135-144). That folder may be a directory or an archive and is refused unless it carries a Machines entry (MSX.emu/src/main/options.cc:212-228); with none set the app falls back to the asset path on Linux and to the storage path elsewhere (MSX.emu/src/main/options.cc:230-243). The machine picker lists every subdirectory holding a config.ini and appends the three bundled C-BIOS names on Android, where the asset directory enumeration skips directories (MSX.emu/src/main/EmuMenuViews.cc:32-97,548-608).

The default machine is MSX2 and the default Coleco machine is COL - ColecoVision; a .col name picks the second and a session setting overrides both (MSX.emu/src/main/system.ccm:75-76, MSX.emu/src/main/Main.cc:534,563-577). Neither default is bundled. The application ships only the three C-BIOS machines in its assets (MSX.emu/res/firmware/Machines, symlinked into MSX.emu/res/android/assets), which run cartridge images; the definitions and ROMs behind every other name come from MSX.emu.zip, the firmware set on the author's site, whose Machines folder holds MSX, MSX2, MSX2+, MSXturboR, COL - ColecoVision and Shared Roms. Its MSXturboR definition spells MSXTR, MSXTREXT, MSXTRMUS, MSXTROPT and MSXDOS23 with a lowercase .rom extension where blueMSX's own set spells them .ROM, and the loader opens the string verbatim.

One ROM path is written in the code rather than in a definition, Machines/Shared Roms/SUNRISEIDE.rom (MSX.emu/src/blueMSX/Memory/MegaromCartridge.c:302-311). The four others cannot be reached. Beer IDE, Gouda SCSI and the two Nowind images hang off cart names the app never passes and off mappers EXCLUDE_IDE_DEVICES and EXCLUDE_NOWIND compile out, and the FMPAC branch needs ROM_FMPAC as the incoming type where boardChangeCartridge only ever passes ROM_UNKNOWN, ROM_SCC, ROM_SCCPLUS and ROM_SUNRISEIDE (MSX.emu/src/blueMSX/Memory/MegaromCartridge.c:283-335, MSX.emu/src/blueMSX/Common/MsxTypes.h:145-151, MSX.emu/src/main/Main.cc:56-70, MSX.emu/src/main/EmuMenuViews.cc:385-413). Two of them are also spelled in lower case there against the upper case of the set.

No hash is checked anywhere, and the sizes below are the ones the shipped set carries. The machine definitions still carry one, because config.ini is the name of every definition there is and nothing else tells two of them apart; the values are those of the emulator's own assets and of the author's firmware set. A single length test exists, the Kanji mapper taking 131072 or 262144 bytes and nothing else (MSX.emu/src/blueMSX/Memory/romMapperKanji.c:141-149). The other mappers refuse only a ROM that does not fit the pages left in its slot, which is a property of the definition rather than of the dump (MSX.emu/src/blueMSX/Memory/romMapperNormal.c:60-65, MSX.emu/src/blueMSX/Memory/romMapperCasette.c:58-68, MSX.emu/src/blueMSX/Memory/romMapperMsxMusic.c:55-68, MSX.emu/src/blueMSX/Memory/romMapperDRAM.c:88-99), and the Philips FDC, Panasonic FDC and MoonSound mappers test nothing at all (MSX.emu/src/blueMSX/Memory/romMapperPhilipsFdc.c:139-146, MSX.emu/src/blueMSX/Memory/romMapperTC8566AF.c:236-262, MSX.emu/src/blueMSX/Memory/romMapperMoonsound.c:129-158).

The ROM database is compiled in. mediaDbGuessRom matches a cartridge's SHA-1 against the table of EmbeddedRomDBData.h to pick its mapper, the TinyXML and MediaDb.cpp sources that would read msxromdb.xml and msxsysromdb.xml are built only under useXMLDB, and the two calls that loaded them are commented out (MSX.emu/src/main/MediaDb.cc:50-59, MSX.emu/src/CMakeLists.txt:174-188, MSX.emu/src/main/system.ccm:165-167). The floppy drive sounds read nothing either: NO_EMBEDDED_SAMPLES turns fdcAudioCreate into a stub and takes the FdcRead.wav and FdcMotor.wav reads with it (MSX.emu/CMakeLists.txt:33, MSX.emu/src/blueMSX/IoDevice/FdcAudio.c:35-42,3456-3486).

Per content the app writes and reads files under its save path, .cmos for a battery backed clock, an SRAM image named after the cartridge, and .sta save states in blueMSX's own zip format (MSX.emu/src/blueMSX/Board/MSX.c:232-233, MSX.emu/src/blueMSX/Memory/sramLoader.c:36-74,81-99, MSX.emu/src/main/Main.cc:45,380-383,385-429). Settings live in MsxEmu.config (MSX.emu/src/main/AppMeta.cc:32). gpOverlay.png, kbOverlay.png, ui.png and the shader sources are drawn by the framework from the application bundle.

81 files | 35 required, 46 optional | 81 in repo, 0 missing Categories: 72 BIOS, 9 game data

config.ini required in repo game_data bundled
C-BIOS MSX1 machine definition

cbios_main_msx1.rom required in repo bundled
C-BIOS MSX1 main ROM, slot 0-0 from page 0

cbios_logo_msx1.rom required in repo bundled
C-BIOS MSX1 boot logo, slot 0-0 from page 4

config.ini required in repo game_data bundled
C-BIOS MSX2 machine definition

cbios_main_msx2.rom required in repo bundled
C-BIOS MSX2 main ROM, slot 0-0 from page 0

cbios_logo_msx2.rom required in repo bundled
C-BIOS MSX2 boot logo, slot 0-0 from page 4

cbios_sub.rom required in repo bundled
C-BIOS MSX2 sub ROM, slot 3-0

config.ini required in repo game_data bundled
C-BIOS MSX2+ machine definition

cbios_main_msx2+.rom required in repo bundled
C-BIOS MSX2+ main ROM, slot 0-0 from page 0

cbios_logo_msx2+.rom required in repo bundled
C-BIOS MSX2+ boot logo, slot 0-0 from page 4

cbios_sub.rom required in repo bundled
C-BIOS MSX2+ sub ROM, slot 3-0, same bytes as the MSX2 C-BIOS sub ROM

cbios_music.rom required in repo bundled
C-BIOS MSX-MUSIC ROM, slot 3-1 from page 2

cbios.txt optional in repo game_data bundled
C-BIOS 0.29 release notes and licence, bundled beside the machine folders

config.ini required in repo game_data
MSX1 machine definition

config.ini required in repo game_data
MSX2 machine definition, the default MSX machine

config.ini required in repo game_data
MSX2+ machine definition

config.ini required in repo game_data
MSX turbo R machine definition

config.ini required in repo game_data
ColecoVision machine definition, the default Coleco machine

MSX.rom required in repo
MSX1 main BIOS of the MSX machine, mapped through the cassette patch mapper

PHILIPSDISK.rom required in repo
Philips floppy disk ROM, named by the MSX and MSX2 machine definitions

MSX2.rom required in repo
MSX2 main BIOS of the MSX2 machine

MSX2EXT.rom required in repo
MSX2 sub ROM of the MSX2 machine

MSX2PMUS.rom required in repo
MSX-MUSIC ROM, named by the MSX2 and MSX2+ machine definitions

MOONSOUND.rom required in repo
MoonSound wave ROM, named by the MSX2, MSX2+ and turbo R machine definitions

XBASIC2.rom required in repo
X-BASIC II ROM, named by the MSX2, MSX2+ and turbo R machine definitions

MSX2P.rom required in repo
MSX2+ main BIOS of the MSX2+ machine

MSX2PEXT.rom required in repo
MSX2+ sub ROM of the MSX2+ machine

KANJI.rom required in repo
Kanji character ROM, named by the MSX2+ and turbo R machine definitions

MSXKANJI.rom required in repo
Kanji BASIC ROM, named by the MSX2+ and turbo R machine definitions

PANASONICDISK.rom required in repo
Panasonic floppy disk ROM of the MSX2+ machine

MSXTR.rom required in repo
turbo R main BIOS, mapped through the Panasonic DRAM mapper

MSXTREXT.rom required in repo
turbo R sub ROM, mapped through the Panasonic DRAM mapper

MSXTRMUS.rom required in repo
turbo R MSX-MUSIC ROM

MSXTROPT.rom required in repo
turbo R firmware ROM

MSXDOS23.rom required in repo
MSX-DOS 2.3 disk ROM of the turbo R machine

coleco.rom required in repo
ColecoVision BIOS, slot 0-0 page 0

SUNRISEIDE.rom optional in repo
Sunrise IDE controller ROM

MSXAR.ROM optional in repo
MSX1 Arabic BIOS

ARAB1.ROM optional in repo
MSX1 Arabic character ROM

MSXBR.rom optional in repo
MSX1 Brazilian BIOS

MICROSOLDISK.ROM optional in repo
Microsol floppy disk ROM of the Brazilian machines

MSXFR.rom optional in repo
MSX1 French BIOS

MSXG.rom optional in repo
MSX1 German BIOS

MSXJ.rom optional in repo
MSX1 Japanese BIOS

MSXKR.rom optional in repo
MSX1 Korean BIOS

MSXHAN.rom optional in repo
MSX1 Korean Hangul ROM

MSXR.rom optional in repo
MSX1 Russian BIOS

MSXR2.rom optional in repo
MSX1 Estonian BIOS

MSXSE.ROM optional in repo
MSX1 Swedish BIOS

MSXSP.rom optional in repo
MSX1 Spanish BIOS

NATIONALDISK.rom optional in repo
National floppy disk ROM, shared by eight MSX1 definitions

GCVMX80.ROM optional in repo
Microsol VMX-80 character ROM

RS232.ROM optional in repo
RS-232 interface ROM

FMPAC.rom optional in repo
FM-PAC cartridge ROM

BEERIDE.ROM optional in repo
Beer IDE controller ROM

NOVAXIS.rom optional in repo
Gouda SCSI controller ROM

nowindDos1.rom optional in repo
Nowind MSX-DOS 1 image

nowindDos2.rom optional in repo
Nowind MSX-DOS 2 image

MSX2AR.ROM optional in repo
MSX2 Arabic BIOS

MSX2AREXT.ROM optional in repo
MSX2 Arabic sub ROM

ARABIC.rom optional in repo
MSX2 Arabic character ROM

PAINT.rom optional in repo
Arabic Painter ROM of the MSX2 Arabic definition

SWP.rom optional in repo
Arabic word processor ROM of the MSX2 Arabic definition

MSX2BR.rom optional in repo
MSX2 Brazilian BIOS

MSX2BREXT.rom optional in repo
MSX2 Brazilian sub ROM

MSX2FR.rom optional in repo
MSX2 French BIOS

MSX2FREXT.rom optional in repo
MSX2 French sub ROM

MSX2G.rom optional in repo
MSX2 German BIOS

MSX2GEXT.rom optional in repo
MSX2 German sub ROM

MSX2J.rom optional in repo
MSX2 Japanese BIOS

MSX2JEXT.rom optional in repo
MSX2 Japanese sub ROM

MSX2KR.rom optional in repo
MSX2 Korean BIOS

MSX2KREXT.rom optional in repo
MSX2 Korean sub ROM

MSX2HAN.rom optional in repo
MSX2 Korean Hangul ROM

HANGUL.rom optional in repo
Korean Hangul character ROM

MSX2R.rom optional in repo
MSX2 Russian BIOS

MSX2R2.ROM optional in repo
MSX2 Estonian BIOS

MSX2REXT.rom optional in repo
MSX2 sub ROM of the Russian and Estonian definitions

MSX2SE.rom optional in repo
MSX2 Swedish BIOS

MSX2SP.rom optional in repo
MSX2 Spanish BIOS

MSX2SPEXT.rom optional in repo
MSX2 Spanish sub ROM

Generated on 2026-08-23T16:12:06Z