Is it possible to run desmume or melonds on the gameshell?
tested desmume retroarch core, 7 fps on mario
i try pandora version of drastic, crash with illegal instruction
melonds 9 fps with it’s retroarch core (seem pretty old)
git version of native melonds go much faster (i think 20 fps) with sound but need some config
Oh ok. Sounds like I’m probably gonna get a nintendo switch lite if i want ds games too then.
finally found a compatible drastic, https://github.com/Retro-Arena/binaries/blob/master/odroid-xu4/drastic.tar.gz
run full speed with sound on mario
Oh. Thank you. How do I get this installed on there?
like any other programs just uncrunch the archive and transfer files anywhere you want
on a fist try, run it by ssh :
cd *drastic location* export DISPLAY=:0 ./drastic *your ds rom*
for me it was pretty slow at first run, after first run emu will create his config files in his own folder, go tweak it with keys ect, for a first try select button will valid menu & jump in mario
on second step you will need create a config file for the launcher to associate nds roms folder to open with it, or on arch associate nds roms with the dractic executable
as drastic will use mouse to emulate touch screen you may need to flash your keypad with mouse support firmware
I’m pretty new to this so how would I tweak the config files that it creates with keys and how would you create a config file for the launcher to associate nds roms folder to open with it? Thx for the help.
i can’t test but check others current existing action.config files like https://github.com/clockworkpi/Menu/blob/master/20_Retro%20Games/Pcsx%2B/action.config
assuming you extract drastic folder into /home/cpi/apps/emulators/ and got your roms into /home/cpi/games/ds/ a file like that may work :
ROM=/home/cpi/games/ds ROM_SO=/home/cpi/apps/emulators/drastic/drastic EXT=nds LAUNCHER= TITLE=ds roms SO_URL=
It looks as though for now, we can’t edit the controls for Drastic.
I’ve tried to use xmodmap to make a custom entry as follows:
! -*- coding: utf-8 -*- ! 2020-03-10 ! set Gameshell keys to Pandora Drastic Mapping ! keycode 86 = SPACE 32 ! keycode 9 = PANDORA 147 ! keycode 45 = A 278 ! keycode 44 = B 279 ! keycode 30 = X 280 ! keycode 31 = Y 281 ! keycode 29 = L 303 ! keycode 32 = R 305 ! keycode 65 = Select 306 ! keycode 36 = Start 308 keycode 86 = 0020 keycode 9 = 0093 keycode 45 = 0116 keycode 44 = 0117 keycode 30 = 0118 keycode 31 = 0119 keycode 29 = 012f keycode 32 = 0131 keycode 65 = 0132 keycode 36 = 0134
and incorporating a “kill switch” using xbindkeys:
# RETURN KEYS TO NORMAL "xmodmap ~/apps/emulators/drastic/.xmodmap_original && xbindkeys --defaults > ~/.xbindkeysrc && killall xbindkeys && killall drastic" Escape
Theoretically, it should work however I don’t think I’ve gotten the correct hex values of what the expected output from Drastic is meant to be. From the looks of things, it was written for the Pandora console. I can find a table of the suspected keycodes correlating to each input key, however I need either the keysym or the hex code for each button to work with xmodmap. The mapping I have currently made was one I came up with, searching high and low for whatever I could re: how the Pandora is mapped. In a nutshell, it sounds like no one in the Pandora community can come to any consensus as to what the mappings actually are.
Does anyone possibly own a pandora, and could they possibly run
xev and show the printouts for each of the Pandora’s “ABXYLR+START+SELECT+HOME” inputs?
I have also reached out and contacted the author, and asked politely if he could possibly provide the source code to allow us to customise it to the Gameshell’s control scheme.
For now, we may be able to get it working.
this is not pandora version but odroid xu4 one,
have you try run drastic without a rom ?
there is a menu with options & controls, yet it’s too small to see anything on the gameshell screen, need try hdmi display
Ah! I thought it was something that was ported from the Pandora to work on the Odroid XU4. Must have just been a leftover readme file.
I didn’t even consider running it without a rom! Good idea! I’ll probably need to plug in a keyboard too, since the only mappings that seem to be active are the D-Pad, Escape, Space and Enter.
I’ll give that a go right away. Thanks for the tip.
Thanks again @r043v. I never would have thought to run it without a rom loaded.
I’ve put together a config file with settings that work well with the Gameshell. Either edit your existing config, or make a new file called drastic.cfg saved in
~apps/emulators/drastic/config/ or wherever you saved your drastic directory.
frameskip_type = 2 frameskip_value = 4 show_frame_counter = 0 screen_orientation = 2 screen_scaling = 2 screen_swap = 0 savestate_number = 0 fast_forward = 0 enable_sound = 1 clock_speed = 0 threaded_3d = 1 mirror_touch = 0 compress_savestates = 1 savestate_snapshot = 1 unzip_roms = 1 backup_in_savestates = 1 ignore_gamecard_limit = 0 frame_interval = 0 trim_roms = 0 fix_main_2d_screen = 0 disable_edge_marking = 0 hires_3d = 0 use_rtc_custom_time = 0 rtc_custom_time = 0 rtc_system_time = 0 firmware.username = Gameshell firmware.language = 1 firmware.favorite_color = 0 firmware.birthday_month = 1 firmware.birthday_day = 2 enable_cheats = 1 controls_a[CONTROL_INDEX_UP] = 338 controls_a[CONTROL_INDEX_DOWN] = 337 controls_a[CONTROL_INDEX_LEFT] = 336 controls_a[CONTROL_INDEX_RIGHT] = 335 controls_a[CONTROL_INDEX_A] = 107 controls_a[CONTROL_INDEX_B] = 106 controls_a[CONTROL_INDEX_X] = 105 controls_a[CONTROL_INDEX_Y] = 117 controls_a[CONTROL_INDEX_L] = 121 controls_a[CONTROL_INDEX_R] = 111 controls_a[CONTROL_INDEX_START] = 13 controls_a[CONTROL_INDEX_SELECT] = 32 controls_a[CONTROL_INDEX_HINGE] = controls_a[CONTROL_INDEX_TOUCH_CURSOR_UP] = controls_a[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = controls_a[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = controls_a[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = controls_a[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = controls_a[CONTROL_INDEX_MENU] = 8 controls_a[CONTROL_INDEX_SAVE_STATE] = controls_a[CONTROL_INDEX_LOAD_STATE] = controls_a[CONTROL_INDEX_FAST_FORWARD] = 27 controls_a[CONTROL_INDEX_SWAP_SCREENS] = controls_a[CONTROL_INDEX_SWAP_ORIENTATION_A] = 108 controls_a[CONTROL_INDEX_SWAP_ORIENTATION_B] = 104 controls_a[CONTROL_INDEX_LOAD_GAME] = controls_a[CONTROL_INDEX_QUIT] = controls_a[CONTROL_INDEX_UI_UP] = 338 controls_a[CONTROL_INDEX_UI_DOWN] =337 controls_a[CONTROL_INDEX_UI_LEFT] = 336 controls_a[CONTROL_INDEX_UI_RIGHT] = 335 controls_a[CONTROL_INDEX_UI_SELECT] = 107 controls_a[CONTROL_INDEX_UI_BACK] = 106 controls_a[CONTROL_INDEX_UI_EXIT] = 27 controls_a[CONTROL_INDEX_UI_PAGE_UP] = 111 controls_a[CONTROL_INDEX_UI_PAGE_DOWN] = 121 controls_a[CONTROL_INDEX_UI_SWITCH] = 32 controls_b[CONTROL_INDEX_UP] = controls_b[CONTROL_INDEX_DOWN] = controls_b[CONTROL_INDEX_LEFT] = controls_b[CONTROL_INDEX_RIGHT] = controls_b[CONTROL_INDEX_A] = controls_b[CONTROL_INDEX_B] = controls_b[CONTROL_INDEX_X] = controls_b[CONTROL_INDEX_Y] = controls_b[CONTROL_INDEX_L] = controls_b[CONTROL_INDEX_R] = controls_b[CONTROL_INDEX_START] = controls_b[CONTROL_INDEX_SELECT] = controls_b[CONTROL_INDEX_HINGE] = controls_b[CONTROL_INDEX_TOUCH_CURSOR_UP] = controls_b[CONTROL_INDEX_TOUCH_CURSOR_DOWN] = controls_b[CONTROL_INDEX_TOUCH_CURSOR_LEFT] = controls_b[CONTROL_INDEX_TOUCH_CURSOR_RIGHT] = controls_b[CONTROL_INDEX_TOUCH_CURSOR_PRESS] = controls_b[CONTROL_INDEX_MENU] = controls_b[CONTROL_INDEX_SAVE_STATE] = controls_b[CONTROL_INDEX_LOAD_STATE] = controls_b[CONTROL_INDEX_FAST_FORWARD] = controls_b[CONTROL_INDEX_SWAP_SCREENS] = controls_b[CONTROL_INDEX_SWAP_ORIENTATION_A] = controls_b[CONTROL_INDEX_SWAP_ORIENTATION_B] = controls_b[CONTROL_INDEX_LOAD_GAME] = controls_b[CONTROL_INDEX_QUIT] = controls_b[CONTROL_INDEX_UI_UP] = controls_b[CONTROL_INDEX_UI_DOWN] = controls_b[CONTROL_INDEX_UI_LEFT] = controls_b[CONTROL_INDEX_UI_RIGHT] = controls_b[CONTROL_INDEX_UI_SELECT] = controls_b[CONTROL_INDEX_UI_BACK] = controls_b[CONTROL_INDEX_UI_EXIT] = controls_b[CONTROL_INDEX_UI_PAGE_UP] = controls_b[CONTROL_INDEX_UI_PAGE_DOWN] = controls_b[CONTROL_INDEX_UI_SWITCH] =
DS Controls = Same mapping as gameshell, except for hinge control. It doesn’t seem to want to wake up from the closed state.
Quit = Menu (hard coded seemingly - can’t change this)
Access the menu = Shift + Menu
Switch screen = R2 (Shift + A)
Change from full screen/dual screen = L2 (Shift + B)
(It starts in full single screen mode)
Menu navigation: (extremely hard to read)
Select = A
Back = B
Page up = R1 (Shift + X)
Page down = L1 (Shift + Y)
Strangely, while using it plugged in via HDMI, it wouldn’t load; saying it can’t find the correct bios files etc. I’ll look into it later, but for now it isn’t too much of a problem.
So far I’ve tried for about 5 mins each:
New Super Mario Bros. - Works Perfectly
Casltavania Dawn of Sorrow - Works Perfectly (you’ll need the mouse mod in the arduino to sign your name)
Castlevania Portrait of Ruin - Works Perfectly! (you’ll need the mouse mod to draw your emblem)
Castlevania Order of Ecclesia - Works Perfectly (you might need the touchpad use for magnesis… it’s been a while!)
Super Mario 64 - Works Perfectly (you’ll want the light bar key attachment)
Mariokart DS - Works Perfectly (you’ll want to use the light bar key attachment)
Mario and Luigi Partners in Time - Works Perfectly!
Legend of Zelda Phantom Hourglass - Works Perfectly (you’ll need the mouse mode in the arduino to … well play the game - I strongly recommend the D-Pad patch)
Legend of Zelda Spirit Tracks - Works Perfectly (Same as above - get the patch here
Phoenix Wright Ace Attorney - Works Perfectly
Children of Mana - Works Perfectly!
I was honestly expecting to bump into more hurdles, but this seemingly runs practically perfect for every game I’ve tried. I was going to report back on more games, but I think I know what the results are going to be.
great work !
yes it run pretty great, exophase made an awesome emulator, it’s also the gpsp creator
i was also get trouble while run it with hdmi, no bios issue but black screen & hang just after the launch, it’s do the same while launch it by ssh using X11 forwarding, maybe a gpu limitation while we use high resolution, we may try using a bit xrandr before the launch
So, I have followed this to the best of my ability. I even went so far as to copy the directories from the Custom DEOT image, but I cannot get this to run on the stock OS v0.5.
What am I doing wrong here, @javelinface? The emulator goes to the loading screen, fades to black, and then returns to the home screen. Are there some hidden things I am missing?
try launch it directly by ssh to see emulator output
cd *drastic location* export DISPLAY=:0 ./drastic *your ds rom*
Would it be possible to give me a more specific example of what that would look like? Is the following write out accurate?
./drastic Super Mario 64 DS.nds
you may escape the rom filename spaces and give it real path, but yes
Thanks, @r043v that did the trick. The only other problem I’m encountering is (obviously) the lack of touchscreen. I noticed in the control mapping @javelinface mapped out that there is an option for [CONTROL_INDEX_TOUCH_CURSOR_PRESS]. Is there a list of mapping numbers somewhere I could use to program the middle light bar button (or really any other available button) as a general “touch the screen” button?
Update: Nevermind, I managed to remap one of the buttons, but there was an obvious issue with the lack of control regarding where you click. I guess I will have to look further into the mouse mod, but I am admittedly intimidated at the idea of modifying the firmware.
I am admittedly intimidated at the idea of modifying the firmware
don’t be, it’s very useful and has not any real risk to do
You’re right! It wasn’t too bad once I sat down to do it. Thanks for your help, @r043v!