글쎄요, 저는 제가 하고 싶은 일을 다시 하려고 노력합니다. 반복해서 죄송합니다. 이 질문을 더 객관적으로 만드는 방법을 모르겠습니다.
"Xfce Desktop" 및 "" 파일과 함께 사용하기 위해 "mupen64plus"를 실행하기 위한 첫 번째 스크립트를 만들고 있습니다.
mupen64plus.desktop현재 콘텐츠
[Desktop Entry]
Version=1.0
Type=Application
Name=Mupen64Plus
GenericName=N64 Emulator
Comment=Nintendo 64 emulator and plugins for Linux, Mac OSX, FreeBSD, and Windows
Exec=xfce4-terminal --hold --execute /usr/bin/bash -c "/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus.geb" %F
Icon=/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/.mupen64plus.svg
MimeType=application/x-n64-rom;
Categories=Game;Emulator;
Keywords=Emulator;Nintendo64;Mupen64plus;
;NoDisplay=true
bash 스크립트의 아이디어는 다음과 같습니다
경로 가져오기(스크립트 및 절대 디렉터리 경로)
예를 들어 절대 경로가 있는 외부 파일을 가져와서
ARCHIVO
-/media/Inukaze1/N64/mupen64plus.v64
또는/media/Nicolas/Temporal/N64/ROMS/mupen64plus.v64
왜냐하면 mupen64plus를 로드하려면 파일의 절대 경로가 필요하기 때문입니다. 그렇기 때문에 경로가 전혀 다를 수 있으므로 절대 경로를 변수에 저장해야 합니다. (
ARCHIVO
이 경우 변수를 호출하는 것을 선호합니다.)그런 다음 값이 하나의 파일이면
ARCHIVO
여러 파일을 선택해도 상관 없습니다. (실수로 다른 ROM을 사용하여 mupen64plus의 여러 인스턴스를 열고 싶지 않습니다.)ARCHIVO='/media/samba/Inukaze/ROMS/Nintendo 64/Demos/Nintro 64' # or ARCHIVO='/mnt/cifs/Temp/N64Homebrews/Bike Race ’98'
''
이런 이름을 사용하는 이유 는Bike Race ’98
특수 문자를 사용하면’
문제가 생길 수 있기 때문입니다""
.나는 몇 가지 스크립트를 작성했지만 많이 작성했습니다. 특정 타이틀에 필요한 내용을 작성했기 때문입니다.
.desktop 파일을 통해 mupen64plus를 실행하고 "다음 프로그램으로 열기"를 사용하여 "N64 ROM"을 로드한 후 ROM을 올바르게 부팅하세요.
nesworld 및/또는 n64squid와 같은 웹사이트에서 일부 홈브루 프로그램과 데모를 찾을 수 있습니다.
글쎄요, "본문은 30000자로 제한되어 있습니다. 41290을 입력하셨습니다"라는 메시지가 나타나기 때문에 스크립트 내용을 게시물에 넣을 수 있습니다.
내 현재 mupen64plus.geb 스크립트 콘텐츠(스페인어 단어가 많이 보이듯이 내 모국어는 스페인어입니다)
이 URL에서 스크립트 보기 ->https://controlc.com/f3d25176
답변1
데스크톱 파일을 통해 스크립트를 실행할 때 어떤 일이 발생하는지 이해하려고 시도하기에는 파일을 너무 새로 작성했습니다.
첫 번째는 다음 내용으로 /home/inukaze/.local/share/applications/mupen64plus_test.desktop을 생성하는 것입니다.
[Desktop Entry]
Version=1.0
Type=Application
Name=Mupen64Plus TEST
GenericName=N64 Emulator
Comment=Nintendo 64 emulator and plugins for Linux, Mac OSX, FreeBSD, and Windows
Exec=xfce4-terminal --hold --execute /usr/bin/bash -c "/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus_test.geb" %k
Icon=/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/.mupen64plus.svg
MimeType=application/x-n64-rom;
Categories=Game;Emulator;
Keywords=Emulator;Nintendo64;Mupen64plus;
;NoDisplay=true
두 번째는 "/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus_test.geb"이며 내용은 다음과 같습니다.
#!/usr/bin/env bash
#Determine in which directory i am located :
SCRIPT=$(readlink -f "$0")
SCRIPTPATH=$(dirname "$SCRIPT")
cd "$SCRIPTPATH"
#Get File Extension :
EXTENSION=$(echo "$1" | awk -F '.' '{print $NF}')
ARCH=$(uname -m)
case "$ARCH" in
x86) ARCH="x32" ;;
i?86) ARCH="x32" ;;
amd64) ARCH="x64" ;;
x86_64) ARCH="x64" ;;
* ) echo "Your Architecture '$ARCH' -> Is not supported." ;;
esac
ROMFILE="%k" #I suppose i need redirect .desktop file %k to this bash variable called $ROMFILE
#To storage the absolute path of rom file. but is just an idea
if [ "$ARCH" == "x64" ]
then
export LD_LIBRARY_PATH="./.libs/64Bits":$LD_LIBRARY_PATH
EJECUTABLE=".mupen64plus.x64"
fi
if [ "$ARCH" == "x32" ]
then
export LD_LIBRARY_PATH="./.libs/32Bits":$LD_LIBRARY_PATH
EJECUTABLE=".mupen64plus.x32"
fi
if [ -z "$1" ]
then
echo ""
echo -e "First Argument is Empty Variable\n"
echo ""
else
echo ""
echo -e "First Argument is a File ; Check md5sum"
MD5=$(md5sum "$1"| tr a-z A-Z | awk '{print $1}')
echo ""
echo 'Inside "if [ -z "$1"] else '
echo "Reveal variable content : "
echo '"$@"' = "'"$@"'"
echo '"$*"' = "'"$*"'"
echo '"$1"' = "'"$1"'"
echo '"$2"' = "'"$2"'"
echo '"%k"' = %k
echo ""
echo "Now First Try to run mupen64plus : without another script"
./.mupen64plus.x64 --corelib "./.libs/64Bits/libmupen64plus.so.2.0.0" --datadir "." --configdir "." "$@"
echo "This work"
echo "Now Second Try to run mupen64plus : via another script"
bash -c "'"/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus.geb"'" < "$1"
echo "This not work"
fi
echo -e ""
echo "i need when mupen64plus script run for any folder store the absolute path of rom i want to run"
echo "For example : "
echo -e ""
echo '"/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus.geb"' "'"/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64"'"
echo -e ""
echo "The first is absolute path my script"
echo "and the second is the absolute path of romfile"
echo "on another very diferent directory"
echo -e ""
echo "i don't have idea how redirect absolute path of romfile from .desktop file"
echo "to bash variable before the mupen64plus execute"
exit 0
상위 스크립트 또는 데스크톱 파일을 통해 "하위" 스크립트를 실행했는데 상위 또는 데스크톱 파일의 변수가 하위 스크립트로 전송되지 않는 것을 확인했습니다. 이것이 작동하도록 수정해야 할 문제라고 생각합니다. 필요합니다. .
터미널에서 다음 명령을 사용하면
cd /tmp
"/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus_test.geb" '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
출력은 다음과 같습니다
상위 스크립트에서:
First Argument is a File ; Check md5sum
Inside "if [ -z "$1"] else
Reveal variable content :
"$@" = '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
"$*" = '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
"$1" = '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
"$2" = ''
"%k" = %k
Now First Try to run mupen64plus : without another script
__ __ __ _ _ ____ _
| \/ |_ _ _ __ ___ _ __ / /_ | || | | _ \| |_ _ ___
| |\/| | | | | '_ \ / _ \ '_ \| '_ \| || |_| |_) | | | | / __|
| | | | |_| | |_) | __/ | | | (_) |__ _| __/| | |_| \__ \
|_| |_|\__,_| .__/ \___|_| |_|\___/ |_| |_| |_|\__,_|___/
|_| https://mupen64plus.org/
Mupen64Plus Console User-Interface Version 2.5.9
UI-Console: attached to core library 'Mupen64Plus Core' version 2.5.9
UI-Console: Includes support for Dynamic Recompiler.
Core: Using full mem base
Core: Goodname: Mupen64Plus Demo by Marshallh (GPL)
Core: Name: Mupen64Plus
Core: MD5: DBF04773EC2B8ADF8A94DB7E3E461138
Core: CRC: DDBA4DE5 B107004A
Core: Imagetype: .v64 (byteswapped)
Core: Rom size: 1048576 bytes (or 1 Mb or 8 Megabits)
Core: Version: 1444
Core: Manufacturer: 0
Core: Country: Demo
UI-Console Status: Cheat codes disabled.
UI-Console: using Video plugin: 'Glide64mk2 Video Plugin' v2.5.9
UI-Console: using Audio plugin: 'Mupen64Plus SDL Audio Plugin' v2.5.9
Input: Using auto-config file at: './InputAutoCfg.ini'
Input: Using auto-config file at: './InputAutoCfg.ini'
UI-Console: using Input plugin: 'Mupen64Plus SDL Input Plugin' v2.5.9
UI-Console: using RSP plugin: 'Hacktarux/Azimer High-Level Emulation RSP Plugin' v2.5.9
Video: opening ./Glide64mk2.ini
Video: 3DNOW! detected.
Core: input plugin did not specify a render callback; there will be no on screen display by the input plugin.
Input: 2 SDL joysticks were found.
Input: N64 Controller #1: Using manual config with no SDL joystick (keyboard/mouse only)
Input: Using auto-config file at: './InputAutoCfg.ini'
Input: N64 Controller #2: Using auto-config with SDL joystick 0 ('Twin USB Joystick')
Input: Using auto-config file at: './InputAutoCfg.ini'
Input: N64 Controller #3: Using auto-config with SDL joystick 1 ('Twin USB Joystick')
Input: 3 controller(s) found, 3 plugged in and usable in the emulator
Input Warning: Couldn't open rumble support for joystick #1
Input: Rumble activated on N64 joystick #2
Input: Rumble activated on N64 joystick #3
Input Warning: Couldn't open rumble support for joystick #4
Input: Mupen64Plus SDL Input Plugin version 2.5.9 initialized.
RSP Error: Can't load library: mupen64plus-rsp-z64.so
Core: Using video capture backend: dummy
Core: Game controller 0 (Standard controller) has a Memory pak plugged in
Core: Game controller 1 (Standard controller) has a Memory pak plugged in
Core: Game controller 2 (Standard controller) has a Memory pak plugged in
Core: Game controller 3 (Standard controller) has a Memory pak plugged in
Core: Using CIC type X102
Video: Using TEXUMA extension.
&ConfigOpenSection is 0x7fcfd3f7e688
(II) Setting video mode 1058x885...
Core: Setting video mode: 1058x885
Congratulations, you have 4 auxilliary buffers, we'll use them wisely !
packed pixels extension used
NPOT extension used
use_fbo 1
Video: InitCombine()
Video: extensions
Video: initialized.
Video:
Audio: Using resampler speex
Audio: Initializing SDL audio subsystem...
ALSA lib pcm_direct.c:1568:(_snd_pcm_direct_get_slave_ipc_offset) Invalid value for card
Input Warning: Couldn't open rumble support for joystick #1
Input: Rumble activated on N64 joystick #2
Input: Rumble activated on N64 joystick #3
Input Warning: Couldn't open rumble support for joystick #4
Core: Initializing 4 RDRAM modules for a total of 8 MB
Core: Starting R4300 emulator: Dynamic Recompiler
Core Status: Stopping emulation.
Core: R4300 emulator finished.
Core Status: Rom closed.
This work
Now Second Try to run mupen64plus : via another script
스크립트에서
Autor ----------------> Inukaze ( Venezuela )
Sitio ----------------> https://goo.gl/ij6WqW
Correo-E -------------> [email protected]
Licencia -------------> GPL 2
******* Inicio : Acerca de este Guión ********
Yo intento escribir guiones compatibles con
Sistemas operativos Unix & POSIX , y otros
Sistemas operativos que soporten bash
Este archivo es un guion sencillo para
Iniciar "mupen64plus"
[Emulador de Nintendo 64]
******** Fin : Acerca de este Guión **********
Antes del -z "$@" de 64 Bits
"$@" = ''
"$*" = ''
"$1" = ''
"$2" = ''
"%k" = '%k'
Despues del -z "$@" de 64 Bits
"$@" = ''
"$*" = ''
"$1" = ''
"$2" = ''
"%k" = '%k'
__ __ __ _ _ ____ _
| \/ |_ _ _ __ ___ _ __ / /_ | || | | _ \| |_ _ ___
| |\/| | | | | '_ \ / _ \ '_ \| '_ \| || |_| |_) | | | | / __|
| | | | |_| | |_) | __/ | | | (_) |__ _| __/| | |_| \__ \
|_| |_|\__,_| .__/ \___|_| |_|\___/ |_| |_| |_|\__,_|___/
|_| https://mupen64plus.org/
Mupen64Plus Console User-Interface Version 2.5.9
UI-Console: attached to core library 'Mupen64Plus Core' version 2.5.9
UI-Console: Includes support for Dynamic Recompiler.
Core: Using full mem base
UI-Console Error: no ROM filepath given
상위 스크립트에서
This not work
i need when mupen64plus script run for any folder store the absolute path of rom i want to run
For example :
"/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus.geb" '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
The first is absolute path my script
and the second is the absolute path of romfile
on another very diferent directory
i don't have idea how redirect absolute path of romfile from .desktop file
to bash variable before the mupen64plus execute
mupen64plus를 올바르게 시작하려면 하위 스크립트가 필요하고 상위 스크립트의 romfile에 대한 절대 경로를 사용하는 rom 파일이 필요합니다.
음, "Thunar"에서 "Open with"를 사용하여 실행하면 출력은 다음과 같습니다.
First Argument is Empty Variable
i need when mupen64plus script run for any folder store the absolute path of rom i want to run
For example :
"/media/Compartido/Lignux/Videojuegos/Emulador/Nintendo/64/mupen64plus/portable/mupen64plus.geb" '/media/Nicolas/Temporal/ROMS/N64/Mupen64Plus.v64'
The first is absolute path my script
and the second is the absolute path of romfile
on another very diferent directory
i don't have idea how redirect absolute path of romfile from .desktop file
to bash variable before the mupen64plus execute