diff --git a/lib/mk/meteor_libretro.mk b/lib/mk/meteor_libretro.mk
new file mode 100644
index 0000000..6fa7709
--- /dev/null
+++ b/lib/mk/meteor_libretro.mk
@@ -0,0 +1,18 @@
+LIBS = libretro libc stdcxx
+
+SHARED_LIB = yes
+
+PORT_DIR := $(call select_from_ports,meteor-libretro)/src/lib/meteor-libretro
+
+CORE_DIR := $(PORT_DIR)
+-include $(PORT_DIR)/libretro/Makefile.common
+
+CXX_DEF += -D__LIBRETRO__ -DNDEBUG -DFRONTEND_SUPPORTS_RGB565
+
+CC_WARN += -Wno-parentheses
+
+INC_DIR += $(PORT_DIR)/libretro $(PORT_DIR)/ameteor/include
+
+SRC_CC := $(notdir $(SOURCES_CXX))
+
+vpath %.cpp $(sort $(dir $(SOURCES_CXX)))
diff --git a/ports/meteor-libretro.hash b/ports/meteor-libretro.hash
new file mode 100644
index 0000000..c55094b
--- /dev/null
+++ b/ports/meteor-libretro.hash
@@ -0,0 +1 @@
+cf72badc0be2c5e20ec45453c5c75dc79bb366fd
diff --git a/ports/meteor-libretro.port b/ports/meteor-libretro.port
new file mode 100644
index 0000000..884e6ed
--- /dev/null
+++ b/ports/meteor-libretro.port
@@ -0,0 +1,11 @@
+LICENSE := GPL3
+VERSION := dev
+DOWNLOADS := meteor-libretro.archive
+
+OWNER := libretro
+REPO := meteor-libretro
+REV := 21412cf2d3d727ed513cd4c382e4f52c02ccc947
+URL(meteor-libretro) := https://github.com/$(OWNER)/$(REPO)/archive/$(REV).tar.gz
+SHA(meteor-libretro) := dd0812344e399a80273a8e8402d5e2982a8d7d70
+
+DIR(meteor-libretro) := src/libretro/meteor
diff --git a/run/meteor.run b/run/meteor.run
new file mode 100644
index 0000000..d4de3d6
--- /dev/null
+++ b/run/meteor.run
@@ -0,0 +1,195 @@
+# setting environment variable FORCE_QEMU permits running netperf in qemu
+set force_qemu [info exists ::env(FORCE_QEMU)]
+
+if {[expr [have_include "power_on/qemu"] && !$force_qemu]} {
+ puts "\Game emulation on Qemu is not recommended.\n"
+ exit
+}
+
+#
+# Check used commands
+#
+set wget [check_installed wget]
+set unzip [check_installed unzip]
+
+set build_components {
+ app/retro_frontend
+ drivers/audio
+ libretro/meteor
+ server/fb_upscale
+ server/input_remap
+}
+
+source ${genode_dir}/repos/base/run/platform_drv.inc
+# override default platform driver policy
+proc platform_drv_policy {} {
+ return {
+
+
+
+ }
+}
+
+build $build_components
+
+create_boot_directory
+
+import_from_depot \
+ genodelabs/src/[base_src] \
+ genodelabs/pkg/[drivers_interactive_pkg] \
+ genodelabs/src/init \
+ genodelabs/src/report_rom \
+
+#
+# Generate config
+#
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ }
+
+append_if [have_spec sdl] config {
+
+
+
+
+
+
+
+
+
+ }
+
+append_platform_drv_config
+
+append_if [have_spec vesa] config {
+
+
+
+
+
+ }
+
+append_if [have_spec pl11x] config {
+
+
+
+ }
+
+append_if [have_spec ps2] config {
+
+
+
+
+ }
+
+append config {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+install_config $config
+
+if {![file exists bin/game.gba]} {
+ puts ""
+ puts "A Game Boy Advance cartridge image must be provided at 'bin/game.gba'"
+ puts ""
+ exit 1
+}
+
+# generic modules
+append boot_modules {
+ fb_upscale
+ input_remap
+ libc.lib.so
+ libm.lib.so
+ meteor_libretro.lib.so
+ retro_frontend
+ stdcxx.lib.so
+} [audio_drv_binary] {
+ game.gba
+}
+
+append_platform_drv_boot_modules
+
+build_boot_image $boot_modules
+
+append qemu_args " -soundhw es1370 "
+
+run_genode_until forever
diff --git a/src/libretro/meteor/target.mk b/src/libretro/meteor/target.mk
new file mode 100644
index 0000000..a8f8c50
--- /dev/null
+++ b/src/libretro/meteor/target.mk
@@ -0,0 +1,5 @@
+TARGET = meteor_libretro-dummy
+LIBS = meteor_libretro
+SRC_CC = main.cc
+
+vpath %.cc $(call select_from_repositories,src/test/libports)