herbfargus
Member
Post count: 1858

btw this is my latest modified module (should in theory automatically set the rom and bios folders. I haven’t tested yet but am testing now: Really advmess and advmame are essentially the same, just a few minor config differences.

#!/usr/bin/env bash

# This file is part of The RetroPie Project
# 
# The RetroPie Project is the legal property of its developers, whose names are
# too numerous to list here. Please refer to the COPYRIGHT.md file distributed with this source.
# 
# See the LICENSE.md file at the top-level directory of this distribution and 
# at https://raw.githubusercontent.com/RetroPie/RetroPie-Setup/master/LICENSE.md
#

rp_module_id="advmess"
rp_module_desc="AdvanceMESS"
rp_module_menus="4+"
rp_module_flags="!x86 !mali"

function depends_advmess() {
    getDepends libsdl1.2-dev
}

function sources_advmess() {
        wget -O- -q "https://github.com/amadvance/advancemame/releases/download/advancemess-1.4/advancemess-1.4.tar.gz" | tar -xvz --strip-components=1
}

function build_advmess() {
        ./configure CFLAGS="$CFLAGS -fsigned-char" LDFLAGS="-s -lm -Wl,--no-as-needed" --prefix="$md_inst"
        make clean
        make
}

function install_advmess() {
        make install
}

function configure_advmess() {
    mkRomDir "mame-advmess"
    mkRomDir "bbcb"

    moveConfigDir "$home/.advance" "$configdir/mame-advmess"

        su "$user" -c "$md_inst/bin/advmess --default"

        iniConfig " " "" "$configdir/mame-advmess/advmess.rc"
        iniSet "misc_quiet" "yes"
        iniSet "device_video" "fb"
        iniSet "device_video_cursor" "off"
        iniSet "device_keyboard" "raw"
        iniSet "device_sound" "alsa"
        iniSet "display_vsync" "no"
        iniSet "sound_samplerate" "44100"
        iniSet "sound_latency" "0.2"
        iniSet "sound_normalize" "no"
        iniSet "dir_rom" "$biosdir"
        iniSet "dir_artwork" "$romdir/mame-advmess/artwork"
        iniSet "dir_sample" "$romdir/mame-advmess/samples"
        iniSet "dir_image" "$romdir"
        iniSet "device_video_clock" "5 - 50 / 15.62 / 50 ; 5 - 50 / 15.73 / 60"

        addSystem 0 "$md_id" "mame-advmess arcade mame" "$md_inst/bin/advmess %BASENAME%"
        setESSystem 'BBC Micro Model B' 'bbcb' '~/RetroPie/roms/bbcb' '.bbc .BBC .img .IMG .ssd .SSD' '/opt/retropie/emulators/advmess/bin/advmess bbcb -floppy %BASENAME%' 'bbcb' 'bbc'
}

Once you have it compiled and running in the places you want it to be adding new systems will be easy. Basically you just add a new line at the bottom

addSystem 0 "$md_id" "mame-advmess arcade mame" "$md_inst/bin/advmess %BASENAME%"

the addSystem function assumes the system is listed in platforms.cfg. if not it needs to be either added or you can use the setESSystem function like so:

setESSystem 'Kodi' 'kodi' '~/RetroPie/roms/kodi' '.sh .SH' '%ROM%' 'pc' 'kodi'

Where the 7 (soon to be 8 with direct launch tag) are listed in this order: Full Name, name, rompath, Extensions, launch command, platform, theme.

https://github.com/RetroPie/RetroPie-Setup/blob/c20409eede07031bca09d6babd07e012e604ea96/scriptmodules/helpers.sh#L296-L331

Then Once you have added your system and you don’t want to compile advmess again just so you can configure a system you can type:

cd RetroPie-Setup
sudo ./retropie_packages.sh advmess configure

And it should configure the proper launch options (for each system you’ll also likely need to add its rom folder with mkdir <romfolder> in the configure function. Because of how many specific launch options there are with advmess its likely we’d have to do something similar to vice so that even though they are basically the same emulator we treat each game type as it its a different system.