diff --git a/Config.in b/Config.in index 1055fd8704dad781899e915d378d5ba6530b329b..af543d583be92f3c12f81fe1412cf6c5ff3abf60 100644 --- a/Config.in +++ b/Config.in @@ -161,6 +161,7 @@ menu "Emulators" source "$BR2_EXTERNAL_RECALBOX_PATH/package/xemu/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/xroar/Config.in" source "$BR2_EXTERNAL_RECALBOX_PATH/package/vvvvvv/Config.in" + source "$BR2_EXTERNAL_RECALBOX_PATH/package/mednafen/Config.in" if BR2_PACKAGE_RETROARCH menu "Libretro Cores" diff --git a/board/recalbox/fsoverlay/etc/init.d/S12populateshare b/board/recalbox/fsoverlay/etc/init.d/S12populateshare index 3a1b51b371feb07349ee58f2a9dd43b3e55b4dc5..4d7ce02fe0fdb9edeb8b1b2dff3e458afcf182e5 100755 --- a/board/recalbox/fsoverlay/etc/init.d/S12populateshare +++ b/board/recalbox/fsoverlay/etc/init.d/S12populateshare @@ -85,7 +85,7 @@ for FILE in music bios extractions kodi saves saves/amiga screenshots userscript system/configs/{advancemame,daphne,dolphin-emu,dosbox,fba,kodi,moonlight,mupen64,openbor,ppsspp,reicast,retroarch,sdlpop,shadersets,xarcade2jstick,scummvm} \ system/configs/mupen64/{GLideN64.custom.ini,GLideN64.ini,Glide64mk2.ini,InputAutoCfg.ini,RiceVideoLinux.ini,font.ttf,gles2n64.conf,gles2n64rom.conf} \ system/recalbox.conf \ - bios/{amiga,Databases,dc,fba,fbneo,keropi,Machines,mame,mame2000,mame2003,mame2003-plus,mame2010,mame2015,mame2016,np2kai,oricutron,prboom,quasi88,xmil,scummvm} + bios/{amiga,Databases,dc,fba,fbneo,keropi,Machines,mame,mame2000,mame2003,mame2003-plus,mame2010,mame2015,mame2016,np2kai,oricutron,prboom,quasi88,xmil,scummvm,stv} do # not wanted for kodi test -e "$IN""/""$FILE" && test ! -e "$OUT""/""$FILE" && cp -r "$IN""/""$FILE" "$OUT""/""$FILE" diff --git a/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml b/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml index d7f6ee9151c72843fcffd2ae2f8fc036779cfd09..11d26effa3a8907bd73a79bb9d55e3dbe2213cf6 100644 --- a/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml +++ b/board/recalbox/fsoverlay/recalbox/share_init/system/.emulationstation/es_bios.xml @@ -616,4 +616,9 @@ + + + + + diff --git a/configs/recalbox-rpi5_64_defconfig b/configs/recalbox-rpi5_64_defconfig index ec491dc33e9e213fce5fd6ac6efe662bc6159324..45f21c49be7f21fd87e101f2f70579517f9f83c5 100644 --- a/configs/recalbox-rpi5_64_defconfig +++ b/configs/recalbox-rpi5_64_defconfig @@ -367,3 +367,4 @@ BR2_PACKAGE_XPADNEO=y BR2_PACKAGE_VVVVVV=y BR2_PACKAGE_LIBRETRO_TAMALIBRETRO=y BR2_PACKAGE_LIBRETRO_HATARIB=y +BR2_PACKAGE_MEDNAFEN=y diff --git a/configs/recalbox-x86_64_defconfig b/configs/recalbox-x86_64_defconfig index 78e30eaab449a768ce546d74164049439976c24f..841ff24c1b9f1fe74d9ff6ad66f65cf33814e0f1 100644 --- a/configs/recalbox-x86_64_defconfig +++ b/configs/recalbox-x86_64_defconfig @@ -407,3 +407,5 @@ BR2_PACKAGE_WII_U_GC_ADAPTER=y BR2_PACKAGE_VVVVVV=y BR2_PACKAGE_LIBRETRO_TAMALIBRETRO=y BR2_PACKAGE_LIBRETRO_HATARIB=y +BR2_PACKAGE_MEDNAFEN=y +BR2_PACKAGE_SWITCHRES=y diff --git a/package/arcade-dats/precompiled/stv-1.32.1.dat b/package/arcade-dats/precompiled/stv-1.32.1.dat new file mode 100644 index 0000000000000000000000000000000000000000..731ce0b3a8bf2064e0d51f0e1c83de64d109bd81 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.dat @@ -0,0 +1,6210 @@ + + + +
+ Naomi2 + Naomi2 + Emulation + 0.258 + 30/08/2023 + Recalbox + https://www.recalbox.com/ + +
+ + Astra SuperStars (J 980514 V1.002) + 1998 + Sunsoft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Baku Baku Animal (J 950407 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Batman Forever (JUE 960507 V1.000) + 1996 + Acclaim + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Choro Q Hyper Racing 5 (J 981230 V1.000) + 1998 + Sega / Takara + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Columns '97 (JET 961209 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cotton 2 (JUET 970902 V1.000) + 1997 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cotton Boomerang (JUET 980709 V1.000) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Critter Crusher (EA 951204 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Danchi de Hanafuda (J 990607 V1.400) + 1999 + Altron (Tecmo license) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200) + 2000 + Altron + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decathlete (JUET 960709 V1.001) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Decathlete (JUET 960424 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dancing Fever Gold (J 000821 V2.001) + 2001 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Die Hard Arcade (UET 960515 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Dynamite Deka (J 960515 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Ejihon Tantei Jimusho (J 950613 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006) + 1998 + Sai-Mate + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Fantasy Zone (medal game, REV.A) (J 990202 V1.000) + 1999 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Fight Revenge / Final Revenge (JUET 990930 V1.100) + 1999 + Capcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Fight Revenge / Final Revenge (JUET 990714 V1.000) + 1999 + Capcom + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Funky Head Boxers (JUETBKAL 951218 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000) + 1997 + Daiki / FCF + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Final Arch (J 950714 V1.001) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Golden Axe - The Duel (JUETL 950117 V1.000) + 1994 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Guardian Force (JUET 980318 V0.105) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Karaoke Quiz Intro Don Don! (J 960213 V1.000) + 1996 + Sunsoft / Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pro Mahjong Kiwame S (J 951020 V1.208) + 1995 + Athena + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Magical Zunou Power (J 961031 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Maru-Chan de Goo! (J 971216 V1.000) + 1997 + Sega / Toyosuisan + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Mausuke no Ojama the World (J 960314 V1.000) + 1996 + Data East + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Microman Battle Charge (J 990326 V1.000) + 1999 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000) + 1998 + Micronet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club (J 960315 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Disney (J 980614 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.2 (J 960315 V1.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.3 (J 970723 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Name Club Ver.4 (J 971202 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Othello Shiyouyo (J 980423 V1.002) + 1998 + Success + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Hashire Patrol Car (J 990326 V1.000) + 2001 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Pebble Beach - The Great Shot (JUE 950913 V0.990) + 1995 + T&E Soft + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club LoveLove (J 970421 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club LoveLove Ver 2 (J 970825 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 (U 970921 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 6 Winter (J 961210 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 6 Winter (J 970121 V1.200) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 7 Spring (J 970313 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Kome Kome Club (J 970203 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Pepsiman (J 970618 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Puffy (J V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 3 (U 990310 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Warner Bros (J 970228 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Olive (J 980717 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Goukakenran (J 991104 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Pokemon B (U 991126 V1.000) + 1999 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Yoshimoto V2 (J 970422 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 8 Summer (J 970616 V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Autumn Ver (J 980827 V1.000) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Spring Ver (J 971017 V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 '98 Summer Ver (J 980603 V1.100) + 1998 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 Vol. 9 Autumn (J V1.100) + 1997 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Print Club 2 2000 Summer (J 000509 V1.000) + 2000 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Princess Clara Daisakusen (J 960910 V1.000) + 1996 + Atlus + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puyo Puyo Sun (J 961115 V0.001) + 1996 + Compile + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Radiant Silvergun (JUET 980523 V1.000) + 1998 + Treasure + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Soreyuke Anpanman Crayon Kids (J 001026 V1.000) + 2000 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: Sando-R (J 951114 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000) + 1999 + Sega / Deniam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Taisen Tanto-R Sashissu!! (J 980216 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sea Bass Fishing (JUET 971110 V0.001) + 1997 + A wave inc. (Able license) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005) + 1995 + Sunsoft / Activision + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Shienryu (JUET 961226 V1.000) + 1997 + Warashi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Sky Challenger (J 000406 V1.000) + 2000 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Super Major League (U 960108 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Soukyugurentai / Terra Diver (JUET 960821 V1.000) + 1996 + Raizing / Eighting + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Steep Slope Sliders (JUET 981110 V1.000) + 1998 + Capcom / Cave / Victor Interactive Software + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Stress Busters (J 981020 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ST-V BIOS + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001) + 1995 + Data East + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Nerae! Super Goal (J 981218 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tatacot (JA 951128 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Technical Bowling (J 971212 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K) + 1997 + Sega / Deniam + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tecmo World Cup '98 (JUET 980410 V1.000) + 1998 + Tecmo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Tecmo World Soccer '98 (JUET 980410 V1.000) + 1998 + Tecmo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtua Fighter Kids (JUET 960319 V0.000) + 1996 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtua Fighter Remix (JUETBKAL 950428 V1.000) + 1995 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virtual Mahjong (J 961214 V1.000) + 1997 + Micronet + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Wanpaku Safari (J 981109 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Winter Heat (JUET 971012 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Yatterman Plus (J 981006 V1.000) + 1998 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000) + 1997 + Sega + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
diff --git a/package/arcade-dats/precompiled/stv-1.32.1.fdt b/package/arcade-dats/precompiled/stv-1.32.1.fdt new file mode 100644 index 0000000000000000000000000000000000000000..07f5615a07b8735c3d8b6da7387ae63232bb0c7f --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.fdt @@ -0,0 +1,102 @@ +astrass||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20825.13|94a9ad8f|1048576|mpr20826.1|bdc4b941|4194304|mpr20827.2|65cabbb3|4194304|mpr20828.3|3934d44a|4194304|mpr20829.4|814308c3|4194304|mpr20830.5|ff97fd19|4194304|mpr20831.6|4408e6fb|4194304|mpr20832.8|af1b0985|4194304|mpr20833.9|cb6af231|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +bakubaku||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr17969.13|bee327e5|1048576|mpr17970.2|bc4d6f91|4194304|mpr17971.3|c780a3b3|4194304|mpr17972.4|8f29815a|4194304|mpr17973.5|5f6e0e8b|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +batmanfr||350-mpa1.u16|735e23ab|1048576|350-mpa1.u19|2a5a8c3a|1048576|350snda1.u52|9027e7a0|524288|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|gfx0.u1|a82d0b7e|4194304|gfx1.u3|a41e55d9|4194304|gfx2.u5|4c1ebeb7|4194304|gfx3.u8|f679a3e7|4194304|gfx4.u12|52d95242|4194304|gfx5.u15|e201f830|4194304|gfx6.u18|c6b381a3|4194304|snd0.u48|02b1927c|2097152|snd1.u49|58b18eda|2097152|snd2.u50|51d626d6|2097152|snd3.u51|31af26ae|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +choroqhr||choroqhr.nv|6e89815f|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|22c58710|2097152|ic24.bin|09b8a154|2097152|ic26.bin|136ca5e9|2097152|ic28.bin|3c949563|2097152|ic30.bin|7e93078d|2097152|ic32.bin|86cdcbd8|2097152|ic34.bin|be2ed0a0|2097152|ic36.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +colmns97||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19553.13|d4fb6a5e|1048576|mpr19554.2|5a3ebcac|4194304|mpr19555.3|74f6e6b8|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +cotton2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20116.1|d30b0175|4194304|mpr20117.2|893656ea|4194304|mpr20118.3|1b6a1d4c|4194304|mpr20119.4|5a76e72b|4194304|mpr20120.5|7113dd7b|4194304|mpr20121.6|8c8fd521|4194304|mpr20122.7|d616f78a|2097152|mpr20123.8|35f1b89f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +cottonbm||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21069.1|6a28e3c5|4194304|mpr21070.2|56c0bf1d|4194304|mpr21071.3|2bb18df2|4194304|mpr21072.4|7c7cb977|4194304|mpr21073.5|f2e5a5b7|4194304|mpr21074.6|6a7e7a7b|4194304|mpr21075.7|200b58ba|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +critcrsh||critcrsh.nv|3da9860e|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-18821.ic13|9a6658e2|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr-18788.ic9|feae5867|4194304|mpr-18789.ic8|b388616f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +danchih||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21970.2|34dd7f4d|4194304|mpr21971.3|8995158c|4194304|mpr21972.4|68a39090|4194304|mpr21973.5|b0f23f14|4194304|mpr21974.7|e7472793|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +danchiq||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|e216bfc8|2097152|ic23|d080eb71|2097152|ic24|b95aa5ac|2097152|ic25|9a4109e5|2097152|ic26|df6ebd48|2097152|ic28|cf6a2b76|2097152|ic30|0b6a9901|2097152|ic32|0b4604f5|2097152|ic34|616e20fa|2097152|ic36|43474e08|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +decathlt||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18967a.13|ac59c186|1048576|mpr18968.2|11a891de|4194304|mpr18969.3|199cc47d|4194304|mpr18970.4|8b7a509e|4194304|mpr18971.5|c87c443b|4194304|mpr18972.6|45c64fca|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +decathlto|decathlt|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18967.13|c0446674|1048576|mpr18968.2|11a891de|4194304|mpr18969.3|199cc47d|4194304|mpr18970.4|8b7a509e|4194304|mpr18971.5|c87c443b|4194304|mpr18972.6|45c64fca|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +dfeverg||1|d72f1640|4194304|10|4b2a4397|4194304|11|58877b19|4194304|12||4194304|13|ecd7ac4b|524288|2|c2e8aee5|4194304|3|cb5b2744|4194304|4|7eca59b2|4194304|5|c3450f2b|4194304|6|1ac57ed5|4194304|8|acc78f10|4194304|9|4ffbba8d|4194304|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +diehard||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19119.13|de5c4f7c|1048576|mpr19115.2|6fe06a30|4194304|mpr19116.3|af9e627b|4194304|mpr19117.4|74520ff1|4194304|mpr19118.5|2c9702f0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +dnmtdeka|diehard|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19114.13|1fd22a5f|1048576|mpr19115.2|6fe06a30|4194304|mpr19116.3|af9e627b|4194304|mpr19117.4|74520ff1|4194304|mpr19118.5|2c9702f0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ejihon||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18137.13|151aa9bc|524288|mpr18138.2|f5567049|4194304|mpr18139.3|f36b4878|4194304|mpr18140.4|228850a0|4194304|mpr18141.5|b51eef36|4194304|mpr18142.6|cf259541|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +elandore||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21301.2|1a23b0a0|4194304|mpr21302.3|1c91ca33|4194304|mpr21303.4|07b2350e|4194304|mpr21304.5|cfea52ae|4194304|mpr21305.6|46cfc2a2|4194304|mpr21306.1|87a5929c|4194304|mpr21307.7|966ad472|2097152|mpr21308.8|336ec1a4|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +fanzonem||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21440a.ic13|28457d58|524288|epr-23603.ic8|f688ae60|524288|mpr-21441.ic2|b69133a5|4194304|mpr-21442.ic4|d4d3575f|4194304|mpr-21443.ic6|cb1401c9|4194304|mpr-21444.ic8|a82ff33b|4194304|mpr-21445.ic1|c02ffbd3|4194304|mpr-21446.ic3|4831539e|4194304|mpr-21447.ic5|61e0d313|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ffreveng||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ffr110.ic35|3ffea541|1048576|mpr21873.2|dac5bd98|4194304|mpr21874.3|0a7be2f1|4194304|mpr21875.4|ccb75029|4194304|mpr21876.5|bb92a7fc|4194304|mpr21877.6|c22a4a75|4194304|opr21872.7|32d36fee|2097152|opr21878.1|2ea4a64d|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +ffrevng10|ffreveng|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr21873.2|dac5bd98|4194304|mpr21874.3|0a7be2f1|4194304|mpr21875.4|ccb75029|4194304|mpr21876.5|bb92a7fc|4194304|mpr21877.6|c22a4a75|4194304|opr21872.7|32d36fee|2097152|opr21878.1|2ea4a64d|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +fhboxers||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fhboxers.nv|590fd6da|128|fr18541a.13|8c61a17c|1048576|mpr18532.1|39528643|4194304|mpr18533.2|7181fe51|4194304|mpr18534.3|c87ef125|4194304|mpr18535.4|929a64cf|4194304|mpr18536.5|51b9f64e|4194304|mpr18537.6|c364f6a7|4194304|mpr18538.7|7b5230c5|2097152|mpr18539.8|62b3908c|4194304|mpr18540.9|4c2b59a4|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +findlove||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20424.13|4e61fa46|1048576|findlove.nv|df2fa9f6|128|mpr20425.1|67f104c4|4194304|mpr20426.2|897d1747|4194304|mpr20427.3|a488a694|4194304|mpr20428.4|4353b3b6|4194304|mpr20429.5|4f566486|4194304|mpr20430.6|d1e11979|4194304|mpr20431.7|ea656ced|2097152|mpr20432.8|79fcdecd|4194304|mpr20433.9|82289f29|4194304|mpr20434.10|85c94afc|4194304|mpr20435.11|263a2e48|4194304|mpr20436.12|e3823f49|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +finlarch|smleague|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|finlarch.13|4505fa9e|1048576|mpr18257.2|137fdf55|4194304|mpr18258.3|f519c505|4194304|mpr18259.4|5cabc775|4194304|mpr18260.5|f5b92082|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +gaxeduel||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr17766.13|a83fcd62|524288|mpr17767.1|9ba1e7b1|4194304|mpr17768.2|d6808a7d|4194304|mpr17769.3|3471dd35|4194304|mpr17770.4|06978a00|4194304|mpr17771.5|aea2ea3b|4194304|mpr17772.6|b3dc0e75|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +grdforce||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20839.2|facd4dd8|4194304|mpr20840.3|fe0158e6|4194304|mpr20841.4|d87ac873|4194304|mpr20842.5|baebc506|4194304|mpr20843.6|263e49cc|4194304|mpr20844.7|283e7587|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +groovef||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19814.1|8f20e9f7|4194304|mpr19815.2|1b9b14e6|4194304|mpr19816.3|83f5731c|4194304|mpr19817.4|525bd6c7|4194304|mpr19818.5|66723ba8|4194304|mpr19819.6|ee8c55f4|4194304|mpr19820.7|e93c4513|1048576|mpr19821.8|f69a76e6|4194304|mpr19822.9|5e8c4b5f|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +hanagumi||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20137.1|181d2688|4194304|mpr20138.2|fdcf1046|4194304|mpr20139.3|7f0140e5|4194304|mpr20140.4|2fa03852|4194304|mpr20141.5|45d6d21b|4194304|mpr20142.6|e38561ec|4194304|mpr20143.7|7bfc38d0|1048576|mpr20144.8|235b43f6|4194304|mpr20145.9|aeaac7a1|4194304|mpr20146.10|39bab9a2|4194304|mpr20147.11|294ab997|4194304|mpr20148.12|5337ccb0|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +introdon||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18937.13|1f40d766|524288|mpr18938.1|580ecb83|4194304|mpr18939.2|ef95a6e6|4194304|mpr18940.3|cabab4cd|4194304|mpr18941.4|f4a33a20|4194304|mpr18942.5|8dd0a446|4194304|mpr18943.6|d8702a9e|4194304|mpr18944.7|f7f75ce5|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +kiwames||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18737.13|cfad6c49|524288|kiwames.nv|c7002732|128|mpr18738.2|4b3c175a|4194304|mpr18739.3|eb41fa67|4194304|mpr18740.4|9ca7962f|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +magzun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|flash.ic13|e6f0aca0|1048576|magzun.nv|42700321|128|microm||4096|mpr-19354.ic2|a23822e7|4194304|mpr-19355.ic3|d70e5ebc|4194304|mpr-19356.ic4|3bc43fe9|4194304|mpr-19357.ic5|aa749370|4194304|mpr-19358.ic6|0969f1ec|4194304|mpr-19359.ic1|b0d06f9c|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +maruchan||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20416.13|8bf0176d|1048576|mpr20417.2|636c2a08|4194304|mpr20418.3|3f0d9e34|4194304|mpr20419.4|ec969815|4194304|mpr20420.5|f2902c88|4194304|mpr20421.6|cd0b477c|4194304|mpr20422.1|66335049|4194304|mpr20423.8|2bd55832|4194304|mpr20443.9|8ac288f5|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +mausuke||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic13.bin|b456f4cd|1048576|mcj-00.2|4eeacd6f|2097152|mcj-01.3|365a494b|2097152|mcj-02.4|8b8e4931|2097152|mcj-03.5|9015a0e7|2097152|mcj-04.6|9d1beaee|2097152|mcj-05.1|a7626a82|2097152|mcj-06.8|1ab8e90e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +micrombc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|8385bc45|2097152|ic24|84ecb42f|2097152|ic26|869bc19c|2097152|ic28|0c3db354|2097152|ic30|03b9eacf|2097152|ic32|62c10626|2097152|ic34|8d89877e|2097152|ic36|8d89877e|2097152|micrombc.nv|6e89815f|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +myfairld||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20994.1|a69243a0|4194304|mpr20995.2|1bb73f24|4194304|mpr20996.3|993c3859|4194304|mpr20997.4|f0bf64a4|4194304|mpr20998.5|d3b19786|4194304|mpr20999.6|82e31f25|4194304|mpr21000.7|2581c560|2097152|mpr21001.8|95fbe549|4194304|myfairld.nv|c7cf3a5a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nameclub||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|ac23c648|2097152|ic24|a16902e3|2097152|ic26|a5eab3f3|2097152|ic28|34ed677a|2097152|nameclub.nv|680a64bc|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubdis||315-6055.ic12||279|315-6056-01.ic13||279|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|cfd5eb54|2097152|ic23|9a4109e5|2097152|ic24|943682eb|2097152|ic25|9a4109e5|2097152|ic26|a17bd53a|2097152|ic28|9a597bff|2097152|ic30|3eb020f6|2097152|ic32|ac26d375|2097152|ic34|e157cd99|2097152|ic36|9a4109e5|2097152|nclubdis.nv|7efc9c6a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|nclubv2.ic22|7e81676d|2097152|nclubv2.ic24|1b7637de|2097152|nclubv2.ic26|630be99d|2097152|nclubv2.ic28|1a3ca5e2|2097152|nclubv2.nv|96d55fa9|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv3||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|b4008ed0|2097152|ic23|bd922829|2097152|ic24|4e894850|2097152|ic25|f77f9e24|2097152|ic26|5b6b023f|2097152|ic28|b7beab03|2097152|ic30|a9f81069|2097152|ic32|02708d66|2097152|ic34|c79d0537|2097152|ic36|0c9df896|2097152|nclubv3.nv|9122a9e9|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +nclubv4||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|80eba7e9|2097152|ic23|9a4109e5|2097152|ic24|6bbb1b0c|2097152|ic25|9a4109e5|2097152|ic26|5352ade3|2097152|ic28|44f4b15a|2097152|ic30|fc4e56e6|2097152|ic32|6f825b87|2097152|ic34|62114a08|2097152|ic36|9a4109e5|2097152|nclubv4.nv|7efc9c6a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +othellos||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20963.2|2cc4f141|4194304|mpr20964.3|5f5cda94|4194304|mpr20965.4|37044f3e|4194304|mpr20966.5|b94b83de|4194304|mpr20967.7|efc05b97|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +patocar||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|b7e6d425|2097152|ic24.bin|cbbb687e|2097152|ic26.bin|91db9dbe|2097152|ic28.bin|bff0cd9c|2097152|ic30.bin|9a4109e5|2097152|patocar.nv|d9873ee8|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pblbeach||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18852.13|d12414ec|524288|mpr18853.2|b9268c97|4194304|mpr18854.3|3113c8bc|4194304|mpr18855.4|daf6ad0c|4194304|mpr18856.5|214cef24|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pckobe99||eeprom|dbe305a9|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|670296eb|2097152|ic24.bin|c2139f62|2097152|ic26.bin|17e3efd0|2097152|ic28.bin|a52f99f6|2097152|ic30.bin|f1b7e3d5|2097152|ic32.bin|76f6efaa|2097152|ic34.bin|894c63f9|2097152|ic36.bin|078694c3|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclb2elk||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2elk.nv|54c7564f|128|pclb2elk_ic22|2faed82a|2097152|pclb2elk_ic24|9cacfb7b|2097152|pclb2elk_ic26|533a189e|2097152|pclb2elk_ic28|1f0c9113|2097152|pclb2elk_ic30|0e188b8c|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclove||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclblove.ic22|8cd25a0f|2097152|pclblove.ic24|85583e2c|2097152|pclblove.ic26|7efcabcc|2097152|pclblove.ic28|a1336da7|2097152|pclblove.ic30|ec5b5e28|2097152|pclblove.ic32|9a4109e5|2097152|pclove.nv|3c78e3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclove2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|d7d968d6|2097152|ic24|9c9b7e57|2097152|ic26|55eb859f|2097152|ic28|463604a6|2097152|ic30|ec5b5e28|2097152|ic32|9a4109e5|2097152|pclove2.nv|93b30600|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2.nv|00d0f04e|128|pclub2_ic22|d2ceade7|2097152|pclub2_ic24|0e968c2d|2097152|pclub2_ic26|ab51da70|2097152|pclub2_ic28|3a654b2a|2097152|pclub2_ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub26w||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclbvol6w_ic22|72aa320c|2097152|pclbvol6w_ic24|d98371e2|2097152|pclbvol6w_ic26|e6bbe3a5|2097152|pclbvol6w_ic28|3c330c9b|2097152|pclbvol6w_ic30|67646090|2097152|pclub26w.nv|448f770d|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub26wa|pclub26w|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a88e117d|2097152|ic26.bin|d0412c8d|2097152|ic30.bin|00a0c702|2097152|ic24.bin|d98371e2|2097152|ic28.bin|3c330c9b|2097152|pclub26w.nv|448f770d|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub27s||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub27s.nv|e58c7167|128|pclub2v7.ic22|44c8ab27|2097152|pclub2v7.ic24|24818437|2097152|pclub2v7.ic26|076c1d44|2097152|pclub2v7.ic28|ff9643ca|2097152|pclub2v7.ic30|03b9eacf|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2fc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2fc.nv|c8082326|128|pclub2fc_ic22|109c61a5|2097152|pclub2fc_ic24|0ccc5538|2097152|pclub2fc_ic26|8d89877e|2097152|pclub2fc_ic28|ff9643ca|2097152|pclub2fc_ic30|03b9eacf|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2kc||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2kc.nv|064366fe|128|pclub2kc_ic22|9eb4cfd7|2097152|pclub2kc_ic24|cf3b4080|2097152|pclub2kc_ic26|dbdcb1d7|2097152|pclub2kc_ic28|3c330c9b|2097152|pclub2kc_ic30|00a0c702|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2pe||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2psi_ic22|caadc660|2097152|pclb2psi_ic24|ece82698|2097152|pclb2psi_ic26|c8a1e335|2097152|pclb2psi_ic28|52f09627|2097152|pclb2psi_ic30|03b9eacf|2097152|pclub2pe.nv|447bb3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2pf||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2puf.ic22|a14282f2|2097152|pclb2puf.ic24|4fb4dc74|2097152|pclb2puf.ic26|d20bbfb5|2097152|pclb2puf.ic28|da658ae9|2097152|pclb2puf.ic30|cafc0e6b|2097152|pclub2pf.nv|447bb3bd|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2v3||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclub2v3.nv|a8a2d30c|128|pclub2v3_ic22|f88347aa|2097152|pclub2v3_ic24|b5871198|2097152|pclub2v3_ic26|d97034ed|2097152|pclub2v3_ic28|f1421506|2097152|pclub2v3_ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclub2wb||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb2wb_ic22|12245be7|2097152|pclb2wb_ic24|e5d6e11e|2097152|pclb2wb_ic26|7ee066f0|2097152|pclb2wb_ic28|9ed59513|2097152|pclb2wb_ic30|00a0c702|2097152|pclub2wb.nv|0d442eec|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubol||eeprom|a744ca03|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubol_ic22|668b1049|2097152|pclubol_ic24|35721f04|2097152|pclubol_ic26|17b3cc4b|2097152|pclubol_ic28|7cfaa530|2097152|pclubol_ic30|e1dd7854|2097152|pclubol_ic32|f0a3ded7|2097152|pclubol_ic34|53aa9821|2097152|pclubol_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubor||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubor.nv|3ad918c0|128|pclubor_ic22|b25072f7|2097152|pclubor_ic24|a4863a0e|2097152|pclubor_ic26|7f55baf7|2097152|pclubor_ic28|cafd2a7d|2097152|pclubor_ic30|ccf6f885|2097152|pclubor_ic32|62e6d1e1|2097152|pclubor_ic34|19cdd167|2097152|pclubor_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubpok||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclubpok.nv|4ba3f21a|128|pclubpok_ic22|48ab8371|2097152|pclubpok_ic24|9915faea|2097152|pclubpok_ic26|054ad120|2097152|pclubpok_ic28|3a654b2a|2097152|pclubpok_ic30|98747bef|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pclubyo2||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclbyov2.ic22|719a4d27|2097152|pclbyov2.ic24|790dc7b5|2097152|pclbyov2.ic26|12ae1606|2097152|pclbyov2.ic28|ff9643ca|2097152|pclbyov2.ic30|03b9eacf|2097152|pclubyo2.nv|2b26a8f7|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pcpooh2||eeprom|5aee29d0|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|2cb33332|2097152|ic24.bin|3c6fc10f|2097152|ic26.bin|b891c7ab|2097152|ic28.bin|1a1c74cb|2097152|ic30.bin|b7b6fc61|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +pcpooh3||eeprom|e41d541b|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|efc83c4f|2097152|ic24.bin|e8753d0d|2097152|ic26.bin|daf1a0d4|2097152|ic28.bin|3c0f040f|2097152|ic30.bin|6006d785|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc28su||eeprom|447bb3bd|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|u22.bin|b78cf122|2097152|u24.bin|aca05d29|2097152|u26.bin|5591f6e2|2097152|u28.bin|0899889b|2097152|u30.bin|03b9eacf|2097152|u32.bin|5dc1f4d7|2097152|u34.bin|0222734a|2097152|u36.bin|57c30e0f|2097152 +prc297wi||eeprom|9ba58358|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc297wi_ic22|589f6705|2097152|prc297wi_ic23|e3d9d12b|2097152|prc297wi_ic24|4bd706d1|2097152|prc297wi_ic25|71238374|2097152|prc297wi_ic26|417e182a|2097152|prc297wi_ic27|7485a9a2|2097152|prc297wi_ic28|73da594e|2097152|prc297wi_ic30|03b9eacf|2097152|prc297wi_ic32|20437e93|2097152|prc297wi_ic34|9639b003|2097152|prc297wi_ic36|dd1b57b6|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc297wia|prc297wi|eeprom|9ba58358|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb297w_ic22_alt|1feb3bfe|2097152|prc297wi_ic23|e3d9d12b|2097152|prc297wi_ic24|4bd706d1|2097152|prc297wi_ic25|71238374|2097152|prc297wi_ic26|417e182a|2097152|prc297wi_ic27|7485a9a2|2097152|prc297wi_ic28|73da594e|2097152|prc297wi_ic30|03b9eacf|2097152|prc297wi_ic32|20437e93|2097152|prc297wi_ic34|9639b003|2097152|prc297wi_ic36|dd1b57b6|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298au||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc298au.nv|b4440ff0|128|prc298au_ic22|21a995ce|2097152|prc298au_ic24|94540f39|2097152|prc298au_ic26|8b22c41f|2097152|prc298au_ic28|bf68cec0|2097152|prc298au_ic30|ae276c06|2097152|prc298au_ic32|a3fb81f5|2097152|prc298au_ic34|04200dc9|2097152|prc298au_ic36|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298sp||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|prc298sp.nv|a23dd0f2|128|prc298sp_ic22|cb0ec98a|2097152|prc298sp_ic24|645e7e24|2097152|prc298sp_ic26|9d3ad85d|2097152|prc298sp_ic28|877e73cc|2097152|prc298sp_ic30|03b9eacf|2097152|prc298sp_ic32|62c10626|2097152|prc298sp_ic34|8d89877e|2097152|prc298sp_ic36|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc298su||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|pclb298s_ic22|9720fe7a|2097152|pclb298s_ic24|380496dc|2097152|pclb298s_ic26|42622126|2097152|pclb298s_ic28|c03e861a|2097152|pclb298s_ic30|01844b12|2097152|prc298su.nv|6b81636a|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc29au||eeprom|447bb3bd|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|b7a9bfa4|2097152|ic24.bin|91f36785|2097152|ic26.bin|4c1b8823|2097152|ic28.bin|594d200f|2097152|ic30.bin|03b9eacf|2097152|ic32.bin|76f6efaa|2097152|ic34.bin|894c63f9|2097152|ic36.bin|524a1c4e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prc2ksu||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|4b3de7df|2097152|ic24.bin|02da49b7|2097152|ic26.bin|a431d614|2097152|ic28.bin|c0fba1a5|2097152|ic30.bin|0811d0e4|2097152|prc2ksu.nv|ee7ffdc5|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +prikura||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19333.2|eb57a6a6|4194304|mpr19334.3|c9979981|4194304|mpr19335.4|9e000140|4194304|mpr19336.5|2363fa4b|4194304|mpr19337.7|76f69ff3|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +puyosun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr19531.13|ac81024f|524288|mpr19532.1|985f0c9d|4194304|mpr19533.2|17ec54ba|4194304|mpr19534.3|820e4781|4194304|mpr19535.4|94fadfa4|4194304|mpr19536.5|5765bc9c|4194304|mpr19537.6|8b736686|4194304|mpr19538.8|915a723e|4194304|mpr19539.9|72a297e5|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +rsgun||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20958.7|cbe5a449|2097152|mpr20959.2|a953330b|4194304|mpr20960.3|b5ab9053|4194304|mpr20961.4|0e06295c|4194304|mpr20962.5|f1e6c7fc|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sackids||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|4d9d1870|2097152|ic24.bin|39fca3e5|2097152|ic26.bin|f38c79b6|2097152|ic28.bin|63d09f3c|2097152|ic30.bin|f89811ba|2097152|ic32.bin|1db6c26b|2097152|ic34.bin|0f3622c8|2097152|ic36.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sandor||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr18635.8|441e1368|4194304|mpr18636.9|fff1dd80|4194304|mpr18637.10|83aced0f|4194304|mpr18638.11|caab531b|4194304|sando-r.13|fe63a239|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sanjeon|sasissu|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic11|9abae8d4|2097152|ic12|d5ebc84e|4194304|ic13|f72c1d13|2097152|ic14|bcd72105|2097152|ic15|8c9c8352|2097152|ic16|07e11512|2097152|ic17|46b7b344|2097152|ic18|d48404e1|2097152|ic19|33d23bb9|2097152|ic20|f8cc1038|2097152|ic21|74ceb649|2097152|ic22|85f31277|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sasissu||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20542.13|0e632db5|1048576|mpr20543.1|1f688cdf|4194304|mpr20544.2|661fff5e|4194304|mpr20545.3|8e3a37be|4194304|mpr20546.4|72020886|4194304|mpr20547.5|8362e397|4194304|mpr20548.6|e37534d9|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +seabass||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr20550.1|083e1ca8|4194304|mpr20551.2|9a0c6dd8|4194304|mpr20552.3|5f46b0aa|4194304|mpr20553.4|c0f8a6b6|4194304|mpr20554.5|215fc1f9|4194304|mpr20555.6|3f5186a9|4194304|mpr20556.8|1fd70c6c|4194304|mpr20557.9|3c9ba442|4194304|seabass.nv|4e7c0944|128|seabassf.13|6d7c39cc|1048576|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +shanhigw||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr18340.2|8db23212|2097152|mpr18341.7|cc5e8646|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +shienryu||eeprom-shienryu.bin|98db6925|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19631.7|3a4b1abc|2097152|mpr19632.2|985fae46|4194304|mpr19633.3|e2f0b037|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +skychal||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a12ccf64|2097152|ic24.bin|9a929dcf|2097152|ic26.bin|ed2183d3|2097152|ic28.bin|e7401d68|2097152|ic30.bin|950f7a2f|2097152|ic32.bin|a656212b|2097152|skychal.nv|a6515237|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +smleague||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr18777.13|8d180866|524288|mpr18778.8|25e1300e|4194304|mpr18779.9|51e2fabd|4194304|mpr18780.10|8cd4dd74|4194304|mpr18781.11|13ee41ae|4194304|mpr18782.12|9be2270a|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sokyugrt||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr19188.13|45a27e32|1048576|mpr19189.2|0b202a3e|4194304|mpr19190.3|1777ded8|4194304|mpr19191.4|ec6eb07b|4194304|mpr19192.5|cb544a1e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +sss||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr21488.13|71c9def1|524288|mpr21489.2|4c85152b|4194304|mpr21490.3|03da67f8|4194304|mpr21491.4|cf7ee784|4194304|mpr21492.5|57753894|4194304|mpr21493.6|efb2d271|4194304|sss.nv|3473b2f3|128|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +stress||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21300a.ic13|899d829e|1048576|epr-23603.ic8|f688ae60|524288|mpr-21289.ic1|c2ee8bea|4194304|mpr-21290.ic2|a49d29f3|4194304|mpr-21291.ic3|9452ba20|4194304|mpr-21292.ic4|f60268e2|4194304|mpr-21293.ic5|794946e0|4194304|mpr-21294.ic6|550843bb|4194304|mpr-21296.ic8|b825c42a|4194304|mpr-21297.ic9|4bff7469|4194304|mpr-21298.ic10|68d07144|4194304|mpr-21299.ic11|ecc521c6|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +stvbios||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|stvbios.nv|15432ae2|128 +suikoenb||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr17834.13|746ef686|1048576|mpr17835.1|77f5cb43|4194304|mpr17836.2|55e9642d|4194304|mpr17837.3|13d1e667|4194304|mpr17838.4|f9e70032|4194304|mpr17839.5|1b2762c5|4194304|mpr17840.6|0fd4c857|4194304|mpr17841.8|f48beffc|4194304|mpr17842.9|ac8deed7|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +supgoal||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|a686f7a2|2097152|ic24.bin|56fbbeea|2097152|ic26.bin|64701c2b|2097152|ic28.bin|d9aebe8c|2097152|ic30.bin|26d4ade5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|supgoal.nv|63806aae|128 +tatacot|critcrsh|critcrsh.nv|3da9860e|128|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-18790.ic13|d95155dc|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr-18788.ic9|feae5867|4194304|mpr-18789.ic8|b388616f|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +techbowl||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22|5058db21|2097152|ic24|34090f6d|2097152|ic26|fb073352|2097152|ic28|530e0ceb|2097152|ic30|8d89877e|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|techbowl.nv|5bebc2b7|128 +thunt|sandor|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|th-e-2.ic2|47315694|4194304|th-e-3.ic3|c9290b44|4194304|th-e-4.ic4|c672e40b|4194304|th-e-5.ic5|3914b805|4194304|th-ic7_1.stv|1355cc18|524288|th-ic7_2.stv|c4e993de|524288 +thuntk|sandor|1.ic13_1|460727c8|524288|2.ic13_2|6cae2926|524288|bom210-10.ic2|f59d0827|4194304|bom210-11.ic3|44e5a13e|4194304|bom210-12.ic4|deabc701|4194304|bom210-13.ic5|5ece1d5c|4194304|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +twcup98||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20819.24|d930dfc8|1048576|mpr20821.12|2d930d23|4194304|mpr20822.13|8b33a5e2|4194304|mpr20823.14|6e6d4e95|4194304|mpr20824.15|4cf18a25|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +twsoc98|twcup98|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-20820.ic24|b10451f9|1048576|epr-23603.ic8|f688ae60|524288|mpr20821.12|2d930d23|4194304|mpr20822.13|8b33a5e2|4194304|mpr20823.14|6e6d4e95|4194304|mpr20824.15|4cf18a25|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vfkids||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr18914.13|cd35730a|1048576|mpr18915.1|09cc38e5|4194304|mpr18916.4|4aae3ddb|4194304|mpr18917.5|edf6edc3|4194304|mpr18918.6|d3a95036|4194304|mpr18919.8|4ac700de|4194304|mpr18920.9|0106e36c|4194304|mpr18921.10|c23d51ad|4194304|mpr18922.11|99d0ab90|4194304|mpr18923.12|30a41ae9|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vfremix||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr17944.13|3304c175|524288|mpr17945.1|03ede188|2097152|mpr17946.2|4cb245f7|4194304|mpr17947.3|fef4a9fb|4194304|mpr17948.4|3e2b251a|4194304|mpr17949.5|b2ecea25|4194304|mpr17950.6|5b1f981d|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +vmahjong||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|mpr19614.1|b83b3f03|4194304|mpr19615.2|c62896da|4194304|mpr19616.3|f62207c7|4194304|mpr19617.4|ab667e19|4194304|mpr19618.5|9782ceee|4194304|mpr19619.6|0b76866c|4194304|mpr19620.7|c98de7e5|2097152|mpr19621.8|f92616b3|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|vmahjong.nv|4e6487f4|128 +wasafari||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|ic22.bin|d8bb2e2c|2097152|ic24.bin|c1b0e173|2097152|ic26.bin|a5c0577c|2097152|ic28.bin|2a8cfa97|2097152|ic30.bin|9a4109e5|2097152|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288|wasafari.nv|50861c5a|128 +winterht||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|fpr20108.13|1ef9ced0|1048576|mpr20109.1|c1a713b8|4194304|mpr20110.2|238ef832|4194304|mpr20111.3|b0a86f69|4194304|mpr20112.4|3ba2b49b|4194304|mpr20113.5|8c858b41|4194304|mpr20114.6|b723862c|4194304|mpr20115.8|dd01f2ad|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +yattrmnp||315-5930.ic19|d1201563|279|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-21121.bin|d615bce0|131072|epr-21122.ic13|49f56e32|524288|epr-23603.ic8|f688ae60|524288|mpr-21123.ic12|491b9166|4194304|mpr-21124.ic11|10f073ac|4194304|mpr-21125.ic02|40f5f119|4194304|mpr-21126.ic04|36095649|4194304|mpr-21127.ic06|f55901d7|4194304|mpr-21128.ic08|c2e2f72e|4194304|mpr-21129.ic10|997d67bd|4194304|mpr-21130.ic03|84cb4e9c|4194304|mpr-21131.ic05|b1c860d8|4194304|mpr-21132.ic07|809b1b0e|4194304|mpr-21133.ic09|2dc21956|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +znpwfv||epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20398.13|3fb56a0b|1048576|mpr20399.1|c178a96e|4194304|mpr20400.2|1edfbe05|4194304|mpr20401.3|99e98937|4194304|mpr20402.4|4572aa60|4194304|mpr20403.5|26a8e13e|4194304|mpr20404.6|0b70275d|4194304|mpr20405.8|f53337b7|4194304|mpr20406.9|b677c175|4194304|mpr20407.10|58356050|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 +znpwfvt|znpwfv|epr-17740.ic8|5c5aa63d|524288|epr-17740a.ic8|3e23c81f|524288|epr-17741a.ic8|4166c663|524288|epr-17742a.ic8|02daf123|524288|epr-17951a.ic8|2672f9d8|524288|epr-17952a.ic8|d1be2adf|524288|epr-17953a.ic8|a4c47570|524288|epr-17954a.ic8|f7722da3|524288|epr-19730.ic8|d0e0889d|524288|epr-19854.ic8|e09d1f60|524288|epr-20091.ic8|59ed40f4|524288|epr-23603.ic8|f688ae60|524288|epr20408.13|1d62fcf6|1048576|mpr20399.1|c178a96e|4194304|mpr20400.2|1edfbe05|4194304|mpr20401.3|99e98937|4194304|mpr20402.4|4572aa60|4194304|mpr20403.5|26a8e13e|4194304|mpr20404.6|0b70275d|4194304|mpr20405.8|f53337b7|4194304|mpr20406.9|b677c175|4194304|mpr20407.10|58356050|4194304|stv1061.bin|728dbca3|524288|stv110.bin|3dfeda92|524288 diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst b/package/arcade-dats/precompiled/stv-1.32.1.lst new file mode 100644 index 0000000000000000000000000000000000000000..3ad38b63aa91cf61b1dfd112cae37d7239aa2df3 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst @@ -0,0 +1,103 @@ +name|description|type|sourcefile|rotate|width|height|refresh|bios|parent|status|manufacter +astrass|Astra SuperStars (J 980514 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft +bakubaku|Baku Baku Animal (J 950407 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +batmanfr|Batman Forever (JUE 960507 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Acclaim +choroqhr|Choro Q Hyper Racing 5 (J 981230 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega/Takara +colmns97|Columns '97 (JET 961209 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +cotton2|Cotton 2 (JUET 970902 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +cottonbm|Cotton Boomerang (JUET 980709 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +critcrsh|Critter Crusher (EA 951204 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +danchih|Danchi de Hanafuda (J 990607 V1.400)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron/Tecmo +danchiq|Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron +decathlt|Decathlete (JUET 960709 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +decathlto|Decathlete (JUET 960424 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|decathlt|preliminary|Sega +dfeverg|Dancing Fever Gold (J 000821 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +diehard|Die Hard Arcade (UET 960515 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +dnmtdeka|Dynamite Deka (J 960515 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|diehard|imperfect|Sega +ejihon|Ejihon Tantei Jimusho (J 950613 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +elandore|Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sai-Mate +fanzonem|Fantasy Zone (medal game, REV.A) (J 990202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +ffreveng|Final Fight Revenge / Final Revenge (JUET 990930 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom +ffrevng10|Final Fight Revenge / Final Revenge (JUET 990714 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|ffreveng|imperfect|Capcom +fhboxers|Funky Head Boxers (JUETBKAL 951218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +findlove|Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Daiki/FCF +finlarch|Final Arch (J 950714 V1.001)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|smleague|preliminary|Sega +gaxeduel|Golden Axe - The Duel (JUETL 950117 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +grdforce|Guardian Force (JUET 980318 V0.105)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +groovef|Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +hanagumi|Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +introdon|Karaoke Quiz Intro Don Don! (J 960213 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success/Sunsoft +kiwames|Pro Mahjong Kiwame S (J 951020 V1.208)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Athena +magzun|Magical Zunou Power (J 961031 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +maruchan|Maru-Chan de Goo! (J 971216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega/Toyosuisan +mausuke|Mausuke no Ojama the World (J 960314 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +micrombc|Microman Battle Charge (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +myfairld|Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +nameclub|Name Club (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubdis|Name Club Disney (J 980614 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv2|Name Club Ver.2 (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv3|Name Club Ver.3 (J 970723 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv4|Name Club Ver.4 (J 971202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +othellos|Othello Shiyouyo (J 980423 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +patocar|Hashire Patrol Car (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +pblbeach|Pebble Beach - The Great Shot (JUE 950913 V0.990)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|T&E Soft +pckobe99|Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclb2elk|Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove|Print Club LoveLove (J 970421 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove2|Print Club LoveLove Ver 2 (J 970825 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2|Print Club 2 (U 970921 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26w|Print Club 2 Vol. 6 Winter (J 961210 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26wa|Print Club 2 Vol. 6 Winter (J 970121 V1.200)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|pclub26w|preliminary|Atlus +pclub27s|Print Club 2 Vol. 7 Spring (J 970313 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2fc|Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2kc|Print Club Kome Kome Club (J 970203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pe|Print Club 2 Pepsiman (J 970618 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pf|Print Club 2 Puffy (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2v3|Print Club 2 Vol. 3 (U 990310 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2wb|Print Club 2 Warner Bros (J 970228 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubol|Print Club Olive (J 980717 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubor|Print Club Goukakenran (J 991104 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubpok|Print Club Pokemon B (U 991126 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubyo2|Print Club Yoshimoto V2 (J 970422 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh2|Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh3|Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc28su|Print Club 2 Vol. 8 Summer (J 970616 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wi|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wia|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|prc297wi|preliminary|Atlus +prc298au|Print Club 2 '98 Autumn Ver (J 980827 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298sp|Print Club 2 '98 Spring Ver (J 971017 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298su|Print Club 2 '98 Summer Ver (J 980603 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc29au|Print Club 2 Vol. 9 Autumn (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc2ksu|Print Club 2 2000 Summer (J 000509 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prikura|Princess Clara Daisakusen (J 960910 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +puyosun|Puyo Puyo Sun (J 961115 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Compile +rsgun|Radiant Silvergun (JUET 980523 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Treasure +sackids|Soreyuke Anpanman Crayon Kids (J 001026 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sandor|Puzzle & Action: Sando-R (J 951114 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +sanjeon|DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sasissu|imperfect|Deniam/Sega +sasissu|Taisen Tanto-R Sashissu!! (J 980216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +seabass|Sea Bass Fishing (JUET 971110 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|A wave inc./Able +shanhigw|Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Activision/Sunsoft +shienryu|Shienryu (JUET 961226 V1.000)|parent|sega/stv.cpp|270|352|224|59.764802|stvbios||imperfect|Warashi +skychal|Sky Challenger (J 000406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +smleague|Super Major League (U 960108 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sokyugrt|Soukyugurentai / Terra Diver (JUET 960821 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Eighting/Raizing +sss|Steep Slope Sliders (JUET 981110 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom/Cave/Victor Interactive Software +stress|Stress Busters (J 981020 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +stvbios|ST-V BIOS|bios|sega/stv.cpp|0|352|224|59.764802||||Sega +suikoenb|Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +supgoal|Nerae! Super Goal (J 981218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +tatacot|Tatacot (JA 951128 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|critcrsh|imperfect|Sega +techbowl|Technical Bowling (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +thunt|Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega +thuntk|Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Deniam/Sega +twcup98|Tecmo World Cup '98 (JUET 980410 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Tecmo +twsoc98|Tecmo World Soccer '98 (JUET 980410 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|twcup98|preliminary|Tecmo +vfkids|Virtua Fighter Kids (JUET 960319 V0.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +vfremix|Virtua Fighter Remix (JUETBKAL 950428 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +vmahjong|Virtual Mahjong (J 961214 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +wasafari|Wanpaku Safari (J 981109 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +winterht|Winter Heat (JUET 971012 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +yattrmnp|Yatterman Plus (J 981006 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +znpwfv|Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +znpwfvt|Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|znpwfv|imperfect|Sega diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers b/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers new file mode 100644 index 0000000000000000000000000000000000000000..894579c5a637f5c1083dd79c282a04b366e938ec --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst.manufacturers @@ -0,0 +1 @@ +1 - manufacter (1)2 - Sunsoft (3)3 - Sega (44)4 - Acclaim (1)5 - Takara (1)6 - Success (5)7 - Altron (2)8 - Tecmo (3)9 - Sai-Mate (1)10 - Capcom (3)11 - Daiki (1)12 - FCF (1)13 - Atlus (30)14 - Athena (1)15 - Toyosuisan (1)16 - Data East (2)17 - Micronet (2)18 - T&E Soft (1)19 - Compile (1)20 - Treasure (1)21 - Deniam (2)22 - A wave inc. (1)23 - Able (1)24 - Activision (1)25 - Warashi (1)26 - Eighting (1)27 - Raizing (1)28 - Cave (1)29 - Victor Interactive Software (1) \ No newline at end of file diff --git a/package/arcade-dats/precompiled/stv-1.32.1.lst.original b/package/arcade-dats/precompiled/stv-1.32.1.lst.original new file mode 100644 index 0000000000000000000000000000000000000000..5a2974f35fb947863f48d155d42b528397596e83 --- /dev/null +++ b/package/arcade-dats/precompiled/stv-1.32.1.lst.original @@ -0,0 +1,103 @@ +name|description|type|sourcefile|rotate|width|height|refresh|bios|parent|status|manufacter +astrass|Astra SuperStars (J 980514 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft +bakubaku|Baku Baku Animal (J 950407 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +batmanfr|Batman Forever (JUE 960507 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Acclaim +choroqhr|Choro Q Hyper Racing 5 (J 981230 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega / Takara +colmns97|Columns '97 (JET 961209 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +cotton2|Cotton 2 (JUET 970902 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +cottonbm|Cotton Boomerang (JUET 980709 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +critcrsh|Critter Crusher (EA 951204 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +danchih|Danchi de Hanafuda (J 990607 V1.400)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron (Tecmo license) +danchiq|Danchi de Quiz: Okusan Yontaku Desuyo! (J 001128 V1.200)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Altron +decathlt|Decathlete (JUET 960709 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +decathlto|Decathlete (JUET 960424 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|decathlt|preliminary|Sega +dfeverg|Dancing Fever Gold (J 000821 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +diehard|Die Hard Arcade (UET 960515 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +dnmtdeka|Dynamite Deka (J 960515 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|diehard|imperfect|Sega +ejihon|Ejihon Tantei Jimusho (J 950613 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +elandore|Touryuu Densetsu Elan-Doree / Elan Doree - Legend of Dragoon (JUET 980922 V1.006)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sai-Mate +fanzonem|Fantasy Zone (medal game, REV.A) (J 990202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +ffreveng|Final Fight Revenge / Final Revenge (JUET 990930 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom +ffrevng10|Final Fight Revenge / Final Revenge (JUET 990714 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|ffreveng|imperfect|Capcom +fhboxers|Funky Head Boxers (JUETBKAL 951218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +findlove|Zenkoku Seifuku Bishoujo Grand Prix Find Love (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Daiki / FCF +finlarch|Final Arch (J 950714 V1.001)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|smleague|preliminary|Sega +gaxeduel|Golden Axe - The Duel (JUETL 950117 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +grdforce|Guardian Force (JUET 980318 V0.105)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +groovef|Groove on Fight - Gouketsuji Ichizoku 3 (J 970416 V1.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +hanagumi|Sakura Taisen - Hanagumi Taisen Columns (J 971007 V1.010)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +introdon|Karaoke Quiz Intro Don Don! (J 960213 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft / Success +kiwames|Pro Mahjong Kiwame S (J 951020 V1.208)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Athena +magzun|Magical Zunou Power (J 961031 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +maruchan|Maru-Chan de Goo! (J 971216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega / Toyosuisan +mausuke|Mausuke no Ojama the World (J 960314 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +micrombc|Microman Battle Charge (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +myfairld|Virtual Mahjong 2 - My Fair Lady (J 980608 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +nameclub|Name Club (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubdis|Name Club Disney (J 980614 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv2|Name Club Ver.2 (J 960315 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv3|Name Club Ver.3 (J 970723 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +nclubv4|Name Club Ver.4 (J 971202 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +othellos|Othello Shiyouyo (J 980423 V1.002)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Success +patocar|Hashire Patrol Car (J 990326 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +pblbeach|Pebble Beach - The Great Shot (JUE 950913 V0.990)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|T&E Soft +pckobe99|Print Club 2 Kobe Luminaire '99 (Print Club Custom 3) (J 991203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclb2elk|Print Club 2 Earth Limited Kobe (Print Club Custom) (J 970808 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove|Print Club LoveLove (J 970421 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclove2|Print Club LoveLove Ver 2 (J 970825 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2|Print Club 2 (U 970921 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26w|Print Club 2 Vol. 6 Winter (J 961210 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub26wa|Print Club 2 Vol. 6 Winter (J 970121 V1.200)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|pclub26w|preliminary|Atlus +pclub27s|Print Club 2 Vol. 7 Spring (J 970313 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2fc|Print Club 2 Felix The Cat (Rev. A) (J 970415 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2kc|Print Club Kome Kome Club (J 970203 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pe|Print Club 2 Pepsiman (J 970618 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2pf|Print Club 2 Puffy (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2v3|Print Club 2 Vol. 3 (U 990310 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclub2wb|Print Club 2 Warner Bros (J 970228 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubol|Print Club Olive (J 980717 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubor|Print Club Goukakenran (J 991104 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubpok|Print Club Pokemon B (U 991126 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pclubyo2|Print Club Yoshimoto V2 (J 970422 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh2|Print Club Winnie-the-Pooh Vol. 2 (J 971218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +pcpooh3|Print Club Winnie-the-Pooh Vol. 3 (J 980406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc28su|Print Club 2 Vol. 8 Summer (J 970616 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wi|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 1)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc297wia|Print Club 2 '97 Winter Ver (J 971017 V1.100, set 2)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|prc297wi|preliminary|Atlus +prc298au|Print Club 2 '98 Autumn Ver (J 980827 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298sp|Print Club 2 '98 Spring Ver (J 971017 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc298su|Print Club 2 '98 Summer Ver (J 980603 V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc29au|Print Club 2 Vol. 9 Autumn (J V1.100)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prc2ksu|Print Club 2 2000 Summer (J 000509 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Atlus +prikura|Princess Clara Daisakusen (J 960910 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Atlus +puyosun|Puyo Puyo Sun (J 961115 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Compile +rsgun|Radiant Silvergun (JUET 980523 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Treasure +sackids|Soreyuke Anpanman Crayon Kids (J 001026 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sandor|Puzzle & Action: Sando-R (J 951114 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +sanjeon|DaeJeon! SanJeon SuJeon (AJTUE 990412 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sasissu|imperfect|Sega / Deniam +sasissu|Taisen Tanto-R Sashissu!! (J 980216 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +seabass|Sea Bass Fishing (JUET 971110 V0.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|A wave inc. (Able license) +shanhigw|Shanghai - The Great Wall / Shanghai Triple Threat (JUE 950623 V1.005)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sunsoft / Activision +shienryu|Shienryu (JUET 961226 V1.000)|parent|sega/stv.cpp|270|352|224|59.764802|stvbios||imperfect|Warashi +skychal|Sky Challenger (J 000406 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +smleague|Super Major League (U 960108 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +sokyugrt|Soukyugurentai / Terra Diver (JUET 960821 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Raizing / Eighting +sss|Steep Slope Sliders (JUET 981110 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Capcom / Cave / Victor Interactive Software +stress|Stress Busters (J 981020 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +stvbios|ST-V BIOS|bios|sega/stv.cpp|0|352|224|59.764802||||Sega +suikoenb|Suiko Enbu / Outlaws of the Lost Dynasty (JUETL 950314 V2.001)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Data East +supgoal|Nerae! Super Goal (J 981218 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +tatacot|Tatacot (JA 951128 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|critcrsh|imperfect|Sega +techbowl|Technical Bowling (J 971212 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +thunt|Puzzle & Action: Treasure Hunt (JUET 970901 V2.00E)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega +thuntk|Puzzle & Action: BoMulEul Chajara (JUET 970125 V2.00K)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|sandor|imperfect|Sega / Deniam +twcup98|Tecmo World Cup '98 (JUET 980410 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Tecmo +twsoc98|Tecmo World Soccer '98 (JUET 980410 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|twcup98|preliminary|Tecmo +vfkids|Virtua Fighter Kids (JUET 960319 V0.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +vfremix|Virtua Fighter Remix (JUETBKAL 950428 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +vmahjong|Virtual Mahjong (J 961214 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Micronet +wasafari|Wanpaku Safari (J 981109 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +winterht|Winter Heat (JUET 971012 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +yattrmnp|Yatterman Plus (J 981006 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||preliminary|Sega +znpwfv|Zen Nippon Pro-Wrestling Featuring Virtua (J 971123 V1.000)|parent|sega/stv.cpp|0|352|224|59.764802|stvbios||imperfect|Sega +znpwfvt|Zen Nippon Pro-Wrestling Featuring Virtua (T 971123 V1.000)|clone|sega/stv.cpp|0|352|224|59.764802|stvbios|znpwfv|imperfect|Sega diff --git a/package/arcade-dats/stv.xslt b/package/arcade-dats/stv.xslt new file mode 100755 index 0000000000000000000000000000000000000000..c5f46ec31dd1650362d62b74363175dbb489cdde --- /dev/null +++ b/package/arcade-dats/stv.xslt @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + Naomi2 + + + Naomi2 + + + Recalbox + + + https://www.recalbox.com/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/package/arcade-dats/updater.py b/package/arcade-dats/updater.py index fd6a874bf24165f4ad74f0287cf90d10f0768fbb..89ddb95d867e6a3205ee96b2e716d55e501d4c2c 100755 --- a/package/arcade-dats/updater.py +++ b/package/arcade-dats/updater.py @@ -61,6 +61,7 @@ class Updater: "supermodel" : SystemDescriptor("supermodel" , "supermodel" , ["supermodel"] , "", []), "flycast" : SystemDescriptor("flycast" , "libretro-flycast" , ["naomi", "naomigd", "atomiswave"], "", []), "flycast-next" : SystemDescriptor("flycast-next" , "libretro-flycast-next" , ["naomi", "naomigd", "atomiswave", "naomi2"], "", []), + "mednafen" : SystemDescriptor("mednafen" , "mednafen" , ["stv"], "", []), } def execute(self): diff --git a/package/mednafen/0001-mednafen-add-switchres.patch b/package/mednafen/0001-mednafen-add-switchres.patch new file mode 100644 index 0000000000000000000000000000000000000000..c7d0a5a84b8a4d2f38907f3f647035419ba2f5f7 --- /dev/null +++ b/package/mednafen/0001-mednafen-add-switchres.patch @@ -0,0 +1,1558 @@ +diff --git a/src/drivers/main.cpp b/src/drivers/main.cpp +index fe6b7f9..e813cd0 100644 +--- a/src/drivers/main.cpp ++++ b/src/drivers/main.cpp +@@ -258,6 +258,7 @@ void MakeDebugSettings(void) + } + + static MThreading::Thread* GameThread; ++static MThreading::Thread* SwitchThread; //psakhis - sniffer changes + + static struct + { +@@ -273,6 +274,8 @@ static std::atomic_int VTReady; + static unsigned VTRotated = 0; + static bool VTSSnapshot = false; + static MThreading::Sem* VTWakeupSem; ++static MThreading::Sem* STWakeupSem; //psakhis - semaphore when change resolution occurs on main loop ++static MThreading::Sem* AUWakeupSem; //psakhis - semaphore when audio buffer is ready + static MThreading::Mutex *VTMutex = NULL, *EVMutex = NULL; + static MThreading::Mutex *StdoutMutex = NULL; + +@@ -373,12 +376,14 @@ static BOOL CALLBACK ETWCB(HWND hwnd, LPARAM lParam) + return TRUE; + } + */ ++ + static void HandleConsoleMadness(void) + { + decltype(GetConsoleWindow)* p_GetConsoleWindow = (decltype(GetConsoleWindow)*)GetProcAddress(GetModuleHandleA("kernel32.dll"), "GetConsoleWindow"); + + if(!p_GetConsoleWindow) + return; ++ + // + // + HWND cwin = p_GetConsoleWindow(); +@@ -397,9 +402,14 @@ static void HandleConsoleMadness(void) + ShowWindow(cwin, SW_HIDE); + } + } ++ else //psakhis ++ { ++ RedirectSTDxxx(); ++ } //end psakhis + } + else if(!RedirectSTDxxx()) + { ++ + if(AllocConsole()) + { + HANDLE hand_stdout, hand_stderr; +@@ -1034,9 +1044,18 @@ static void CloseGame(void) MDFN_COLD; + // + // + static unsigned volatile NeedVideoSync = false; ++//SLK ++static volatile unsigned NeedResolutionChange = 0; // trigger to switch window/fullscreen resolution ++//SLK end + static int volatile NeedExitNow = false; // Set 'true' in various places, including signal handler. + // + // ++//psakhis ++static volatile unsigned NeedResolutionRefresh = 0; // trigger refresh video blitter on main thread if resolution changes ++static int SwitchLoop(void *arg); //sniffer changes ++int volatile SwitchThreadRun = 0; ++//psakhis end ++ + static bool MDFND_Update(int WhichVideoBuffer, int16 *Buffer, int Count); + static void GameThread_HandleEvents(void); + static int GameLoop(void *arg); +@@ -1134,7 +1153,7 @@ static int LoadGame(const char *force_module, const char *path) + + // Load state before network connection. + // TODO: Move into core, MDFNI_LoadGame() +- if(MDFN_GetSettingB("autosave")) ++ if(MDFN_GetSettingB("autosave")) + { + if(!MDFNI_LoadState(NULL, "mca")) + { +@@ -1202,6 +1221,18 @@ static void CloseGame(void) + // + // + // ++ //psakhis ++ SwitchThreadRun = 0; ++ ++ MThreading::Sem_Post(STWakeupSem); //close thread safetly ++ MThreading::Sem_Post(AUWakeupSem); //close thread safetly ++ if(SwitchThread) ++ { ++ MThreading::Thread_Wait(SwitchThread, NULL); ++ SwitchThread = NULL; ++ } ++ //psakhis end ++ + if(qtrecfn) // Needs to be before MDFNI_Closegame() for now + MDFNI_StopAVRecord(); + +@@ -1377,6 +1408,14 @@ static int GameLoop(void *arg) + else + MDFNI_Emulate(&espec); + ++ //psakhis: activate change on switch thread ++ if (!NeedResolutionChange && resolution_to_change && (use_native_resolution || use_super_resolution || use_switchres)) { ++ NeedResolutionChange++; //redundant only if not changing ++ MThreading::Sem_Post(STWakeupSem); ++ resolution_to_change = false; ++ } ++ //psakhis end ++ + if(MDFN_UNLIKELY(StateSLSTest)) + { + MemoryStream orig_state(524288); +@@ -1466,6 +1505,32 @@ static int GameLoop(void *arg) + } + + ++//psakhis: implements switches on a separate thread with semaphore activator from main loop thread ++static int SwitchLoop(void *arg) ++{ ++ while(SwitchThreadRun) { ++ //printf("SWITCH - Sleeping - Waiting for the next change\n"); ++ if (MThreading::Sem_Wait(STWakeupSem)) { //activator semaphore from main loop ++ if(MDFN_LIKELY(NeedResolutionChange) && !MDFN_LIKELY(NeedResolutionRefresh)) //redundant, safetly close ++ { ++ if ((current_game_resolution_w != resolution_to_change_w) || (current_game_resolution_h != resolution_to_change_h) || (current_game_rotated != CurGame->rotated)) { ++ if (current_game_rotated != CurGame->rotated) ++ MDFN_printf(_("SWITCH - Activated - Rotate detected\n")); ++ MDFN_printf(_("SWITCH - Activated - Current resolution %dx%d - Changing to %dx%d@%f\n"),current_game_resolution_w,current_game_resolution_h,resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ NeedResolutionRefresh = Video_ChangeResolution(CurGame,resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ } ++ else { ++ //printf("SWITCH - Activated - Bypassed from %dx%d@%f\n",resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ NeedResolutionChange--; ++ } ++ } ++ } ++ } ++ ++ return 1; ++} ++//end psakhis ++ + std::string GetBaseDirectory(void) + { + #ifdef WIN32 +@@ -2012,6 +2077,16 @@ static bool MainVideoLoop(void) + NeedVideoSync = false; // same + } + ++ // SLK + psakhis ++ if(MDFN_LIKELY(NeedResolutionChange) && MDFN_LIKELY(NeedResolutionRefresh)) ++ { ++ printf("MAIN - VIDEO - Refresh blitter after a resolution change\n"); ++ Video_BlitRefresh(); ++ NeedResolutionChange--; ++ NeedResolutionRefresh--; ++ } ++ // SLK + psakhis END ++ + if(NeededWMInputBehavior_Dirty) + { + Video_SetWMInputBehavior(NeededWMInputBehavior); +@@ -2098,6 +2173,14 @@ static bool LoadAndRunGame(const char* force_module, const char* path) + + if(vt_affinity) + MThreading::Thread_SetAffinity(NULL, vt_affinity); ++ ++ //psakhis: create thread with semaphore for switches ++ SwitchThreadRun = 1; ++ SwitchThread = MThreading::Thread_Create(SwitchLoop, NULL, "MDFN Switch"); ++ ++ if(vt_affinity) ++ MThreading::Thread_SetAffinity(SwitchThread, vt_affinity); ++ //psakhis end + // + // + // +@@ -2442,6 +2525,7 @@ int main(int argc, char *argv[]) + EVMutex = MThreading::Mutex_Create(); + + VTWakeupSem = MThreading::Sem_Create(); ++ STWakeupSem = MThreading::Sem_Create(); //psakhis: semaphore for push changes changes from mainloop + // + Video_Init(); + // +diff --git a/src/drivers/video.cpp b/src/drivers/video.cpp +index edeff4e..e3d0e1c 100644 +--- a/src/drivers/video.cpp ++++ b/src/drivers/video.cpp +@@ -47,6 +47,12 @@ + #include "2xSaI.h" + #endif + ++#include //psakhis ++#include //psakhis ++#include //psakhis ++#include //psakhis ++#include //psakhis ++ + class SDL_to_MDFN_Surface_Wrapper : public MDFN_Surface + { + public: +@@ -104,6 +110,20 @@ enum + VDRIVER__COUNT + }; + ++// SLK ++static int _resolution_switch; ++enum ++{ ++ RES_STATIC = 0, ++ RES_NATIVE = 1, ++ RES_SUPER = 2, ++ RES_SWITCHRES = 3, ++ RES_MISTER = 4//psakhis ++}; ++// SLK - end ++ ++unsigned char retSR; //psakhis ++ + enum + { + NTVB_NONE = 0, +@@ -175,6 +195,19 @@ static const MDFNSetting_EnumList GLFormat_List[] = + { NULL, 0 }, + }; + ++// SLK - custom setting ++static const MDFNSetting_EnumList Resolution_Switch[] = ++{ ++ // Legacy: ++ { "0", RES_STATIC}, ++ { "native", RES_NATIVE, "Native resolutions", gettext_noop("Use emulated system native resolution for output") }, ++ { "super", RES_SUPER, "Super resolutions", gettext_noop("Use super resolutions for output") }, ++ { "switchres", RES_SWITCHRES, "Switchres 2", gettext_noop("Use switchres 2 for output") }, //psakhis ++ { "mister", RES_MISTER, "MiSTer", gettext_noop("Use MiSTer for output") }, ++ { NULL, 0 } ++}; ++// SLK - end ++ + static const MDFNSetting GlobalVideoSettings[] = + { + { "video.driver", MDFNSF_NOFLAGS, gettext_noop("Video output driver."), NULL, MDFNST_ENUM, "default", NULL, NULL, NULL, NULL, VDriver_List }, +@@ -195,6 +228,10 @@ static const MDFNSetting GlobalVideoSettings[] = + + { "video.disable_composition", MDFNSF_NOFLAGS, gettext_noop("Attempt to disable desktop composition."), gettext_noop("Currently, this setting only has an effect on Windows Vista and Windows 7(and probably the equivalent server versions as well)."), MDFNST_BOOL, "1" }, + ++ // SLK - admit new parameter ++ { "video.resolution_switch", MDFNSF_NOFLAGS, gettext_noop("Video resolution switch (0, native, super or switchres)."), NULL, MDFNST_ENUM, "0", NULL, NULL, NULL, NULL, Resolution_Switch}, ++ // SLK - end ++ + { NULL } + }; + +@@ -447,6 +484,7 @@ static SDL_Window* window = NULL; + static SDL_GLContext glcontext = NULL; + static SDL_Surface *screen = NULL; + static OpenGL_Blitter *ogl_blitter = NULL; ++static OpenGL_Blitter *ogl_blitter_gunlight = NULL; //psakhis + static SDL_Surface *IconSurface=NULL; + + static int32 screen_w, screen_h; +@@ -473,6 +511,10 @@ static MDFN_PixelFormat game_pf; // Pixel format for game texture/surface + static MDFN_PixelFormat osd_pf; // Pixel format for OSD textures/surfaces + static MDFN_PixelFormat emu_pf; + ++// SLK SR ++double sr_x_scale = 1; ++double sr_y_scale = 1; ++ + static void GrabbyGoAway(void); + + static INLINE void MarkNeedBBClear(void) +@@ -512,6 +554,11 @@ static void SyncCleanup(void) + + void Video_Kill(void) + { ++ if (use_switchres) { //psakhis ++ sr_deinit(); ++ printf(" VIDEO - Video_Kill - SWITCHRES unloaded \n"); //psakhis ++ } ++ + SyncCleanup(); + + if(window) +@@ -676,9 +723,19 @@ static bool GenerateFullscreenDestRect(void) + } + } + else +- { +- exs = video_settings.xscalefs; +- eys = video_settings.yscalefs; ++ { //psakhis ++ if (use_native_resolution || use_switchres || use_super_resolution) ++ { ++ exs = sr_x_scale; ++ eys = sr_y_scale; ++ if(rotated == MDFN_ROTATE90 || rotated == MDFN_ROTATE270) ++ std::swap(exs, eys); ++ } ++ else //static ++ { ++ exs = video_settings.xscalefs; ++ eys = video_settings.yscalefs; ++ } + + screen_dest_rect.w = floor(0.5 + VideoGI->nominal_width * exs); + screen_dest_rect.h = floor(0.5 + VideoGI->nominal_height * eys); +@@ -798,6 +855,263 @@ static ModeInfo SetMode(const ModeInfo& mode) + SetMode(new_mode); + #endif + ++ ++// SLK ++ ++//psakhis: WIN32 flush modes to driver ++void Video_Switchres_Flush(const char *shortname, double vfreq) ++{ ++ printf(" VIDEO - Video_Switchres_Flush - Flushing modes core(%s), refresh(%f)\n", shortname, vfreq); ++ int pal = 0; ++ if (vfreq > 0 && vfreq < 55) ++ pal = 1; ++ sr_mode swres_result; ++ int sr_mode_flags = SR_MODE_DONT_FLUSH; ++ if (!strcmp(shortname, "ss")) { ++ if (pal) { ++ retSR = sr_add_mode(320, 288, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 288, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 288, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 288, vfreq, sr_mode_flags, &swres_result); ++ } ++ sr_mode_flags = SR_MODE_INTERLACED | SR_MODE_DONT_FLUSH; ++ retSR = sr_add_mode(320, 576, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 576, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 576, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 576, vfreq, sr_mode_flags, &swres_result); ++ } ++ } ++ else { ++ retSR = sr_add_mode(320, 240, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 240, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 240, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 240, vfreq, sr_mode_flags, &swres_result); ++ } ++ sr_mode_flags = SR_MODE_INTERLACED | SR_MODE_DONT_FLUSH; ++ retSR = sr_add_mode(320, 480, vfreq, sr_mode_flags, &swres_result); ++ if (swres_result.width == 320) { ++ retSR = sr_add_mode(352, 480, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(640, 480, vfreq, sr_mode_flags, &swres_result); ++ retSR = sr_add_mode(704, 480, vfreq, sr_mode_flags, &swres_result); ++ } ++ } ++ } ++ retSR = sr_flush(); ++ printf(" VIDEO - Video_Switchres_Flush - Flushing applied\n"); ++} ++//psakhis end ++ ++//SLK + psakhis ++void Video_SetSwitchres(int w, int h, double vfreq, int orientation) ++{ ++ printf(" VIDEO - Video_SetSwitchres - called for %dx%d@%f (%d) \n",w,h,vfreq,orientation); ++ sr_mode swres_result; ++ int sr_mode_flags = 0; ++ ++ if (h > 288) ++ sr_mode_flags = SR_MODE_INTERLACED; ++ ++ if (orientation == MDFN_ROTATE90 || orientation == MDFN_ROTATE270) ++ sr_mode_flags = sr_mode_flags | SR_MODE_ROTATED; ++ ++ retSR = sr_add_mode(w, h, vfreq, sr_mode_flags, &swres_result); ++ //retSR = sr_switch_to_mode(w, h, vfreq, interlace, &swres_result); ++ retSR = sr_set_mode(swres_result.id); ++ printf(" VIDEO - Video_SetSwitchres - result %dx%d@%f - x=%.4f y=%.4f stretched(%d)\n", swres_result.width, swres_result.height,swres_result.vfreq, swres_result.x_scale, swres_result.y_scale, swres_result.is_stretched); ++ printf(" VIDEO - Video_SetSwitchres - sr_switch_to_mode return: %u\n", (unsigned int)retSR); ++ ++ if (retSR && swres_result.width >= w && swres_result.height >= h) { ++ if (video_settings.fullscreen) ++ { //fullscreen ++ sr_x_scale = swres_result.x_scale; ++ sr_y_scale = swres_result.y_scale; ++ } ++ else ++ { //windowed (no scale) ++ sr_x_scale = 1; ++ sr_x_scale = 1; ++ } ++ //update new resolution ++ video_settings.xres = swres_result.width; ++ video_settings.yres = swres_result.height; ++ } ++} ++//SLK + psakhis end ++ ++//SLK + psakhis ++int Video_ChangeResolution(MDFNGI *gi, int w, int h, double vfreq) ++{ ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Requested video mode: %dx%d@%f\n"), w, h, vfreq); ++ ++ //psakhis ++ if (use_super_resolution && h == current_game_resolution_h) { //no switch requeried ++ double sr_x_scale_before_switch = sr_x_scale; ++ int current_game_rotated_before_switch = current_game_rotated; ++ sr_x_scale = (2560.0 / w); //refresh x scale ++ current_game_resolution_w = w; ++ current_game_rotated = gi->rotated; ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Super resolution change bypassed. Only apply scaling scale (%.4f,%.4f) \n"),sr_x_scale,sr_y_scale); ++ MarkNeedBBClear(); ++ return (sr_x_scale_before_switch != sr_x_scale || current_game_rotated_before_switch != current_game_rotated); ++ } ++ //end psakhis ++ ++ // WINDOW no switch resolutions ++ if(video_settings.fullscreen == 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Video mode: WINDOWED\n")); ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ MarkNeedBBClear(); ++ ++ if(rotated == MDFN_ROTATE90 || rotated == MDFN_ROTATE270) //ST-V ++ SDL_SetWindowSize(window, h, w); ++ else ++ SDL_SetWindowSize(window, w, h); ++ ++ int x, y; ++ SDL_GetWindowPosition(window, &x, &y); ++ SDL_PumpEvents(); ++ SDL_SetWindowPosition(window, x, y); ++ ++ sr_x_scale = 1; ++ sr_y_scale = 1; ++ } ++ else ++ // FULLSCREEN ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Video mode: FULLSCREEN\n")); ++ if (use_switchres) //psakhis new method ++ { ++ double sr_x_scale_before_switch = sr_x_scale; ++ int current_game_rotated_before_switch = current_game_rotated; ++ int xres_before_switch = video_settings.xres; ++ Video_SetSwitchres(w, h, vfreq, gi->rotated); ++ ++ if (video_settings.xres == xres_before_switch && h == current_game_resolution_h) { //no switch requiered ++ current_game_resolution_w = w; ++ current_game_rotated = gi->rotated; ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Switchres resolution change bypassed. Only apply scaling scale (%.4f,%.4f) \n"),sr_x_scale,sr_y_scale); ++ MarkNeedBBClear(); ++ return (sr_x_scale_before_switch != sr_x_scale || current_game_rotated_before_switch != current_game_rotated); ++ } ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ current_game_rotated = gi->rotated; ++ } ++ else ++ { ++ // Use good old NATIVE or SUPER switch resolution process ++ SDL_DisplayMode current; ++ SDL_DisplayMode mode; ++ SDL_DisplayMode trymode; ++ int displayIndex; ++ ++ displayIndex = SDL_GetWindowDisplayIndex(window); ++ if(displayIndex < 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - ERROR Could not get screen index: %s\n"), SDL_GetError()); ++ return 0; ++ } ++ else ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Screen index: %d\n"),displayIndex); ++ } ++ ++ if(SDL_GetCurrentDisplayMode(displayIndex, ¤t) != 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Could not get display mode for video display %d: %s\n"), displayIndex, SDL_GetError()); ++ } ++ else ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Display #%d: Current display mode is %dx%dpx @ %dhz.\n"), displayIndex, current.w, current.h, current.refresh_rate); ++ if (use_super_resolution) ++ trymode.w = 2560; ++ else ++ trymode.w = w; ++ trymode.h = h; ++ trymode.refresh_rate = (int) vfreq; ++ ++ if (SDL_GetClosestDisplayMode(displayIndex, &trymode, &mode) == NULL) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - No suitable display mode was found, %s\n"),SDL_GetError()); ++ } ++ else ++ { ++ //psakhis ++ sr_x_scale = (double) mode.w / w; ++ sr_y_scale = (double) mode.h / h; ++ video_settings.xres = mode.w; ++ video_settings.yres = mode.h; ++ current_game_resolution_w = w; ++ current_game_resolution_h = h; ++ current_game_rotated = rotated; ++ //end psakhis ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - Received: \t%dx%dpx @ %dhz ,scale (%.4f,%.4f)\n"), mode.w, mode.h, mode.refresh_rate,sr_x_scale,sr_y_scale); ++ // Use SDL video change function - may be slower ++ if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ { ++ MDFN_printf(_(" VIDEO - Video_ChangeResolution - ERROR - SDL_SetWindowDisplayMode: '%s'\n"), SDL_GetError()); ++ } ++ } ++ } ++ } ++ } ++ ++ // OSD D Rect - vertical offest ++ switch(h){ ++ case 240:SMDRect.y = video_settings.yres - SMDRect.h - 18; ++ break; ++ case 288:SMDRect.y = video_settings.yres - SMDRect.h - 32; ++ break; ++ case 480:SMDRect.y = video_settings.yres - SMDRect.h - 32; ++ break; ++ case 576:SMDRect.y = video_settings.yres - SMDRect.h - 64; ++ break; ++ default: SMDRect.y = video_settings.yres - SMDRect.h - 64; ++ } ++ SMDRect.w = video_settings.xres; // OSD rect w ++ ++ return 1; ++ ++} ++// SLK + psakhis end ++ ++//psakhis refresh blitter ++void Video_BlitRefresh() ++{ ++ MarkNeedBBClear(); ++ VideoGI->nominal_width = current_game_resolution_w; ++ if (current_game_resolution_h * 2 == VideoGI->nominal_height || current_game_resolution_h * 0.5 == VideoGI->nominal_height) //only changes between interlaced/progressive (to do clean hack) ++ VideoGI->nominal_height = current_game_resolution_h; ++ ++ if (video_settings.fullscreen) ++ { ++ screen_w = video_settings.xres; ++ screen_h = video_settings.yres; ++ if (!GenerateFullscreenDestRect()) { ++ GenerateWindowedDestRect(); ++ screen_w = screen_dest_rect.w; ++ screen_h = screen_dest_rect.h; ++ } ++ } ++ else ++ { ++ GenerateWindowedDestRect(); ++ screen_w = screen_dest_rect.w; ++ screen_h = screen_dest_rect.h; ++ } ++ MDFN_printf(_(" VIDEO - Video_BlitRefresh - screen dest: %dx%d - %d,%d\n"), screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ ++ if (ogl_blitter) ++ ogl_blitter->SetViewport(screen_w, screen_h); ++ ++ MDFN_printf(_(" VIDEO - Video_BlitRefresh completed\n")); ++} ++ + void Video_Sync(MDFNGI *gi) + { + MDFNI_printf(_("Initializing video...\n")); +@@ -864,7 +1178,6 @@ void Video_Sync(MDFNGI *gi) + video_settings.shader_params.goat_slen = MDFN_GetSettingB(snp + "shader.goat.slen"); + video_settings.shader_params.goat_fprog = MDFN_GetSettingB(snp + "shader.goat.fprog"); + // +- + video_settings.fullscreen = MDFN_GetSettingB("video.fs"); + video_settings.fs_display = MDFN_GetSettingI("video.fs.display"); + vdriver = MDFN_GetSettingI("video.driver"); +@@ -876,6 +1189,102 @@ void Video_Sync(MDFNGI *gi) + + video_settings.shader = (ShaderType)MDFN_GetSettingI(snp + "shader"); + video_settings.shader_str = MDFN_GetSettingS(snp + "shader"); ++ ++ // SLK - set video settings - disable some options in conflict with native resolution ++ _resolution_switch = MDFN_GetSettingI("video.resolution_switch"); ++ ++ if(_resolution_switch){ ++ // Enable dynamic output resolution switch ++ MDFNI_printf(_("VIDEO - Video_Sync - Output video resolution swithing: ON\n")); ++ if(_resolution_switch == RES_NATIVE) // Native Res ++ { ++ use_native_resolution = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply NATIVE resolution settings - set to %dx%d\n"),resolution_to_change_w,resolution_to_change_h); ++ video_settings.xres = resolution_to_change_w; // for fullscreen mode ++ video_settings.yres = resolution_to_change_h; // for windowed ++ } ++ if(_resolution_switch == RES_SUPER) ++ { ++ use_super_resolution = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply SUPER resolution settings - set to 2560x%d\n"),resolution_to_change_h); ++ video_settings.xres = 2560; // for fullscreen mode ++ video_settings.yres = resolution_to_change_h; // for windowed ++ } ++ if(_resolution_switch == RES_SWITCHRES) // psakhis ++ { ++ use_switchres = true; ++ MDFN_printf(_(" VIDEO - Video_Sync - apply SWITCHRES resolution settings - set to %dx%d@%f\n"),resolution_to_change_w,resolution_to_change_h,resolution_to_change_vfreq); ++ MDFN_printf(_("Loading switchres.ini...\n")); ++ MDFN_printf("\n"); ++ sr_init(); ++ MDFN_printf("sr_get_version %s\n",sr_get_version()); ++ ++ //take care multi-monitor ++ if (video_settings.fs_display >= 0) { ++ const std::string sr_monitor = MDFN_GetSettingS("video.fs.display"); ++ MDFN_printf(_("sr_init_disp with video_settings.fs_display \"%s\"...\n"), sr_monitor.c_str()); ++ retSR=sr_init_disp(strcpy((char*)malloc(sr_monitor.length()+1), sr_monitor.c_str()),window); ++ ++ } ++ else { ++ MDFN_printf(_("sr_init_disp auto with video_settings.fs_display -1...\n")); ++ retSR=sr_init_disp("auto",window); ++ } ++ ++ //try system swithres.ini file ++ const std::string switchres_system_path = MDFN_MakeFName(MDFNMKF_PMCONFIG, 0, "switchres.ini").c_str(); ++ MDFN_printf(_("Loading override switchres.ini from \"%s\"...\n"), switchres_system_path.c_str()); ++ try { ++ FileStream fs_switchres_system_path(switchres_system_path, FileStream::MODE_READ); ++ sr_load_ini(strcpy((char*)malloc(switchres_system_path.length()+1), switchres_system_path.c_str())); ++ } catch(MDFN_Error& e) { ++ MDFN_printf(_(" Failed: Error opening file \"%s\"...\n"), switchres_system_path.c_str()); ++ } ++ const std::string switchres_game_path = MDFN_MakeFName(MDFNMKF_PGCONFIG, 0, "switchres.ini").c_str(); ++ MDFN_printf("\n"); ++ MDFN_printf(_("Loading override switchres.ini from \"%s\"...\n"), switchres_game_path.c_str()); ++ try { ++ FileStream fs_switchres_game_path(switchres_game_path, FileStream::MODE_READ); ++ sr_load_ini(strcpy((char*)malloc(switchres_game_path.length()+1), switchres_game_path.c_str())); ++ } catch(MDFN_Error& e) { ++ MDFN_printf(_(" Failed: Error opening file \"%s\"...\n"), switchres_game_path.c_str()); ++ } ++ MDFN_printf("\n"); ++ //end ini loadings ++ ++ MDFN_printf(_(" VIDEO - Video_Sync - SWITCHRES loaded - %u\n"),(unsigned int)retSR); ++ ++ video_settings.xres = 0; //sdl get desktop resolution - switch is delegated to switchres ++ video_settings.yres = 0; //sdl get desktop resolution - switch is delegated to switchres ++ ++ /*int bfi = MDFN_GetSettingI("video.bfi"); //experimental no bypass ++ if (bfi > 0) { ++ video_settings.xres = resolution_to_change_w; ++ video_settings.yres = resolution_to_change_h; ++ }*/ ++ } ++ ++ current_game_resolution_w = resolution_to_change_w; // bypass next changes ++ current_game_resolution_h = resolution_to_change_h; // bypass next changes ++ ++ VideoGI->nominal_width = current_game_resolution_w; ++ if (current_game_resolution_h * 2 == VideoGI->nominal_height || current_game_resolution_h * 0.5 == VideoGI->nominal_height) //only changes between interlaced/progressive (to do clean hack) ++ VideoGI->nominal_height = current_game_resolution_h; ++ ++ //variables pixel perfect initialization ++ video_settings.xscale = 1; ++ video_settings.yscale = 1; ++ video_settings.xscalefs = 1; ++ video_settings.yscalefs = 1; ++ video_settings.videoip = 0; ++ //video_settings.shader = SHADER_NONE; ++ video_settings.stretch = 0; ++ ++ rotated = 0; //ST-V Original hard ++ gi->rotated = rotated; ++ current_game_rotated = rotated; ++ } ++ + // + // + if(0) +@@ -900,6 +1309,7 @@ void Video_Sync(MDFNGI *gi) + if(screen_dest_rect.w > 16383 || screen_dest_rect.h > 16383) + throw MDFN_Error(0, _("Window size(%dx%d) is too large!"), screen_dest_rect.w, screen_dest_rect.h); + ++if(!video_settings.fullscreen) { //psakhis + SDL_SetWindowFullscreen(window, 0); + SDL_PumpEvents(); + SDL_SetWindowSize(window, screen_dest_rect.w, screen_dest_rect.h); +@@ -911,7 +1321,7 @@ void Video_Sync(MDFNGI *gi) + SDL_PumpEvents(); + SDL_ShowWindow(window); + SDL_PumpEvents(); +- ++} + // + if(0) + { +@@ -1113,6 +1523,12 @@ void Video_Sync(MDFNGI *gi) + if(yres > 0) + trymode.h = yres; + ++ /*int bfi = MDFN_GetSettingI("video.bfi"); //experimental no bypass ++ MDFN_printf("video.bfi=%d\n",bfi); ++ if (bfi > 1) { ++ trymode.refresh_rate = resolution_to_change_vfreq * 2; ++ }*/ ++ + if(vdriver != VDRIVER_OPENGL) + { + if(!(trymode.format == SDL_PIXELFORMAT_RGB565 && (gi->ExtraVideoFormatSupport & EVFSUPPORT_RGB565)) && +@@ -1129,12 +1545,14 @@ void Video_Sync(MDFNGI *gi) + goto TryWindowed; + } + +- if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ if (!use_switchres) //psakhis + { +- MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because SDL_SetWindowDisplayMode() failed: %s"), SDL_GetError()); +- goto TryWindowed; ++ if(SDL_SetWindowDisplayMode(window, &mode) < 0) ++ { ++ MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because SDL_SetWindowDisplayMode() failed: %s"), SDL_GetError()); ++ goto TryWindowed; ++ } + } +- + #if 0 + int old_mousex = 0; + int old_mousey = 0; +@@ -1147,6 +1565,18 @@ void Video_Sync(MDFNGI *gi) + goto TryWindowed; + } + ++ SDL_ShowWindow(window); //psakhis ++ //psakhis - delegate first switch to switchres ++ if (use_switchres) ++ { ++ Video_SetSwitchres(resolution_to_change_w, resolution_to_change_h, resolution_to_change_vfreq, gi->rotated); ++ Video_BlitRefresh(); ++ } ++ else ++ { ++ sr_x_scale = (double) mode.w / resolution_to_change_w; //psakhis - scale corrected ++ sr_y_scale = (double) mode.h / resolution_to_change_h; //psakhis - scale corrected ++ + #if 0 + // ugggh + SDL_PumpEvents(); +@@ -1162,6 +1592,9 @@ void Video_Sync(MDFNGI *gi) + MDFN_Notify(MDFN_NOTICE_WARNING, _("Reverting to windowed mode because screen destination rectangle(%dx%d) is too large!"), screen_dest_rect.w, screen_dest_rect.h); + goto TryWindowed; + } ++ } ++ //end psakhis ++ MDFN_printf(_(" VIDEO - Video_sync - screen dest: %dx%d - %d,%d - scale(%.4f,%.4f)\n"), screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y,sr_x_scale,sr_y_scale); // SLK + } + // + // +@@ -1295,10 +1728,43 @@ void Video_Sync(MDFNGI *gi) + SMRect.y = 0; + SMRect.w = screen_w; + +- SMDRect.w = SMRect.w * xmu; ++ // SLK - Set OSD message rendering rect. ++ if(use_super_resolution || use_switchres) // enlarge OSD message in super resolution mode ++ { ++ SMDRect.w = SMRect.w * xmu; ++ MDFN_printf(_(" VIDEO - Init : SMRect.w: %d xmu: %d\n"),SMRect.w,xmu); ++ } ++ else ++ { ++ SMDRect.w = SMRect.w * xmu; ++ } ++ // SLK - end ++ ++ // SMDRect.w = SMRect.w * xmu; + SMDRect.h = SMRect.h * ymu; + SMDRect.x = (screen_w - SMDRect.w) / 2; +- SMDRect.y = screen_h - SMDRect.h; ++ // SMDRect.y = screen_h - SMDRect.h; ++ ++ // SLK - Vertical offset for OSD messages ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ switch(screen_h){ ++ case 240:SMDRect.y = screen_h - SMDRect.h - 18; ++ break; ++ case 288:SMDRect.y = screen_h - SMDRect.h - 32; ++ break; ++ case 480:SMDRect.y = screen_h - SMDRect.h - 32; ++ break; ++ case 576:SMDRect.y = screen_h - SMDRect.h - 64; ++ break; ++ default:SMDRect.y = screen_h - SMDRect.h * xmu; // TODO: ??? ++ } ++ } ++ else ++ { ++ SMDRect.y = screen_h - SMDRect.h; ++ } ++ // SLK - end + + if(SMDRect.x < 0) + { +@@ -1629,7 +2095,7 @@ static void SubBlit(const MDFN_Surface *source_surface, const MDFN_Rect &src_rec + else // No special scaler: + { + if(ogl_blitter) +- ogl_blitter->Blit(eff_source_surface, &eff_src_rect, &dest_rect, &eff_src_rect, InterlaceField, evideoip, rotated); ++ ogl_blitter->Blit(eff_source_surface, &eff_src_rect, &dest_rect, &eff_src_rect, InterlaceField, evideoip, rotated); + else + { + SDL_to_MDFN_Surface_Wrapper m_surface(screen); +@@ -1711,7 +2177,7 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + #if 1 + { + int sub[2] = { 0, 0 }; +- SDL_DisplayMode mode; ++ //SDL_DisplayMode mode; + + if(!(SDL_GetWindowFlags(window) & SDL_WINDOW_FULLSCREEN)) + SDL_GetWindowPosition(window, &sub[0], &sub[1]); +@@ -1719,14 +2185,16 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + sub[0] += screen_dest_rect.x; + sub[1] += screen_dest_rect.y; + +- if(SDL_GetCurrentDisplayMode(SDL_GetWindowDisplayIndex(window), &mode) >= 0) +- { +- JoyGunTranslate[0].mul = (float)mode.w / screen_dest_rect.w / 32768.0; ++ //if(SDL_GetCurrentDisplayMode(SDL_GetWindowDisplayIndex(window), &mode) >= 0) ++ //{ ++ // JoyGunTranslate[0].mul = (float)mode.w / screen_dest_rect.w / 32768.0; ++ JoyGunTranslate[0].mul = (float)screen_w / screen_dest_rect.w / 32768.0; //psakhis + JoyGunTranslate[0].sub = (float)sub[0] / screen_dest_rect.w; + +- JoyGunTranslate[1].mul = (float)mode.h / screen_dest_rect.h / 32768.0; ++ //JoyGunTranslate[1].mul = (float)mode.h / screen_dest_rect.h / 32768.0; ++ JoyGunTranslate[1].mul = (float)screen_h / screen_dest_rect.h / 32768.0; //psakhis + JoyGunTranslate[1].sub = (float)sub[1] / screen_dest_rect.h; +- } ++ //} + } + #endif + // +@@ -1745,7 +2213,9 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + } + + if(vdriver == VDRIVER_OPENGL) ++ { + ogl_blitter->ClearBackBuffer(); ++ } + else + { + SDL_FillRect(screen, NULL, 0); +@@ -1762,7 +2232,34 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + + if(LineWidths[0] == ~0) // Skip multi line widths code? + { +- SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ //printf(" --- Blit full frame ---\n"); ++ //SLK - blit for: MD & NES & [...] ++ //printf(" Src: %dx%d - %d,%d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y); ++ //printf(" Dest: %dx%d - %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ MDFN_Rect sub_dest_rect = screen_dest_rect; ++ ++ //printf("Sergi %d %d %d %d \n",src_rect.w,sr_x_scale,sub_dest_rect.w,screen_dest_rect.w); ++ if((src_rect.w * sr_x_scale) > sub_dest_rect.w) ++ { ++ //printf("Horizontal crop: ON\n"); ++ src_rect.x = (src_rect.w - sub_dest_rect.w) / 2; ++ src_rect.w = sub_dest_rect.w / sr_x_scale; ++ } ++ sub_dest_rect.y = (((sub_dest_rect.h / sr_y_scale) - src_rect.h) / 2) * sr_y_scale; // V. Center ++ sub_dest_rect.h = src_rect.h * sr_y_scale; ++ ++ //printf(" Src: %dx%d - %d,%d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y); ++ //printf(" Output - SLK sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - SLK sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ ++ } ++ else ++ { ++ SubBlit(msurface, src_rect, screen_dest_rect, InterlaceField); ++ } + } + else + { +@@ -1784,27 +2281,105 @@ void BlitScreen(MDFN_Surface *msurface, const MDFN_Rect *DisplayRect, const int3 + + if(rotated == MDFN_ROTATE90) + { +- sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.y = screen_dest_rect.y; ++ if (use_native_resolution || use_super_resolution || use_switchres) { ++ sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * sr_x_scale; ++ sub_dest_rect.y = screen_dest_rect.y; ++ ++ sub_dest_rect.w = sub_src_rect.h * sr_x_scale; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } ++ else { ++ sub_dest_rect.x = screen_dest_rect.x + (last_y - src_rect.y) * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.y = screen_dest_rect.y; + +- sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.h = screen_dest_rect.h; ++ sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } + //printf("sdr.x=%f, sdr.w=%f\n", (double)screen_dest_rect.x + (double)(last_y - src_rect.y) * screen_dest_rect.w / src_rect.h, (double)sub_src_rect.h * screen_dest_rect.w / src_rect.h); + } + else if(rotated == MDFN_ROTATE270) + { +- sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.y = screen_dest_rect.y; ++ if (use_native_resolution || use_super_resolution || use_switchres) { ++ sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * sr_x_scale; ++ sub_dest_rect.y = screen_dest_rect.y; ++ ++ sub_dest_rect.w = sub_src_rect.h * sr_x_scale; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } ++ else { ++ sub_dest_rect.x = screen_dest_rect.x + (src_rect.h - (y - src_rect.y)) * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.y = screen_dest_rect.y; + +- sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; +- sub_dest_rect.h = screen_dest_rect.h; ++ sub_dest_rect.w = sub_src_rect.h * screen_dest_rect.w / src_rect.h; ++ sub_dest_rect.h = screen_dest_rect.h; ++ } + } + else + { +- sub_dest_rect.x = screen_dest_rect.x; +- sub_dest_rect.w = screen_dest_rect.w; +- sub_dest_rect.y = screen_dest_rect.y + (last_y - src_rect.y) * screen_dest_rect.h / src_rect.h; +- sub_dest_rect.h = sub_src_rect.h * screen_dest_rect.h / src_rect.h; ++ if (use_native_resolution || use_super_resolution || use_switchres) ++ { ++ // SLK - (prevent) resizing and centering ++ //printf(" src_rect: %dx%d - X:%d, cmdY:%d rect.x %d rect.w %d \n",src_rect.w,src_rect.h,src_rect.x,src_rect.y,screen_dest_rect.x,screen_dest_rect.w); ++ ++ sub_dest_rect.x = screen_dest_rect.x; ++ sub_dest_rect.w = screen_dest_rect.w; ++ sub_dest_rect.y = screen_dest_rect.y + ((last_y - src_rect.y) * sr_y_scale); ++ sub_dest_rect.h = sub_src_rect.h * sr_y_scale; ++ ++ //printf("sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ if (sub_src_rect.w > (sub_dest_rect.w / sr_x_scale)) // horizontal crop to fit screen ++ { ++ //psakhis horrible hack centering psx ++ //printf("Horizontal centering ON sub_src_rect.x = %d, (sub_src_rect.w vs sub_dest_rect.w / sr_x_scale):%d vs %d\n",sub_src_rect.x,sub_src_rect.w, (sub_dest_rect.w / sr_x_scale)); ++ //if (psx_native_resolution_bars && sub_src_rect.w > sub_dest_rect.w && sr_x_scale == 1) { ++ // sub_src_rect.x = 32 + ((sub_src_rect.w - sub_dest_rect.w) / 2); ++ // sub_src_rect.w = sub_dest_rect.w / sr_x_scale; ++ //} ++ //psakhis ++ //else { ++ //SLK ++ // sub_src_rect.x = (sub_src_rect.w - (sub_dest_rect.w / sr_x_scale)) / 2; ++ //psakhis correct centering ++ sub_src_rect.x = sub_src_rect.x + ((sub_src_rect.w - (sub_dest_rect.w / sr_x_scale)) / 2); ++ sub_src_rect.w = sub_dest_rect.w / sr_x_scale; ++ //} ++ } ++ ++ // OLD 1.24.1 stretch ok ++ /* if (sub_src_rect.w >= resolution_to_change_w) // horizontal crop to fit screen ++ { ++ sub_src_rect.x = sub_src_rect.x + ((sub_src_rect.w - resolution_to_change_w) / 2); ++ sub_src_rect.w = resolution_to_change_w; ++ }*/ ++ if (native_resolution_vcenter == true) // default vertical centering ++ { ++ //printf(" Vertical centering ON - src_rect.h:%d sub_dest_rect.y:%d screen_dest_rect.h:%d sr_y_scale:%d \n",src_rect.h,sub_dest_rect.y,screen_dest_rect.h,sr_y_scale); ++ sub_dest_rect.y = sub_dest_rect.y + ((screen_dest_rect.h - (src_rect.h * sr_y_scale)) / 2); ++ } ++ else // fill screen (psx - half black screen fix) ++ { ++ //printf(" Vertical centering OFF (psx)\n"); ++ sub_dest_rect.h = sub_src_rect.h * (screen_dest_rect.h) / src_rect.h; ++ // sub_dest_rect.h = (sub_src_rect.h + sub_src_rect.y) * sr_y_scale; ++ } ++ ++ //printf(" Output - SLK sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ //printf(" Output - SLK sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - SLK sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ ++ } ++ else ++ { ++ //printf(" src_rect: %dx%d - X:%d, cmdY:%d rect.x %d\n",src_rect.w,src_rect.h,src_rect.x,src_rect.y,screen_dest_rect.x); ++ sub_dest_rect.x = screen_dest_rect.x; ++ sub_dest_rect.w = screen_dest_rect.w; ++ sub_dest_rect.y = screen_dest_rect.y + (last_y - src_rect.y) * screen_dest_rect.h / src_rect.h; ++ sub_dest_rect.h = sub_src_rect.h * screen_dest_rect.h / src_rect.h; ++ ++ //printf(" Output - PSAKHIS sub_src_rect: %dx%d %d,%d\n",sub_src_rect.w,sub_src_rect.h,sub_src_rect.x,sub_src_rect.y); ++ //printf(" Output - PSAKHIS sub_dest_rect: %dx%d %d,%d\n",sub_dest_rect.w,sub_dest_rect.h,sub_dest_rect.x,sub_dest_rect.y); ++ //printf(" Output - PSAKHIS sub_screen_rect: %dx%d %d,%d\n",screen_dest_rect.w,screen_dest_rect.h,screen_dest_rect.x,screen_dest_rect.y); ++ } + } + + if(!sub_dest_rect.h) // May occur with small yscale values in certain cases, so prevent triggering an assert() +diff --git a/src/drivers/video.h b/src/drivers/video.h +index 8dc2b89..857445b 100644 +--- a/src/drivers/video.h ++++ b/src/drivers/video.h +@@ -38,6 +38,10 @@ void Video_Init(void) MDFN_COLD; + + void Video_Sync(MDFNGI* gi); + ++// SLK ++int Video_ChangeResolution(MDFNGI* gi, int w, int h, double vfreq); //false - no refresh needed ++void Video_BlitRefresh(); //psakhis ++ + void Video_Exposed(void); + + void Video_Kill(void) MDFN_COLD; +diff --git a/src/mednafen.cpp b/src/mednafen.cpp +index 08e1eda..71bdf31 100644 +--- a/src/mednafen.cpp ++++ b/src/mednafen.cpp +@@ -54,6 +54,19 @@ + #include "video/tblur.h" + #include "qtrecord.h" + ++// SLK ++bool use_native_resolution = false; ++bool use_super_resolution = false; ++bool use_switchres = false; ++bool resolution_to_change; ++double resolution_to_change_vfreq; ++int resolution_to_change_w; ++int resolution_to_change_h; ++int current_game_resolution_w; ++int current_game_resolution_h; ++int current_game_rotated = 0; ++bool native_resolution_vcenter = true; ++ + namespace Mednafen + { + +@@ -655,6 +668,8 @@ static const std::vector KnownCDExtensions = + { + // M3U must be highest. + { ".m3u", -40, "M3U" }, ++ //psakhis ++ { ".chd", -45, "CHD" }, + { ".ccd", -50, "CloneCD" }, + { ".cue", -60, "CUE" }, + { ".toc", -70, "cdrdao TOC" }, +diff --git a/src/mednafen.h b/src/mednafen.h +index 9ce3a8e..ec40858 100644 +--- a/src/mednafen.h ++++ b/src/mednafen.h +@@ -21,6 +21,31 @@ + #include "settings-common.h" + #include "NativeVFS.h" + ++// SLK ++ ++// option activation flags - set by Mednafen Video setting processing ++extern bool use_native_resolution; ++extern bool use_super_resolution; ++extern bool use_switchres; ++ ++// scaling & positioning option - set by module, use in video.cpp ++extern bool native_resolution_vcenter; ++ ++// Change resolution request flag - set by module ++extern bool resolution_to_change; ++ ++// Requested video mode information - set in module ++extern int resolution_to_change_w; ++extern int resolution_to_change_h; ++extern double resolution_to_change_vfreq; ++ ++// current video mode information - set in drivers\video.cpp ++extern int current_game_resolution_w; ++extern int current_game_resolution_h; ++extern int current_game_rotated; ++ ++// SLK end ++ + namespace Mednafen + { + +diff --git a/src/state.cpp b/src/state.cpp +index 49a3d59..4ec6128 100644 +--- a/src/state.cpp ++++ b/src/state.cpp +@@ -499,6 +499,14 @@ void MDFNSS_SaveSM(Stream *st, bool data_only, const MDFN_Surface *surface, cons + neowidth = MDFNGameInfo->nominal_width; + neoheight = MDFNGameInfo->nominal_height; + ++ // SLK - Approximation to prevent SaveState snapshot corruption ++ //if(use_super_resolution) psakhis ++ { ++ neowidth = resolution_to_change_w; ++ neoheight = DisplayRect->h; ++ } ++ // SLK - end ++ + if(LineWidths[0] != ~0) + { + int32 first_w = LineWidths[DisplayRect->y]; +@@ -619,6 +627,14 @@ void MDFNSS_LoadSM(Stream *st, bool data_only, const int fuzz) + svbe = MDFN_de32lsb(header + 20) & 0x80000000; + width = MDFN_de32lsb(header + 24); + height = MDFN_de32lsb(header + 28); ++ ++ //psakhis: restore resolution onLoadState ++ resolution_to_change_w = width; ++ resolution_to_change_h = height; ++ resolution_to_change = true; ++ printf("STATE - MDFNSS_LoadSM - Restored resolution %dx%d\n",width,height); ++ //psakhis end ++ + preview_len = width * height * 3; + + if((int)stateversion < 0x900) // Ensuring that (int)stateversion is > 0 is the most important part. +diff --git a/src/switchres/switchres_defines.h b/src/switchres/switchres_defines.h +index e69de29..42470ed 100644 +--- a/src/switchres/switchres_defines.h ++++ b/src/switchres/switchres_defines.h +@@ -0,0 +1,42 @@ ++#define SR_DEFINES ++ ++#define SR_OPT_MONITOR "monitor" ++#define SR_OPT_CRT_RANGE0 "crt_range0" ++#define SR_OPT_CRT_RANGE1 "crt_range1" ++#define SR_OPT_CRT_RANGE2 "crt_range2" ++#define SR_OPT_CRT_RANGE3 "crt_range3" ++#define SR_OPT_CRT_RANGE4 "crt_range4" ++#define SR_OPT_CRT_RANGE5 "crt_range5" ++#define SR_OPT_CRT_RANGE6 "crt_range6" ++#define SR_OPT_CRT_RANGE7 "crt_range7" ++#define SR_OPT_CRT_RANGE8 "crt_range8" ++#define SR_OPT_CRT_RANGE9 "crt_range9" ++#define SR_OPT_LCD_RANGE "lcd_range" ++#define SR_OPT_MODELINE "modeline" ++#define SR_OPT_USER_MODE "user_mode" ++#define SR_OPT_DISPLAY "display" ++#define SR_OPT_API "api" ++#define SR_OPT_LOCK_UNSUPPORTED_MODES "lock_unsupported_modes" ++#define SR_OPT_LOCK_SYSTEM_MODES "lock_system_modes" ++#define SR_OPT_REFRESH_DONT_CARE "refresh_dont_care" ++#define SR_OPT_KEEP_CHANGES "keep_changes" ++#define SR_OPT_MODELINE_GENERATION "modeline_generation" ++#define SR_OPT_INTERLACE "interlace" ++#define SR_OPT_DOUBLESCAN "doublescan" ++#define SR_OPT_DOTCLOCK_MIN "dotclock_min" ++#define SR_OPT_SYNC_REFRESH_TOLERANCE "sync_refresh_tolerance" ++#define SR_OPT_SUPER_WIDTH "super_width" ++#define SR_OPT_ASPECT "aspect" ++#define SR_OPT_V_SHIFT_CORRECT "v_shift_correct" ++#define SR_OPT_H_SIZE "h_size" ++#define SR_OPT_H_SHIFT "h_shift" ++#define SR_OPT_V_SHIFT "v_shift" ++#define SR_OPT_PIXEL_PRECISION "pixel_precision" ++#define SR_OPT_INTERLACE_FORCE_EVEN "interlace_force_even" ++#define SR_OPT_SCALE_PROPORTIONAL "scale_proportional" ++#define SR_OPT_SCREEN_COMPOSITING "screen_compositing" ++#define SR_OPT_SCREEN_REORDERING "screen_reordering" ++#define SR_OPT_ALLOW_HARDWARE_REFRESH "allow_hardware_refresh" ++#define SR_OPT_CUSTOM_TIMING "custom_timing" ++#define SR_OPT_VERBOSE "verbose" ++#define SR_OPT_VERBOSITY "verbosity" +\ No newline at end of file +diff --git a/src/switchres/switchres_wrapper.h b/src/switchres/switchres_wrapper.h +index e69de29..fe3bc40 100644 +--- a/src/switchres/switchres_wrapper.h ++++ b/src/switchres/switchres_wrapper.h +@@ -0,0 +1,190 @@ ++/************************************************************** ++ ++ switchres_wrapper.h - Switchres C wrapper API header file ++ ++ --------------------------------------------------------- ++ ++ Switchres Modeline generation engine for emulation ++ ++ License GPL-2.0+ ++ Copyright 2010-2021 Chris Kennedy, Antonio Giner, ++ Alexandre Wodarczyk, Gil Delescluse ++ ++ **************************************************************/ ++ ++#include ++#ifndef SR_DEFINES ++#include "switchres_defines.h" ++#endif ++ ++#ifdef __cplusplus ++extern "C" { ++#endif ++ ++#ifdef __linux__ ++#include ++#define LIBTYPE void* ++#define OPENLIB(libname) dlopen((libname), RTLD_LAZY) ++#define LIBFUNC(libh, fn) dlsym((libh), (fn)) ++#define LIBERROR dlerror ++#define CLOSELIB(libh) dlclose((libh)) ++ ++#elif defined _WIN32 ++#include ++#define LIBTYPE HINSTANCE ++#define OPENLIB(libname) LoadLibrary(TEXT((libname))) ++#define LIBFUNC(lib, fn) GetProcAddress((lib), (fn)) ++ ++#define CLOSELIB(libp) FreeLibrary((libp)) ++#endif ++ ++#ifdef _WIN32 ++/* ++ * This is a trick to avoid exporting some functions thus having the binary ++ * flagged as a virus. If switchres_wrapper.cpp is included in the compilation ++ * LIBERROR() is just declared and not compiled. If switchres_wrapper.cpp is ++ * not compiled, LIBERROR is defined here ++ */ ++#ifndef SR_WIN32_STATIC ++char* LIBERROR() ++{ ++ DWORD errorMessageID = GetLastError(); ++ if(errorMessageID == 0) ++ return NULL; ++ ++ LPSTR messageBuffer; ++ FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, ++ NULL, errorMessageID, MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPSTR)&messageBuffer, 0, NULL); ++ ++ SetLastError(0); ++ ++ static char error_msg[256] = {0}; ++ strncpy(error_msg, messageBuffer, sizeof(error_msg)-1); ++ LocalFree(messageBuffer); ++ return error_msg; ++} ++#endif /* SR_WIN32_STATIC */ ++ #ifndef SR_WIN32_STATIC ++ #define MODULE_API __declspec(dllexport) ++ #else ++ #define MODULE_API ++ #endif ++#else ++ #define MODULE_API ++#endif /* _WIN32 */ ++ ++#ifdef __linux__ ++#define LIBSWR "libswitchres.so" ++#elif _WIN32 ++#define LIBSWR "libswitchres.dll" ++#endif ++ ++/* Mode flags */ ++#define SR_MODE_INTERLACED 1<<0 ++#define SR_MODE_ROTATED 1<<1 ++#define SR_MODE_DONT_FLUSH 1<<16 ++ ++/* That's all the exposed data from Switchres calculation */ ++typedef struct MODULE_API ++{ ++ int width; ++ int height; ++ int refresh; ++ // ++ double vfreq; ++ double hfreq; ++ // ++ uint64_t pclock; ++ int hbegin; ++ int hend; ++ int htotal; ++ int vbegin; ++ int vend; ++ int vtotal; ++ int interlace; ++ int doublescan; ++ int hsync; ++ int vsync; ++ // ++ int is_refresh_off; ++ int is_stretched; ++ double x_scale; ++ double y_scale; ++ double v_scale; ++ int id; ++} sr_mode; ++ ++/* Used to retrieve SR settings and state */ ++typedef struct MODULE_API ++{ ++ char monitor[32]; ++ int modeline_generation; ++ int desktop_is_rotated; ++ int interlace; ++ int doublescan; ++ double dotclock_min; ++ double refresh_tolerance; ++ int super_width; ++ double monitor_aspect; ++ double h_size; ++ double h_shift; ++ double v_shift; ++ int pixel_precision; ++ int selected_mode; ++ int current_mode; ++} sr_state; ++ ++/* Declaration of the wrapper functions */ ++MODULE_API void sr_init(); ++MODULE_API char* sr_get_version(); ++MODULE_API void sr_load_ini(char* config); ++MODULE_API void sr_deinit(); ++MODULE_API int sr_init_disp(const char*, void*); ++MODULE_API void sr_set_disp(int); ++MODULE_API int sr_get_mode(int, sr_mode*); ++MODULE_API int sr_add_mode(int, int, double, int, sr_mode*); ++MODULE_API int sr_switch_to_mode(int, int, double, int, sr_mode*); ++MODULE_API int sr_flush(); ++MODULE_API int sr_set_mode(int); ++MODULE_API void sr_set_monitor(const char*); ++MODULE_API void sr_set_user_mode(int, int, int); ++MODULE_API void sr_set_option(const char* key, const char* value); ++MODULE_API void sr_get_state(sr_state *state); ++ ++/* Logging related functions */ ++MODULE_API void sr_set_log_level(int); ++MODULE_API void sr_set_log_callback_error(void *); ++MODULE_API void sr_set_log_callback_info(void *); ++MODULE_API void sr_set_log_callback_debug(void *); ++ ++/* Others */ ++MODULE_API void sr_set_sdl_window(void *); ++ ++/* Inspired by https://stackoverflow.com/a/1067684 */ ++typedef struct MODULE_API ++{ ++ void (*init)(void); ++ void (*load_ini)(char*); ++ char* (*sr_get_version)(void); ++ void (*deinit)(void); ++ int (*init_disp)(const char*, void*); ++ void (*set_disp)(int); ++ int (*get_mode)(int, sr_mode*); ++ int (*add_mode)(int, int, double, int, sr_mode*); ++ int (*switch_to_mode)(int, int, double, int, sr_mode*); ++ int (*flush)(void); ++ int (*set_mode)(int); ++ void (*set_monitor)(const char*); ++ void (*set_user_mode)(int, int, int); ++ void (*set_option)(const char*, const char*); ++ void (*get_state)(sr_state*); ++ void (*set_log_level) (int); ++ void (*set_log_callback_error)(void *); ++ void (*set_log_callback_info)(void *); ++ void (*set_log_callback_debug)(void *); ++} srAPI; ++ ++ ++#ifdef __cplusplus ++} ++#endif +diff --git a/src/ss/vdp2_render.cpp b/src/ss/vdp2_render.cpp +index 2be23f8..ae2899c 100644 +--- a/src/ss/vdp2_render.cpp ++++ b/src/ss/vdp2_render.cpp +@@ -145,6 +145,17 @@ static uint8 RBG0CCRatio; + static uint8 LineColorCCRatio; + static uint8 BackCCRatio; + ++//SLK ++static uint8 prev_InterlaceMode = 0; ++static uint8 prev_HRes = 0; ++static uint8 prev_VRes = 0; ++static bool prev_BorderMode = 0; ++// SLK end ++ ++//PSAKHIS ++static bool prob_false_change = false; //reduce false positive changes ++// PSAKHIS end ++ + // + static struct + { +@@ -554,6 +565,52 @@ static INLINE void RegsWrite(uint32 A, uint16 V) + InterlaceMode = (V >> 6) & 0x3; + VRes = (V >> 4) & 0x3; + HRes = (V >> 0) & 0x7; ++ // SLK ++ //PSAKHIS ++ if(InterlaceMode == prev_InterlaceMode && (HRes < prev_HRes && !prob_false_change)) ++ { ++ printf("VDP2 Render - Television mode changed?: %d\n",V); ++ prob_false_change = true; ++ } ++ else ++ { ++ prob_false_change = false; ++ } ++ //END PSAKHIS ++ //if(InterlaceMode != prev_InterlaceMode || HRes != prev_HRes) ++ if(InterlaceMode != prev_InterlaceMode || (HRes != prev_HRes && !prob_false_change)) //psakhis: only change if a valid hres for more than 1 ++ { ++ printf("VDP2 Render - Television mode changed: %d\n",V); ++ printf(" BorderMode: %d\n",BorderMode); ++ printf(" PAL: %d\n",PAL); ++ printf(" InterlaceMode: %d\n",InterlaceMode); ++ printf(" VRes: %d\n",VRes); ++ printf(" HRes: %d\n",HRes); ++ prev_BorderMode = BorderMode; ++ prev_InterlaceMode = InterlaceMode; ++ prev_VRes = VRes; ++ prev_HRes = HRes; ++ prob_false_change = false; //Psakhis reduce false positives ++ // HRES ++ switch(HRes){ ++ case 0: ++ resolution_to_change_w = 320; ++ break; ++ case 1: ++ resolution_to_change_w = 352; ++ break; ++ case 2: ++ resolution_to_change_w = 640; ++ break; ++ case 3: ++ resolution_to_change_w = 704; ++ break; ++ } ++ if(InterlaceMode >= 2){resolution_to_change_h = PAL ? 576 : 480;} else {resolution_to_change_h = PAL ? 288 : 240;} ++ printf("SS - VDP2 Render - TV mode set to %dx%d",resolution_to_change_w,resolution_to_change_h); ++ resolution_to_change = true; // Flag for video resolution change by VIDEO.cpp/MAIN.cpp ++ } ++ // SLK - end + break; + + case 0x02: +@@ -1013,7 +1070,7 @@ static void Reset(bool powering_up) + HRes = 0; + VRes = 0; + BorderMode = false; +- InterlaceMode = 0; ++ InterlaceMode = 0; + // + memset(VCPRegs, 0, sizeof(VCPRegs)); + // +@@ -2556,7 +2613,7 @@ static void T_MixIt(uint32* target, const unsigned vdp2_line, const unsigned w, + + if(TA_Special == MIXIT_SPECIAL_HIRES_CRAM12 && !(pix2 & (1U << PIX_ISRGB_SHIFT))) + sec_rgb = fore_rgb; +- ++ + if(TA_CCMD) // Ignore ratio, add as-is. + { + new_rgb = std::min(0x0000FF, (fore_rgb & 0x0000FF) + (sec_rgb & 0x0000FF)); +@@ -3145,7 +3202,7 @@ static NO_INLINE void DrawLine(const uint16 out_line, const uint16 vdp2_line, co + if(CRAM_Mode) + special = MIXIT_SPECIAL_HIRES_CRAM12; + } +- ++ + MixIt[rbgdualen][special][CCRTMD][CCMD](target + tvxo, vdp2_line, w, back_rgb24, blursrc); + ReorderRGB(target + tvxo, w, espec->surface->format.Rshift, espec->surface->format.Gshift, espec->surface->format.Bshift); + } +@@ -3357,12 +3414,22 @@ void VDP2REND_SetGetVideoParams(MDFNGI* gi, const bool caspect, const int sls, c + { + gi->nominal_width = (ShowHOverscan ? 365 : 354); + gi->fb_height = 576; ++ resolution_to_change_h = 288; // SLK - start resolution ++ resolution_to_change_vfreq = 50; + } + else + { + gi->nominal_width = (ShowHOverscan ? 302 : 292); + gi->fb_height = 480; ++ resolution_to_change_h = 240; // SLK - init crt mode ++ resolution_to_change_vfreq = 59.764793; // SLK TODO: find accurate V.Freq + } ++ ++ // SLK ++ resolution_to_change_w = 320; ++ resolution_to_change = true; // SLK - init crt mode ++ // SLK - end ++ + gi->nominal_height = LineVisLast + 1 - LineVisFirst; + + gi->lcm_width = (ShowHOverscan? 10560 : 10240); +--- a/src/drivers/video-state.cpp 2024-12-25 19:10:43.492715743 +0100 ++++ b/src/drivers/video-state.cpp 2024-04-28 18:56:26.000000000 +0200 +@@ -180,16 +180,48 @@ + tdrect.w = TextRect.w * meow; + tdrect.h = TextRect.h * meow; + tdrect.x = (screen_w - tdrect.w) / 2; +- tdrect.y = screen_h - tdrect.h; ++ // SLK - Custom savestate selection OSD ++ if(use_native_resolution || use_super_resolution || use_switchres) ++ { ++ switch(screen_h){ ++ case 240:tdrect.y = screen_h - tdrect.h - 18; ++ break; ++ case 288:tdrect.y = screen_h - tdrect.h - 32; ++ break; ++ case 480:tdrect.y = screen_h - tdrect.h - 32; ++ break; ++ case 576:tdrect.y = screen_h - tdrect.h - 64; ++ break; ++ default:tdrect.y = screen_h - tdrect.h; ++ } ++ if(use_super_resolution) // TODO SR ++ { ++ tdrect.w = tdrect.w * 8; ++ tdrect.x = (screen_w - tdrect.w) / 2; ++ } ++ BlitOSD(TextSurface, &TextRect, &tdrect); ++ ++ drect.w = screen_w * 0.5 + 3; // TODO: Why 3 ??? ++ drect.h = screen_h * 0.5 + 3; ++ drect.x = (screen_w - drect.w) / 2; ++ drect.y = tdrect.y - drect.h; // SLK + +- BlitOSD(TextSurface, &TextRect, &tdrect); +- +- drect.w = PreviewRect.w * meow; +- drect.h = PreviewRect.h * meow; +- drect.x = (screen_w - drect.w) / 2; +- drect.y = screen_h - drect.h - tdrect.h - 4; +- +- BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ } ++ else // native OSD display ++ { ++ tdrect.y = screen_h - tdrect.h; ++ ++ BlitOSD(TextSurface, &TextRect, &tdrect); ++ ++ drect.w = PreviewRect.w * meow; ++ drect.h = PreviewRect.h * meow; ++ drect.x = (screen_w - drect.w) / 2; ++ drect.y = screen_h - drect.h - tdrect.h - 4; ++ ++ BlitOSD(PreviewSurface, &PreviewRect, &drect); ++ } ++ // SLK - end + } + } + diff --git a/package/mednafen/0002-mednafen-makefile.patch b/package/mednafen/0002-mednafen-makefile.patch new file mode 100644 index 0000000000000000000000000000000000000000..3a9b1833c2177e289e4cd4b1e1baea3e6c6b7289 --- /dev/null +++ b/package/mednafen/0002-mednafen-makefile.patch @@ -0,0 +1,385 @@ +diff --git a/aclocal.m4 b/aclocal.m4 +index effc30f..e264ae4 100644 +--- a/aclocal.m4 ++++ b/aclocal.m4 +@@ -1,6 +1,6 @@ +-# generated automatically by aclocal 1.16.1 -*- Autoconf -*- ++# generated automatically by aclocal 1.16.5 -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -14,15 +14,15 @@ + m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +-[m4_warning([this file was generated for autoconf 2.69. ++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.72],, ++[m4_warning([this file was generated for autoconf 2.72. + You have another version of autoconf. It may work, but is not guaranteed to. + If you have problems, you may need to regenerate the build system entirely. + To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +-dnl pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +-dnl serial 11 (pkg-config-0.29) +-dnl ++# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- ++# serial 11 (pkg-config-0.29.1) ++ + dnl Copyright © 2004 Scott James Remnant . + dnl Copyright © 2012-2015 Dan Nicholson + dnl +@@ -63,7 +63,7 @@ dnl + dnl See the "Since" comment for each macro you use to see what version + dnl of the macros you require. + m4_defun([PKG_PREREQ], +-[m4_define([PKG_MACROS_VERSION], [0.29]) ++[m4_define([PKG_MACROS_VERSION], [0.29.1]) + m4_if(m4_version_compare(PKG_MACROS_VERSION, [$1]), -1, + [m4_fatal([pkg.m4 version $1 or higher is required but ]PKG_MACROS_VERSION[ found])]) + ])dnl PKG_PREREQ +@@ -296,7 +296,75 @@ AS_VAR_COPY([$1], [pkg_cv_][$1]) + AS_VAR_IF([$1], [""], [$5], [$4])dnl + ])dnl PKG_CHECK_VAR + +-# Copyright (C) 2002-2018 Free Software Foundation, Inc. ++dnl PKG_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [ACTION-IF-FOUND],[ACTION-IF-NOT-FOUND], ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ------------------------------------------ ++dnl ++dnl Prepare a "--with-" configure option using the lowercase ++dnl [VARIABLE-PREFIX] name, merging the behaviour of AC_ARG_WITH and ++dnl PKG_CHECK_MODULES in a single macro. ++AC_DEFUN([PKG_WITH_MODULES], ++[ ++m4_pushdef([with_arg], m4_tolower([$1])) ++ ++m4_pushdef([description], ++ [m4_default([$5], [build with ]with_arg[ support])]) ++ ++m4_pushdef([def_arg], [m4_default([$6], [auto])]) ++m4_pushdef([def_action_if_found], [AS_TR_SH([with_]with_arg)=yes]) ++m4_pushdef([def_action_if_not_found], [AS_TR_SH([with_]with_arg)=no]) ++ ++m4_case(def_arg, ++ [yes],[m4_pushdef([with_without], [--without-]with_arg)], ++ [m4_pushdef([with_without],[--with-]with_arg)]) ++ ++AC_ARG_WITH(with_arg, ++ AS_HELP_STRING(with_without, description[ @<:@default=]def_arg[@:>@]),, ++ [AS_TR_SH([with_]with_arg)=def_arg]) ++ ++AS_CASE([$AS_TR_SH([with_]with_arg)], ++ [yes],[PKG_CHECK_MODULES([$1],[$2],$3,$4)], ++ [auto],[PKG_CHECK_MODULES([$1],[$2], ++ [m4_n([def_action_if_found]) $3], ++ [m4_n([def_action_if_not_found]) $4])]) ++ ++m4_popdef([with_arg]) ++m4_popdef([description]) ++m4_popdef([def_arg]) ++ ++])dnl PKG_WITH_MODULES ++ ++dnl PKG_HAVE_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ----------------------------------------------- ++dnl ++dnl Convenience macro to trigger AM_CONDITIONAL after PKG_WITH_MODULES ++dnl check._[VARIABLE-PREFIX] is exported as make variable. ++AC_DEFUN([PKG_HAVE_WITH_MODULES], ++[ ++PKG_WITH_MODULES([$1],[$2],,,[$3],[$4]) ++ ++AM_CONDITIONAL([HAVE_][$1], ++ [test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"]) ++])dnl PKG_HAVE_WITH_MODULES ++ ++dnl PKG_HAVE_DEFINE_WITH_MODULES(VARIABLE-PREFIX, MODULES, ++dnl [DESCRIPTION], [DEFAULT]) ++dnl ------------------------------------------------------ ++dnl ++dnl Convenience macro to run AM_CONDITIONAL and AC_DEFINE after ++dnl PKG_WITH_MODULES check. HAVE_[VARIABLE-PREFIX] is exported as make ++dnl and preprocessor variable. ++AC_DEFUN([PKG_HAVE_DEFINE_WITH_MODULES], ++[ ++PKG_HAVE_WITH_MODULES([$1],[$2],[$3],[$4]) ++ ++AS_IF([test "$AS_TR_SH([with_]m4_tolower([$1]))" = "yes"], ++ [AC_DEFINE([HAVE_][$1], 1, [Enable ]m4_tolower([$1])[ support])]) ++])dnl PKG_HAVE_DEFINE_WITH_MODULES ++ ++# Copyright (C) 2002-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -311,7 +379,7 @@ AC_DEFUN([AM_AUTOMAKE_VERSION], + [am__api_version='1.16' + dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to + dnl require some minimum version. Point them to the right macro. +-m4_if([$1], [1.16.1], [], ++m4_if([$1], [1.16.5], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl + ]) + +@@ -327,14 +395,14 @@ m4_define([_AM_AUTOCONF_VERSION], []) + # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. + # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. + AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +-[AM_AUTOMAKE_VERSION([1.16.1])dnl ++[AM_AUTOMAKE_VERSION([1.16.5])dnl + m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl + _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + + # Figure out how to run the assembler. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -354,7 +422,7 @@ _AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl + + # AM_AUX_DIR_EXPAND -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -406,7 +474,7 @@ am_aux_dir=`cd "$ac_aux_dir" && pwd` + + # AM_CONDITIONAL -*- Autoconf -*- + +-# Copyright (C) 1997-2018 Free Software Foundation, Inc. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -437,7 +505,7 @@ AC_CONFIG_COMMANDS_PRE( + Usually this means the macro was only invoked conditionally.]]) + fi])]) + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -628,7 +696,7 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl + + # Generate code to set up dependency tracking. -*- Autoconf -*- + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -667,7 +735,9 @@ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], + done + if test $am_rc -ne 0; then + AC_MSG_FAILURE([Something went wrong bootstrapping makefile fragments +- for automatic dependency tracking. Try re-running configure with the ++ for automatic dependency tracking. If GNU make was not used, consider ++ re-running the configure script with MAKE="gmake" (or whatever is ++ necessary). You can also try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking).]) + fi +@@ -694,7 +764,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], + + # Do all the work for Automake. -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -722,6 +792,10 @@ m4_defn([AC_PROG_CC]) + # release and drop the old call support. + AC_DEFUN([AM_INIT_AUTOMAKE], + [AC_PREREQ([2.65])dnl ++m4_ifdef([_$0_ALREADY_INIT], ++ [m4_fatal([$0 expanded multiple times ++]m4_defn([_$0_ALREADY_INIT]))], ++ [m4_define([_$0_ALREADY_INIT], m4_expansion_stack)])dnl + dnl Autoconf wants to disallow AM_ names. We explicitly allow + dnl the ones we care about. + m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +@@ -758,7 +832,7 @@ m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + [_AM_SET_OPTIONS([$1])dnl + dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. + m4_if( +- m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), ++ m4_ifset([AC_PACKAGE_NAME], [ok]):m4_ifset([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +@@ -810,6 +884,20 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl + ]) ++# Variables for tags utilities; see am/tags.am ++if test -z "$CTAGS"; then ++ CTAGS=ctags ++fi ++AC_SUBST([CTAGS]) ++if test -z "$ETAGS"; then ++ ETAGS=etags ++fi ++AC_SUBST([ETAGS]) ++if test -z "$CSCOPE"; then ++ CSCOPE=cscope ++fi ++AC_SUBST([CSCOPE]) ++ + AC_REQUIRE([AM_SILENT_RULES])dnl + dnl The testsuite driver may need to know about EXEEXT, so add the + dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +@@ -891,7 +979,7 @@ for _am_header in $config_headers :; do + done + echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -912,7 +1000,7 @@ if test x"${install_sh+set}" != xset; then + fi + AC_SUBST([install_sh])]) + +-# Copyright (C) 2003-2018 Free Software Foundation, Inc. ++# Copyright (C) 2003-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -933,7 +1021,7 @@ AC_SUBST([am__leading_dot])]) + + # Check to see how 'make' treats includes. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -976,7 +1064,7 @@ AC_SUBST([am__quote])]) + + # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +-# Copyright (C) 1997-2018 Free Software Foundation, Inc. ++# Copyright (C) 1997-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -997,12 +1085,7 @@ AC_DEFUN([AM_MISSING_HAS_RUN], + [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl + AC_REQUIRE_AUX_FILE([missing])dnl + if test x"${MISSING+set}" != xset; then +- case $am_aux_dir in +- *\ * | *\ *) +- MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +- *) +- MISSING="\${SHELL} $am_aux_dir/missing" ;; +- esac ++ MISSING="\${SHELL} '$am_aux_dir/missing'" + fi + # Use eval to expand $SHELL + if eval "$MISSING --is-lightweight"; then +@@ -1013,7 +1096,7 @@ else + fi + ]) + +-# Copyright (C) 2003-2018 Free Software Foundation, Inc. ++# Copyright (C) 2003-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1047,7 +1130,7 @@ esac + + # Helper functions for option handling. -*- Autoconf -*- + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1076,7 +1159,7 @@ AC_DEFUN([_AM_SET_OPTIONS], + AC_DEFUN([_AM_IF_OPTION], + [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +-# Copyright (C) 1999-2018 Free Software Foundation, Inc. ++# Copyright (C) 1999-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1123,7 +1206,7 @@ AC_LANG_POP([C])]) + # For backward compatibility. + AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1142,7 +1225,7 @@ AC_DEFUN([AM_RUN_LOG], + + # Check to make sure that the build environment is sane. -*- Autoconf -*- + +-# Copyright (C) 1996-2018 Free Software Foundation, Inc. ++# Copyright (C) 1996-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1223,7 +1306,7 @@ AC_CONFIG_COMMANDS_PRE( + rm -f conftest.file + ]) + +-# Copyright (C) 2009-2018 Free Software Foundation, Inc. ++# Copyright (C) 2009-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1283,7 +1366,7 @@ AC_SUBST([AM_BACKSLASH])dnl + _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl + ]) + +-# Copyright (C) 2001-2018 Free Software Foundation, Inc. ++# Copyright (C) 2001-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1311,7 +1394,7 @@ fi + INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +-# Copyright (C) 2006-2018 Free Software Foundation, Inc. ++# Copyright (C) 2006-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +@@ -1330,7 +1413,7 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + + # Check how to create a tarball. -*- Autoconf -*- + +-# Copyright (C) 2004-2018 Free Software Foundation, Inc. ++# Copyright (C) 2004-2021 Free Software Foundation, Inc. + # + # This file is free software; the Free Software Foundation + # gives unlimited permission to copy and/or distribute it, +diff --git a/src/Makefile.am b/src/Makefile.am +index 0ccb1c8..848a18c 100644 +--- a/src/Makefile.am ++++ b/src/Makefile.am +@@ -197,5 +197,5 @@ else + include trio/Makefile.am.inc + endif + +-mednafen_LDADD += @FLAC_LIBS@ @ZLIB_LIBS@ @LIBINTL@ @LIBICONV@ ++mednafen_LDADD += @FLAC_LIBS@ @ZLIB_LIBS@ @LIBINTL@ @LIBICONV@ -lswitchres + diff --git a/package/mednafen/Config.in b/package/mednafen/Config.in new file mode 100644 index 0000000000000000000000000000000000000000..9afb0bd552ba447bcaed1660e4d19b43a655d0fc --- /dev/null +++ b/package/mednafen/Config.in @@ -0,0 +1,7 @@ +config BR2_PACKAGE_MEDNAFEN + bool "mednafen" + help + Mednafen is a portable, utilizing OpenGL and SDL, + argument(command-line)-driven multi-system emulator. + + https://mednafen.github.io/ diff --git a/package/mednafen/mednafen.mk b/package/mednafen/mednafen.mk new file mode 100644 index 0000000000000000000000000000000000000000..88616e04e4b425567cad1ea4230f0e5b9d6b2310 --- /dev/null +++ b/package/mednafen/mednafen.mk @@ -0,0 +1,40 @@ +################################################################################ +# +# MEDNAFEN +# +################################################################################ + +# Version 1.32.1 +MEDNAFEN_VERSION = 1.32.1 +MEDNAFEN_SOURCE = mednafen-$(MEDNAFEN_VERSION).tar.xz +MEDNAFEN_SITE = https://mednafen.github.io/releases/files +MEDNAFEN_LICENSE = GPL-2.0 +MEDNAFEN_LICENSE_FILES = COPYING +MEDNAFEN_DEPENDENCIES = switchres arcade-dats + +MEDNAFEN_CONF_OPTS += --disable-apple2 \ + --disable-gb \ + --disable-gba \ + --disable-lynx \ + --disable-md \ + --disable-nes \ + --disable-ngp \ + --disable-pce \ + --disable-pce-fast \ + --disable-pcfx \ + --disable-psx \ + --disable-sms \ + --disable-snes \ + --disable-snes-faust \ + --disable-ssfplay \ + --disable-vb \ + --disable-wswan \ + --disable-ssfplay + +define MEDNAFEN_BUILD_DATS + $(call InstallArcadeFiles,mednafen,stv,$(MEDNAFEN_VERSION)) +endef + +MEDNAFEN_POST_INSTALL_TARGET_HOOKS += MEDNAFEN_BUILD_DATS + +$(eval $(autotools-package)) diff --git a/package/recalbox-configgen/Config.in b/package/recalbox-configgen/Config.in index de0a8b97bf438d51d4baf8dd078b5dfff8abf8aa..52858a43e362bb106f6b7ece851ab8fee4f2b92d 100644 --- a/package/recalbox-configgen/Config.in +++ b/package/recalbox-configgen/Config.in @@ -6,6 +6,8 @@ config BR2_PACKAGE_RECALBOX_CONFIGGEN select BR2_PACKAGE_PYTHON_PYGAME2 select BR2_PACKAGE_PYTHON_PYGAME2_IMAGE select BR2_PACKAGE_PYTHON_PYGAME2_FONT + select BR2_PACKAGE_PYTHON_EVDEV + select BR2_PACKAGE_PYTHON_JINJA2 help The configuration utility for recalbox diff --git a/package/recalbox-configgen/recalbox-configgen.mk b/package/recalbox-configgen/recalbox-configgen.mk index 1278bc952bdb529cae021ecc8a2865fefd0ada9d..2bbbe301c0d74262f39456592053a2e4136652cd 100644 --- a/package/recalbox-configgen/recalbox-configgen.mk +++ b/package/recalbox-configgen/recalbox-configgen.mk @@ -9,7 +9,7 @@ RECALBOX_CONFIGGEN_SITE = $(TOPDIR)/../projects/configgen RECALBOX_CONFIGGEN_SITE_METHOD = local RECALBOX_CONFIGGEN_LICENSE = GPLv2 -RECALBOX_CONFIGGEN_DEPENDENCIES = python3 python-pyudev python-pygame2 +RECALBOX_CONFIGGEN_DEPENDENCIES = python3 python-pyudev python-pygame2 python-jinja2 python-markupsafe python-evdev RECALBOX_CONFIGGEN_SETUP_TYPE = setuptools diff --git a/package/recalbox-romfs2/systems/stv/init/roms/.keep b/package/recalbox-romfs2/systems/stv/init/roms/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/package/recalbox-romfs2/systems/stv/system.ini b/package/recalbox-romfs2/systems/stv/system.ini new file mode 100644 index 0000000000000000000000000000000000000000..f37c6d253d3004c730f7b68bd3bcdf311c097649 --- /dev/null +++ b/package/recalbox-romfs2/systems/stv/system.ini @@ -0,0 +1,82 @@ +; =========================== +; stv +; =========================== + +; all keys can be overridden for a particular board using key. +; example: +; priority = 0 +; priority.rpi4 = 3 +; Complete sections may be overridden. In such cases, all key from the global section are ignored, +; you must redefine them all +; example +; [core.0] +; [core.0.rpi4] +; Board tags are defined by BR2_PACKAGE_RECALBOX_TARGET_ + +[system] +uuid = "58194f2a-c0c7-4cc0-96f1-3eb44fef602a" +name = "stv" +fullname = "ST-V" +theme.folder = "stv" +roms.folder = "%ROOT%/stv" +screenscraper.id = 69 +doc.link.fr = "https://wiki.recalbox.com/fr/emulators/stv" +doc.link.en = "https://wiki.recalbox.com/en/emulators/stv" +doc.link.es = "https://wiki.recalbox.com/es/emulators/stv" +port = 0 +readonly = 0 +downloader = 0 +icon.unicode = $F2DC +extension.types = "*=pcb" + +[properties] +type = arcade +device.pad = mandatory +device.keyboard = no +device.mouse = no +device.lightgun = no +release.date = "1994-01" +manufacturer = "sega" +retroachievements = 1 +crt.multiresolution = 0 +crt.multiregion = 0 + +[core.0] +package = BR2_PACKAGE_LIBRETRO_KRONOS +priority = 1 +emulator = "libretro" +core = "kronos" +extensions = ".zip" +netplay = 0 +softpatching = 0 +compatibility = good +speed = good +crt.available = 0 +arcade.file = stv.lst + +[core.1] +package = BR2_PACKAGE_LIBRETRO_MAME0274 +priority = 2 +emulator = "libretro" +core = "mame0274" +extensions = ".zip" +softpatching = 0 +netplay = 1 +compatibility = high +speed = high +crt.available = 1 +arcade.file = stv.lst + +[core.2] +package = BR2_PACKAGE_MEDNAFEN +priority = 3 +emulator = "mednafen" +core = "mednafen" +extensions = ".zip" +netplay = 1 +softpatching = 0 +compatibility = good +speed = good +crt.available = 1 +arcade.file = stv.lst + diff --git a/package/recalbox-romfs2/systems/stv/upgrade/roms/.readme.placeholder b/package/recalbox-romfs2/systems/stv/upgrade/roms/.readme.placeholder new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/package/switchres/001-continue-when-device-not-supported.patch b/package/switchres/001-continue-when-device-not-supported.patch index c6898a562498ac02aa042ef7f51b183a2f407642..0ceb0c78750a078839d51e5021c17daf074f7bc2 100644 --- a/package/switchres/001-continue-when-device-not-supported.patch +++ b/package/switchres/001-continue-when-device-not-supported.patch @@ -1,23 +1,22 @@ ---- a/custom_video_drmkms.cpp 2021-08-10 15:45:36.851885989 +0200 -+++ b/custom_video_drmkms.cpp 2021-08-10 15:45:20.519710399 +0200 -@@ -356,13 +356,18 @@ - drmFreeVersion(version); +--- a/custom_video_drmkms.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/custom_video_drmkms.cpp 2024-12-25 21:02:46.088875255 +0100 +@@ -592,8 +592,10 @@ + drmFreeVersion(version); - uint64_t check_dumb = 0; -- if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0) -+ if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0){ - log_error("DRM/KMS: <%d> (init) [ERROR] ioctl DRM_CAP_DUMB_BUFFER\n", m_id); -+ continue; -+ } + uint64_t check_dumb = 0; +- if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0) ++ if (drmGetCap(m_drm_fd, DRM_CAP_DUMB_BUFFER, &check_dumb) < 0){ + log_error("DRM/KMS: <%d> (init) [ERROR] ioctl DRM_CAP_DUMB_BUFFER\n", m_id); ++ continue; ++ } -- if (!check_dumb) -+ if (!check_dumb){ - log_error("DRM/KMS: <%d> (init) [ERROR] dumb buffer not supported\n", m_id); -+ continue; -+ } + if (!check_dumb) + { +@@ -602,6 +604,7 @@ + } - p_res = drmModeGetResources(m_drm_fd); -+ log_verbose("DRM/KMS: <%d> (init) found connectors: %d\n", m_id, p_res->count_connectors); + p_res = drmModeGetResources(m_drm_fd); ++ log_verbose("DRM/KMS: <%d> (init) found connectors: %d\n", m_id, p_res->count_connectors); - for (int i = 0; i < p_res->count_connectors; i++) - { + for (int i = 0; i < p_res->count_connectors; i++) + { diff --git a/package/switchres/003-modeline-lcd.patch b/package/switchres/003-modeline-lcd.patch index 4669af47631935c625ff11b4bbc3f9139cc25df9..2ae541a0fb988e511b8f7ebe03f8f240762185c8 100644 --- a/package/switchres/003-modeline-lcd.patch +++ b/package/switchres/003-modeline-lcd.patch @@ -1,23 +1,24 @@ ---- a/modeline.cpp 2021-08-10 23:28:13.246111830 +0200 -+++ b/modeline.cpp 2021-08-10 23:28:16.174143821 +0200 -@@ -149,8 +149,8 @@ - // if there's nothing we can do, we're out of range - else - { -- t_mode->result.weight |= R_OUT_OF_RANGE; -- return -1; -+ //t_mode->result.weight |= R_OUT_OF_RANGE; -+ //return -1; - } - - // ≈≈≈ Horizontal resolution ≈≈≈ ---- a/switchres.cpp 2021-08-11 00:10:00.113154730 +0200 -+++ b/switchres.cpp 2021-08-11 00:09:57.705129262 +0200 +--- a/modeline.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/modeline.cpp 2024-12-30 21:02:58.624760861 +0100 +@@ -153,8 +153,8 @@ + // if there's nothing we can do, we're out of range + else + { +- t_mode->result.weight |= R_OUT_OF_RANGE; +- return -1; ++ //t_mode->result.weight |= R_OUT_OF_RANGE; ++ //return -1; + } + + // ≈≈≈ Horizontal resolution ≈≈≈ +--- a/switchres.cpp 2024-05-15 20:01:07.000000000 +0200 ++++ b/switchres.cpp 2024-12-30 21:04:04.086071211 +0100 @@ -92,7 +92,7 @@ - // Set display manager default options - set_screen("auto"); - set_modeline_generation(true); -- set_lock_unsupported_modes(true); -+ set_lock_unsupported_modes(false); - set_lock_system_modes(true); - set_refresh_dont_care(false); + for (int i = 0; i < MAX_RANGES; i++) display()->set_crt_range(i, "auto"); + display()->set_screen("auto"); + display()->set_modeline_generation(true); +- display()->set_lock_unsupported_modes(true); ++ display()->set_lock_unsupported_modes(false); + display()->set_lock_system_modes(true); + display()->set_refresh_dont_care(false); + diff --git a/package/switchres/switchres.mk b/package/switchres/switchres.mk index e6da5a8629fe5a18d7b02b2a6c9a73065e992809..2f632fe597d39beb2042477988fb828cd42b6ee9 100644 --- a/package/switchres/switchres.mk +++ b/package/switchres/switchres.mk @@ -4,29 +4,39 @@ # ################################################################################ -SWITCHRES_VERSION = a8af8e8f7f54d24414b4a8595a84c0f0f23e14a1 -SWITCHRES_SITE = $(call github,antonioginer,switchres,$(SWITCHRES_VERSION)) +SWITCHRES_VERSION = 2.2.1 +SWITCHRES_SITE = $(call github,antonioginer,switchres,v$(SWITCHRES_VERSION)) SWITCHRES_LICENSE = GPL2 -SWITCHRES_DEPENDENCIES = libdrm host-dos2unix +SWITCHRES_DEPENDENCIES = libdrm host-dos2unix sdl2_ttf +SWITCHRES_INSTALL_STAGING = YES -# Hack to patch the CRLF files -define SWITCHRES_CRLF_PATH - $(SED) 's/\r//' "$(@D)/modeline.cpp" "$(@D)/switchres.cpp" +define SWITCHRES_BUILD_CMDS + # Cross-compile standalone and libswitchres + cd $(@D) && \ + PATH="$(HOST_DIR)/bin:$$PATH" \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + PREFIX="$(STAGING_DIR)/usr" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ + CPPFLAGS="-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include/libdrm" \ + $(MAKE) all grid endef -SWITCHRES_PRE_PATCH_HOOKS += SWITCHRES_CRLF_PATH - -define SWITCHRES_BUILD_CMDS - CFLAGS="$(TARGET_CFLAGS) $(COMPILER_COMMONS_CFLAGS_SO)" \ - CXXFLAGS="$(TARGET_CXXFLAGS) $(COMPILER_COMMONS_CXXFLAGS_SO)" \ - LDFLAGS="$(TARGET_LDFLAGS) $(COMPILER_COMMONS_LDFLAGS_SO)" \ - $(MAKE) PREFIX="$(STAGING_DIR)/usr" \ - PKG_CONFIG="$(HOST_DIR)/bin/pkg-config" \ - CXX="$(TARGET_CXX)" CC="$(TARGET_CC)" -C $(@D)/ -f makefile +define SWITCHRES_INSTALL_STAGING_CMDS + cd $(@D) && \ + PATH="$(HOST_DIR)/bin:$$PATH" \ + CC="$(TARGET_CC)" \ + CXX="$(TARGET_CXX)" \ + BASE_DIR="" \ + PREFIX="$(STAGING_DIR)/usr" \ + PKG_CONFIG_PATH="$(STAGING_DIR)/usr/lib/pkgconfig" \ + $(MAKE) install endef define SWITCHRES_INSTALL_TARGET_CMDS - $(INSTALL) -D -m 0544 $(@D)/switchres $(TARGET_DIR)/usr/bin/switchres + cp $(@D)/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/ + ln -sf /usr/lib/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/libswitchres.so.2 + ln -sf /usr/lib/libswitchres.so.$(SWITCHRES_VERSION) $(TARGET_DIR)/usr/lib/libswitchres.so endef $(eval $(generic-package)) diff --git a/projects/configgen/configgen/emulatorlauncher.py b/projects/configgen/configgen/emulatorlauncher.py index 5d234092d55725d2830d18b97ddb0189b2576556..2bc0f8e897c016612d60e90fc0ef07f2f44e3125 100644 --- a/projects/configgen/configgen/emulatorlauncher.py +++ b/projects/configgen/configgen/emulatorlauncher.py @@ -149,6 +149,10 @@ def getGenerator(emulator): module = __import__("configgen.generators.xemu.xemuGenerator", fromlist=["XemuGenerator"]) generatorClass = getattr(module, "XemuGenerator") return generatorClass() + elif emulator == "mednafen": + module = __import__("configgen.generators.mednafen.mednafenGenerator", fromlist=["MednafenGenerator"]) + generatorClass = getattr(module, "MednafenGenerator") + return generatorClass() else: print("Missing generator for {}".format(emulator)) raise ValueError diff --git a/projects/configgen/configgen/generators/mednafen/__init__.py b/projects/configgen/configgen/generators/mednafen/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 b/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 new file mode 100644 index 0000000000000000000000000000000000000000..3d4dd90f9b67ff3db420eaebcc293c945daf989b --- /dev/null +++ b/projects/configgen/configgen/generators/mednafen/mednafen.cfg.j2 @@ -0,0 +1,112 @@ +;DO NOT EDIT THIS FILE WHILE AN INSTANCE OF MEDNAFEN THAT USES IT IS RUNNING. + +;Enable fullscreen mode. +video.fs 1 + +;Video resolution switch (0, native, super, switchres or mister). +video.resolution_switch 0 + +;Select sound output device. +sound.device sexyal-literal-default + +;Select sound driver. +sound.driver alsa + +;Path to directory for firmware +filesys.path_firmware /recalbox/share/bios/stv + +;Path to directory for save states +filesys.path_state /recalbox/share/saves/stv + +{% for i in controllers -%} +{% if loop.first -%} +;Exit +{% if i.isjamma -%} +command.exit joystick {{ i.id }} button_8 +{% else -%} +command.exit joystick {{ i.id }} {{ i.pad['hotkey'] }} && joystick {{ i.id }} {{ i.pad['start'] }} +{%- endif %} + +;Fast-forward +command.fast_forward joystick {{ i.id }} {{ i.pad['start'] }} && joystick {{ i.id }} {{ i.pad['right'] }} + +;Insert coin +{% if i.isjamma -%} +command.insert_coin joystick {{ i.id }} button_6 +{% else -%} +command.insert_coin joystick {{ i.id }} {{ i.pad['select'] }} +{%- endif %} +{% if i.isjamma -%} + +;ss, Builtin, builtin: ST-V Service +ss.input.builtin.builtin.stv_service joystick {{ i.id }} button_10 + +;ss, Builtin, builtin: ST-V Test +ss.input.builtin.builtin.stv_test joystick {{ i.id }} button_9 + +{%- endif %} +;Load state +command.load_state keyboard 0x0 64 + +;Reset +command.reset keyboard 0x0 67 + +;Save state +command.save_state keyboard 0x0 62 + +;Rewind +command.state_rewind keyboard 0x0 42 + +;Decrease selected save state slot by 1 +command.state_slot_dec keyboard 0x0 45 + +;Increase selected save state slot by 1 +command.state_slot_inc keyboard 0x0 46 +{%- endif %} + +;Input device for Virtual Port {{ loop.index }} +ss.input.port{{ loop.index }} {{ i.type }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: A +ss.input.port{{ loop.index }}.{{ i.type }}.a joystick {{ i.id }} {{ i.pad['b'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: B +ss.input.port{{ loop.index }}.{{ i.type }}.b joystick {{ i.id }} {{ i.pad['a'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: C +ss.input.port{{ loop.index }}.{{ i.type }}.c joystick {{ i.id }} {{ i.pad['r1'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: DOWN ↓ +ss.input.port{{ loop.index }}.{{ i.type }}.down joystick {{ i.id }} {{ i.pad['down'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: LEFT ← +ss.input.port{{ loop.index }}.{{ i.type }}.left joystick {{ i.id }} {{ i.pad['left'] }} + +{% if 'l2' in i.pad -%} +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Left Shoulder +ss.input.port{{ loop.index }}.{{ i.type }}.ls joystick {{ i.id }} {{ i.pad['l2'] }} +{%- endif %} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: RIGHT → +ss.input.port{{ loop.index }}.{{ i.type }}.right joystick {{ i.id }} {{ i.pad['right'] }} + +{% if 'r2' in i.pad -%} +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Right Shoulder +ss.input.port{{ loop.index }}.{{ i.type }}.rs joystick {{ i.id }} {{ i.pad['r2'] }} +{%- endif %} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: START +ss.input.port{{ loop.index }}.{{ i.type }}.start joystick {{ i.id }} {{ i.pad['start'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: UP ↑ +ss.input.port{{ loop.index }}.{{ i.type }}.up joystick {{ i.id }} {{ i.pad['up'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: X +ss.input.port{{ loop.index }}.{{ i.type }}.x joystick {{ i.id }} {{ i.pad['y'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Y +ss.input.port{{ loop.index }}.{{ i.type }}.y joystick {{ i.id }} {{ i.pad['x'] }} + +;ss, Virtual Port {{ loop.index }}, Digital Gamepad: Z +ss.input.port{{ loop.index }}.{{ i.type }}.z joystick {{ i.id }} {{ i.pad['l1'] }} +{%- endfor %} diff --git a/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py new file mode 100644 index 0000000000000000000000000000000000000000..f752f27d8defb2893f0919d7ddf8f40e6126c445 --- /dev/null +++ b/projects/configgen/configgen/generators/mednafen/mednafenGenerator.py @@ -0,0 +1,114 @@ +import os +import shutil +import evdev + +from typing import List + +from configgen.Command import Command +import configgen.recalboxFiles as recalboxFiles +from configgen.Emulator import Emulator +from configgen.generators.Generator import Generator +from configgen.settings.keyValueSettings import keyValueSettings +from configgen.controllers.controller import Controller, InputItem, ControllerPerPlayer + +class MednafenGenerator(Generator): + + @staticmethod + def getInfo(controller: Controller): + abs_count = 0 + info = dict() + info['pad'] = dict() + if controller.DeviceName.startswith("JammaController"): + info['isjamma'] = True + else: + info['isjamma'] = False + device = evdev.InputDevice(controller.DevicePath) + capabilities = device.capabilities(verbose=False, absinfo=False) + list_cap = capabilities.items() + for i in list_cap: + if i[0] == 3: + for x in i[1]: + if device.absinfo(x).max == 1: + if x in [0, 16]: + abs_z = "abs_%i" % abs_count + if x in [1, 17]: + abs_x = "abs_%i" % abs_count + abs_count = abs_count + 1 + uniqID = "0x{:04x}{:04x}{:04x}{:04x}{:04x}{:04x}0000000{:01d}" + info['id'] = uniqID.format(device.info.bustype, + device.info.vendor, + device.info.product, + device.info.version, + controller.AxisCount + 2 * controller.HatCount, + 11 if info['isjamma'] else controller.ButtonCount, + controller.SdlIndex) + info['type'] = 'gamepad' + info['pad']['up'] = "%s-" % (abs_x) + info['pad']['down'] = "%s+" % (abs_x) + info['pad']['left'] = "%s-" % (abs_z) + info['pad']['right'] = "%s+" % (abs_z) + info['pad']['start'] = "button_%s" % controller.Start.Id + info['pad']['select'] = "button_%s" % controller.Select.Id + info['pad']['hotkey'] = "button_%s" % controller.Hotkey.Id + if info['isjamma']: + info['pad']['x'] = "button_%s" % controller.A.Id + info['pad']['y'] = "button_%s" % controller.B.Id + info['pad']['a'] = "button_%s" % controller.X.Id + info['pad']['b'] = "button_%s" % controller.Y.Id + info['pad']['r1'] = "button_%s" % controller.L1.Id + info['pad']['l1'] = "button_%s" % controller.R1.Id + else: + info['pad']['a'] = "button_%s" % controller.A.Id + info['pad']['b'] = "button_%s" % controller.B.Id + info['pad']['x'] = "button_%s" % controller.X.Id + info['pad']['y'] = "button_%s" % controller.Y.Id + info['pad']['l1'] = "button_%s" % controller.L1.Id + info['pad']['r1'] = "button_%s" % controller.R1.Id + return info + + def generate(self, system: Emulator, playersControllers: ControllerPerPlayer, recalboxOptions: keyValueSettings, args,) -> Command: + """ + Load, override keys and save back emulator's configuration file + This way, any modification is kept accross emulator launhes + """ + + if not os.path.exists(recalboxFiles.mednafenConfig): + os.makedirs(recalboxFiles.mednafenConfig) + + if os.path.exists(recalboxFiles.mednafenConfigFile): + os.remove(recalboxFiles.mednafenConfigFile) + + controllers = list() + for index in playersControllers: + controller = playersControllers[index] + controllers.append(self.getInfo(controller)) + + if system.CRTAdapter: + resolution_switch = "switchres" + else: + resolution_switch = 0 + + import jinja2 + templateLoader = jinja2.FileSystemLoader(searchpath="/") + templateEnv = jinja2.Environment(loader=templateLoader) + TEMPLATE_FILE = "/usr/lib/python3.11/site-packages/configgen/generators/mednafen/mednafen.cfg.j2" + template = templateEnv.get_template(TEMPLATE_FILE) + templateVars = {"controllers": controllers, + "resolution_switch": resolution_switch, + } + outputText = template.render(templateVars) + + with open(recalboxFiles.mednafenConfigFile, 'w+') as f: + f.write(outputText) + f.close() + + commandArray = [ + recalboxFiles.recalboxBins[system.Emulator], + ] + + if system.HasArgs: + commandArray.extend(system.Args) + + commandArray.append(args.rom) + + return Command(videomode=system.VideoMode, array=commandArray) diff --git a/projects/configgen/configgen/recalboxFiles.py b/projects/configgen/configgen/recalboxFiles.py index d15e97909450a8e133cdfc3996165537dfb4d126..7f0c6743f04908f8bc2f4a80d6b45391248658bc 100644 --- a/projects/configgen/configgen/recalboxFiles.py +++ b/projects/configgen/configgen/recalboxFiles.py @@ -57,6 +57,7 @@ recalboxBins =\ 'xemu' : '/usr/bin/xemu', 'xroar' : '/usr/bin/xroar', 'vvvvvv' : '/usr/bin/vvvvvv/VVVVVV', + 'mednafen' : '/usr/bin/mednafen', } @@ -187,3 +188,6 @@ sdlpopConfigFile = CONF + '/sdlpop/sdlpop.ini' sdlpopControllersFile = CONF + '/sdlpop/gamecontrollerdb.txt' xemuConfig = CONF + '/xemu/xemu.toml' + +mednafenConfig = HOME + '/.mednafen' +mednafenConfigFile = mednafenConfig + '/mednafen.cfg' diff --git a/projects/configgen/setup.py b/projects/configgen/setup.py index fa9ed6011dd4678d84f569e88cbeeb4a4d3ef2ba..6da44d9718ad1244b3e35ad2e3beaa738c8aa38e 100644 --- a/projects/configgen/setup.py +++ b/projects/configgen/setup.py @@ -46,7 +46,10 @@ setup(name='recalbox-configgen', 'configgen.generators.sdlpop', 'configgen.generators.vvvvvv', 'configgen.generators.xemu', + 'configgen.generators.mednafen', 'configgen.settings', 'configgen.utils'], - scripts=['emulatorlauncher.py'] + scripts=['emulatorlauncher.py'], + package_data={'': ['*.j2']}, + include_package_data=True )