diff --git a/makefile b/makefile index 5aca72c..2173986 100644 --- a/makefile +++ b/makefile @@ -19,9 +19,8 @@ RELEASE_BASE=FinUI-$(RELEASE_TIME)b RELEASE_DOT!=find ./releases/. -regex ".*/$(RELEASE_BASE)-[0-9]+-base\.zip" -printf '.' | wc -m RELEASE_NAME=$(RELEASE_BASE)-$(RELEASE_DOT) -#in case BUILD_HASH is empty, put something to avoid crashing -ifeq (,$(BUILD_HASH)) -BUILD_HASH="unknown release" +ifeq (,$(BUILD_HASH)) +BUILD_HASH="devRelease" endif # TODO: this needs to consider the different platforms, eg. rootfs.ext2 should only be copied in rg35xx-toolchain @@ -46,7 +45,6 @@ all-cores: tools: cd ./src/clock && make cd ./src/clear_recent && make - cd ./src/toggle_adb && make cd ./other/DinguxCommander && make -j bundle: @@ -75,7 +73,6 @@ bundle: cp ./src/minui/minui.elf ./build/SYSTEM/rg35xx/paks/MinUI.pak cp ./src/clock/clock.elf ./build/EXTRAS/Tools/rg35xx/Clock.pak cp ./src/clear_recent/clear_recent.elf "./build/EXTRAS/Tools/rg35xx/Clear Recently Played.pak" - cp ./src/toggle_adb/toggle_adb.elf "./build/EXTRAS/Tools/rg35xx/Toggle ADB.pak" # stock cores cp ./cores/output/fceumm_libretro.so ./build/SYSTEM/rg35xx/cores @@ -109,14 +106,14 @@ zip: cd ./build/PAYLOAD && zip -r MinUI.zip .system mv ./build/PAYLOAD/MinUI.zip ./build/BASE - cd ./build/BASE && zip -r ../../releases/$(RELEASE_NAME)-base.zip Bios Roms Saves dmenu.bin MinUI.zip README.txt INSTALL.txt SHORTCUTS.txt - cd ./build/EXTRAS && zip -r ../../releases/$(RELEASE_NAME)-extras.zip Bios Emus Roms Saves Tools README.txt + cd ./build/BASE && zip -r ../../releases/$(RELEASE_NAME)-base.zip Bios Roms Saves Screenshots dmenu.bin MinUI.zip README.txt INSTALL.txt SHORTCUTS.txt + cd ./build/EXTRAS && zip -r ../../releases/$(RELEASE_NAME)-extras.zip Bios Emus Roms Saves Screenshots Tools README.txt rm -fr ./build/FULL mkdir ./build/FULL cp -fR ./build/BASE/* ./build/FULL/ cp -fR ./build/EXTRAS/* ./build/FULL/ - cd ./build/FULL && zip -r ../../releases/$(RELEASE_NAME)-full.zip Bios Emus Roms Saves Tools dmenu.bin MinUI.zip INSTALL.txt SHORTCUTS.txt + cd ./build/FULL && zip -r ../../releases/$(RELEASE_NAME)-full.zip Bios Emus Roms Saves Screenshots Tools dmenu.bin MinUI.zip INSTALL.txt SHORTCUTS.txt echo "$(RELEASE_NAME)" > ./build/latest.txt @@ -134,5 +131,4 @@ clean: cd ./cores && make clean cd ./src/clock && make clean cd ./src/clear_recent && make clean - cd ./src/toggle_adb && make clean cd ./other/DinguxCommander && make clean diff --git a/skeleton/BASE/Screenshots/.keep b/skeleton/BASE/Screenshots/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/skeleton/EXTRAS/Roms/aliases.txt b/skeleton/EXTRAS/Roms/aliases.txt deleted file mode 100644 index 204a303..0000000 --- a/skeleton/EXTRAS/Roms/aliases.txt +++ /dev/null @@ -1,527 +0,0 @@ -#Avoid complex names -#Separator is '~'. Do not include that in the alias -#Lines starting with '#' are comments and are not count -#Keep below 1000 including comments -# -#Works for any list (collections, favorites, consoles, etc) -#Real filename will be shown on game's menu. This only affects main menu listing. -# -#NEOGEO~## -2020bb~2020 Super Baseball -sonicwi2~Aero Fighters 2 -sonicwi3~Aero Fighters 3 -aodk~Aggressors of Dark KombatWold -alpham2~Alpha Mission II -androdun~Andro Dunos -aof2~Art of Fighting 2 -aof~Art of Fighting -bangbead~Bang Bead -bstars2~Baseball Stars 2 -bstars~Baseball Stars Professional -flipshot~Battle Flip Shot -blazstar~Blazing Star -bjourney~Blue's Journey -breakrev~Breakers Revenge -breakers~Breakers -burningf~Burning Fight -ctomaday~Captain Tomaday -gowcaizr~Chojin Gakuen Gowcaizer -crsword~Crossed Swords -cyberlip~Cyber-Lip -doubledr~Double Dragon -eightman~Eight Man -kabukikl~Far East of Eden: Kabuki Klash -fatfury1~Fatal Fury: King of Fighters -fatfury2~Fatal Fury 2 -fatfury3~Fatal Fury 3: Road to the Final Victory -fatfursp~Fatal Fury Special -fightfev~Fight Fever -karnovr~Fighter's History Dynamite -wjammers~Flying Power Disc -fbfrenzy~Football Frenzy -galaxyfg~Galaxy Fight: Universal Warriors -ganryu~Ganryu -garou~Garou: Mark of the Wolves -gpilots~Ghost Pilots -ghostlop~Ghostlop -goalx3~Goal! Goal! Goal! -gururin~Gururin -kotm2~King of the Monsters 2 - The Next Thing -kotm~King of the Monsters -kizuna~Kizuna Encounter - Super Tag Battle -lresort~Last Resort -lbowling~League Bowling -legendos~Legend of Success Joe -magdrop2~Magical Drop II -magdrop3~Magical Drop III -maglord~Magician Lord -matrim~Matrimelee -mslug~Metal Slug - Super Vehicle-001 -mslug2~Metal Slug 2 - Super Vehicle-001/II -mslug3~Metal Slug 3 -mslug4~Metal Slug 4 -mslug5~Metal Slug 5 -mslugx~Metal Slug X - Super Vehicle-001 -mutnat~Mutation Nation -nam1975~NAM-1975 -neobombe~Neo Bomberman -neodrift~Neo Drift Out - New Technology -neomrdo~Neo Mr. Do! -turfmast~Neo Turf Masters -neocup98~Neo-Geo Cup '98 - The Road to the Victory -nitd~Nightmare in the Dark -ncombat~Ninja Combat -ncommand~Ninja Commando -ninjamas~Ninja Master's: Haō Ninpō Chō -zedblade~Operation Ragnarok -overtop~Over Top -panicbom~Panic Bomber -pgoal~Pleasure Goal -pnyaa~Pochi and Nyaa -popbounc~Pop 'n Bounce -pspikes2~Power Spikes II -preisle2~Prehistoric Isle 2 -pulstar~Pulstar -pbobbl2n~Puzzle Bobble 2 -pbobblen~Puzzle Bobble -puzzledp~Puzzle De Pon! -joyjoy~Puzzled -rotd~Rage of the Dragons -ragnagrd~Ragnagard -rbff2~Real Bout Fatal Fury 2 - The Newcomers -rbffspec~Real Bout Fatal Fury Special -rbff1~Real Bout Fatal Fury -ridhero~Riding Hero -roboarmy~Robo Army -aof3~Ryuuko no Ken Gaiden -samsho2~Samurai Shodown II -samsho3~Samurai Shodown III -samsho4~Samurai Shodown IV - Amakusa's Revenge -samsho5~Samurai Shodown V -samsh5sp~Samurai Shodown V Special -samsho~Samurai Shodown -savagere~Savage Reign -sengoku2~Sengoku 2 -sengoku3~Sengoku 3 -sengoku~Sengoku -shocktr2~Shock Troopers: 2nd Squad -shocktro~Shock Troopers -socbrawl~Soccer Brawl -spinmast~Spin Master -stakwin2~Stakes Winner 2 -stakwin~Stakes Winner -strhoop~Street Hoop -s1945p~Strikers 1945 Plus -sdodgeb~Super Dodge Ball -ssideki2~Super Sidekicks 2 - The World Championship -ssideki3~Super Sidekicks 3 - The Next Glory -ssideki~Super Sidekicks -svc~SVC Chaos - SNK Vs. Capcom -irrmaze~The Irritating Maze -kof2000~The King of Fighters 2000 -kof2001~The King of Fighters 2001 -kof2002~The King of Fighters 2002 -kof2003~The King of Fighters 2003 -kof94~The King of Fighters '94 -kof95~The King of Fighters '95 -kof96~The King of Fighters '96 -kof97~The King of Fighters '97 -kof98~The King of Fighters '98 - The Slugfest -kof99~The King of Fighters '99: Millennium Battle -lastbld2~The Last Blade 2 -lastblad~The Last Blade -superspy~The Super Spy -ssideki4~The Ultimate 11: SNK Football Championship -trally~Thrash Rally -tophuntr~Top Hunter: Roddy & Cathy -tpgolf~Top Player's Golf -totc~Treasure of the Caribbean -twinspri~Twinkle Star Sprites -viewpoin~Viewpoint -vliner~V-Liner -wakuwak7~Waku Waku 7 -wh2j~World Heroes 2 Jet -wh2~World Heroes 2 -whp~World Heroes Perfect -wh1~World Heroes -zupapa~Zupapa! -neogeo~ZZZ -#ARCADE~## -1941~1941: Counter Attack -1942~1942 -1943kai~1943 Kai: Midway Kaisen -1943~1943: The Battle of Midway -1944~1944: The Loop Master -19xx~19XX: The War Against Destiny -720~720 Degrees -actfancr~Act-Fancer: Cybernetick Hyper Weapon -aburner2~After Burner II -aburner~After Burner -airwolf~Airwolf -typhoon~Ajax -lwings~Ales no Tsubasa: The Legendary Soldiers -astorm~Alien Storm -aliensyn~Alien Syndrome -aliensu~Aliens -avspu~Aliens Versus Predator -aligatun~Alligator Hunt -altbeast~Altered Beast -amidar~Amidar -aquajack~Aqua Jack -unsquad~Area 88 -rygar~Argus no Senshi -arknoid2~Arkanoid - Revenge Of Doh -arknoidu~Arkanoid -batrider~Armed Police Batrider -asterix~Asterix -asteroid~Asteroids -avspirit~Avenging Spirit -bankp~Bank Panic -batman~Batman -batcir~Battle Circuit -bzone~Battle Zone -btoads~Battletoads -blswhstl~Bells & Whistles -berzerk1~Berzerk -biomtoy~Biomechanical Toy -blktiger~Black Tiger -bwidow~Black Widow -blstroid~Blasteroids -bogeyman~Bogey Manor -bombjack~Bomb Jack -bosco~Bosconian -bubbobr1~Bubble Bobble -bubsympu~Bubble Symphony -bubbles~Bubbles -buckrog~Buck Rogers: Planet of Zoom -buckyua~Bucky O'Hare -bnj~Bump 'n' Jump -btime~Burger Time -bbros~Buster Bros. -cabal~Cabal -dinou~Cadillacs Kyouryuu-Shinseiki -dino~Cadillacs and Dinosaurs -captavnu~Captain America And The Avengers -captcomu~Captain Commando -centtime~Centipede -chasehq~Chase H.q. -chplft~Choplifter -circusc~Circus Charlie -citycon~City Connection -columns~Columns -commandu~Commando -congo~Congo Bongo -contra~Contra -cclimber~Crazy Climber -crimfgt2~Crime Fighters -cbuster~Crude Buster -ccastles~Crystal Castles -cybots~Cyberbots: Fullmetal Madness -cyvern~Cyvern - The Dragon Weapons -ddcrew~D. D. Crew -ghoulsu~Dai Makai-Mura -darkseal~Dark Seal -pow~Datsugoku: Prisoners of War -deadconx~Dead Connection -defendg~Defender -dassault~Desert Assault -digdug~Dig Dug -digdug2~Dig Dug II -dogyuun~Dogyuun -dondokod~Don Doko Don -dkongo~Donkey Kong -dkong3~Donkey Kong 3 -dkongjr~Donkey Kong Junior -donpachi~DonPachi -ddragonu~Double Dragon -ddragn2u~Double Dragon II - The Revenge -drtoppel~Dr. Toppel's Adventure -dbreed~Dragon Breed -dsaber~Dragon Saber -baddudes~Dragonninja -lightbr~Dungeon Magic -ddsomu~Dungeons & Dragons: Shadow over Mystara -ddtodu~Dungeons & Dragons: Tower of Doom -dw~Dynasty Wars -ecofghtr~Eco Fighters -elevator~Elevator Action -elvactr~Elevator Action Returns -enduror~Enduro Racer -exedexes~Exed Exes -fantzone~Fantasy Zone -fantzn2~Fantasy Zone II: The Tears of Opa-Opa -ffightu~Final Fight -ffight~Final Fight -flicky~Flicky -foodf~Food Fight -forgottn~Forgotten Worlds -frogger~Frogger -funkyjet~Funky Jet -gijoeu~G.I. Joe -galaga~Galaga -galaga88~Galaga ´88 -galaxian~Galaxian -galmedes~Galmedes -gangwars~Gang Wars -gaplus~Gaplus -gaunt2p~Gauntlet -gaunt22p~Gauntlet 2 -gigawing~Giga Wing -godzilla~Godzilla -goldnaxe~Golden Axe -ga2~Golden Axe: The Revenge of Death Adder -gorf~Gorf -gradius~Gradius -gradius2~Gradius II: Gofer no Yab -grdius3e~Gradius III -dimahoo~Great Mahou Daisakusen -growlu~Growl -grdians~Guardians: Denjin Makai II -gunsmoku~Gun.Smoke -gnbarich~Gunbarich -gunbird2~Gunbird 2 -gunforc2~GunForce II -gunlock~Gunlock -gunnail~GunNail -guwange~Guwange -gyruss~Gyruss -hharryu~Hammerin' Harry -hangon~Hang-on -hattrick~Hat Trick -heatbrlu~Heated Barrel -hvysmsh~Heavy Smash -hitice~Hit The Ice -hooku~Hook -horizon~Horizon -trackfld~Hyper Olympic -irobot~I, Robot -ikari3nr~Ikari III - The Rescue -ikarijpb~Ikari Warriors -imgfight~Image Fight -inthunt~In the Hunt -offroad~Ironman Ivan Stewart's Super Off-road -jailbrek~Jail Break -journey~Journey -joust~Joust -jungleh~Jungle King -junofrst~Juno First -kangaroo~Kangaroo -kchamp~Karate Dou -karnov~Karnov -kick~Kick -shaolins~Kicker -klax~Klax -knightsu~Knights of the Round -kungfum~Kung-fu Master -landmkrp~Land Maker -loht~Legend of Hero Tonma -lethalth~Lethal Thunder -lifefrce~Life Force -liquidk~Liquid Kids -ldrun~Lode Runner -ldrun2~Lode Runner II - The Bungeling Strikes Back -ldrun4~Lode Runner IV - Teikoku Karano Dasshutsu -loderndf~Lode Runner: The Dig Fight -looping~Looping -llander~Lunar Lander -macrossp~Macross Plus -mswordu~Magic Sword -mgcrystl~Magical Crystals -mhavoc~Major Havoc -gngt~Makai-Mura -mappy~Mappy -marble~Marble Madness -mario~Mario Bros. -mmatrix~Mars Matrix: Hyper Solid Shooting -mshvsf~Marvel Super Heroes vs. Street Fighter -mshvsfj~Marvel Super Heroes vs. Street Fighter -mvsc~Marvel vs. Capcom: Clash of Super Heroes -mazinger~Mazinger Z -mtwins~Mega Twins -mercs~Mercs -metmqstr~Metamoqester -metamrph~Metamorphic Force -moonwalk~Michael Jackson's Moonwalker -gtmr2~Mille Miglia 2: Great 1000 Miles Rally -milliped~Millipede -missile~Missile Command -monsterb~Monster Bash -mpatrol~Moon Patrol -mk~Mortal Kombat -mk2~Mortal Kombat 2 -mk3~Mortal Kombat 3 -mrdo~Mr. Do! -docastle~Mr. Do's Castle -mspacman~Ms. Pac-Man -mbombrd~Muscle Bomber Duo: Ultimate Team Battle -mystwaru~Mystic Warriors -narc~Narc -nbajam~Nba Jam -nbajamte~NBA Jam Tournament Edition -nemo~Nemo -nrallyx~New Rally X -nibbler~Nibbler -nslasher~Night Slashers -nbbatman~Ninja Baseball Bat Man -gaiden~Ninja Gaiden -nspirit~Ninja Spirit -ninjakd2~Ninja-Kid II -nitrobal~Nitro Ball -noboranb~Noboranka -candance~Osman -outrunb~Out Run -outzone~Out Zone -pacland~Pac-Land -pacman~Pac-Man -pang3~Pang! 3 -paperboy~Paperboy -parodius~Parodius Da! -pengo~Pengo -peterpak~Peter Pack Rat -phoenix~Phoenix -pipedrm~Pipe Dream -pitfight~Pit Fighter -sgemf~Pocket Fighter -polepos~Pole Position -polepos2~Pole Position II -pooyan~Pooyan -popeyef~Popeye -armwaru~Powered Gear: Strategic Variant Armor Equipment -progear~Progear No Arashi -punchout~Punch-out!! -punksht2~Punk Shot -puyopuya~Puyo Puyo -puyopuy2~Puyo Puyo 2 -puzloopu~Puzz Loop -qbert~Q*bert -qix~Qix -rallyx~Rally X -rampage~Rampage -ramprt2p~Rampart -rastanu~Rastan -renegade~Renegade -ringking~Ring King -robocop~Robocop -robocp2u~Robocop 2 -robotron~Robotron: 2084 -megaman2~Rockman 2: The Power Fighters -rocnrope~Roc'n Rope -rohgau~Rohga Armor Force -rthunder~Rolling Thunder -rthun2~Rolling Thunder 2 -rtypeu~R-Type -rtype2~R-Type II -rtypeleo~R-Type Leo -rushatck~Rush'n Attack -chinagat~Sai Yu Gou Ma Roku -stdragon~Saint Dragon -shollow~Satan's Hollow -slammasu~Saturday Night Slam Masters -seawolf~Sea Wolf -seganinu~Sega Ninja -sonic~Segasonic The Hedgehog -samuraia~Sengoku Aces -shdancer~Shadow Dancer -shadfrce~Shadow Force -shinobi~Shinobi -sidearmr~Side Arms - Hyper Dyne -sinistar~Sinistar -slyspy~Sly Spy -smashtv~Smash T.V. -snowbrob~Snow Bros. - Nick & Tom -solomon~Solomon no Kagi -sonson~Son Son -aerofgt~Aero Fighters -sharrier~Space Harrier -invaders~Space Invaders -spidey~Spider-Man: The Videogame -splatter~Splatter House -spyhunt~Spy Hunter -starcas~Star Castle -starwars~Star Wars -stmblade~Storm Blade -sf1us~Street Fighter -sf2t~Street Fighter II': Champion Edition -sf2~Street Fighter II: The World Warrior -sfa2~Street Fighter Zero 2 -sfa3~Street Fighter Zero 3 -strider~Strider Hiryu -s1945~Strikers 1945 -s1945ii~Strikers 1945 II -s1945iii~Strikers 1945 III -ssrdrubc~Sunset Riders -scontra~Super Contra -shangon~Super Hang-on -ringdest~Super Muscle Bomber: The International Blowout -superpac~Super Pac-Man -spnchout~Super Punch-out!! -spf2t~Super Puzzle Fighter II X -macross2~Super Spacefortress Macross II -macross~Super Spacefortress Macross -ssprint~Super Sprint -ssf2t~Super Street Fighter II Turbo -superman~Superman -tapper~Tapper -trojan~Tatakai no Banka -wildfang~Tecmo Knight -tmnt2po~Teenage Mutant Ninja Turtles -tmnt22p~Teenage Mutant Ninja Turtles: Turtles in Time -tekken~Tekken -tekken2~Tekken 2 -tekken3~Tekken 3 -tempest~Tempest -wofu~Tenchi wo Kurau II: Sekiheki no Tatakai -tetris~Tetris -edrandy~The Cliffhanger: Edward Randy -ctribe~The Combatribes -boogwing~The Great Ragtime Show -kodu~The King of Dragons -lkage~The Legend of Kage -mainev2p~The Main Event -tnzsb~The NewZealand Story -ninjak~The Ninja Kids -outfxies~The Outfoxies -punishru~The Punisher -ghostb~The Real Ghostbusters -simpsn2p~The Simpsons -3wonderu~Three Wonders -thndrbld~Thunder Blade -timeplt~Time Pilot -tokiu~Toki -toobin~Toobin -bionicc~Top Secret -tigeroad~Tora e no Michi -tron~Tron -truxton2~Truxton II -tumblep~Tumble Pop -vball~U.S. Championship V'ball -cawingu~U.S. Navy -umk3~Ultimate Mortal Kombat 3 -uccops~Undercover Cops -upndown~Up'n Down -valkyrie~Valkyrie no Densetsu -nwarr~Vampire Hunter: Darkstalkers Revenge -vsav2~Vampire Savior 2: The Lord of Vampire -vsavu~Vampire Savior: The Lord of Vampire -dstlku~Vampire: The Night Warriors -varthu~Varth: Operation Thunderstorm -vendet2p~Vendetta -vigilntu~Vigilante -viostorm~Violent Storm -vf~Virtua Fighter -volfied~Volfied -mooua~Wild West C.o.w.-boys Of Moo Mesa -willow~Willow -wow~Wizard Of Wor -wboyu~Wonder Boy -wb3~Wonder Boy III - Monster Lair -wbmlb~Wonder Boy In Monster Land -xmultipl~X Multiply -xevious~Xevious -xexex~Xexex -xmen2p~X-Men -xmvsfu~X-Men vs. Street Fighter -xmcotau~X-Men: Children of the Atom -zaxxon~Zaxxon -zerowing~Zero Wing -zookeep~Zoo Keeper diff --git a/skeleton/EXTRAS/Tools/rg35xx/Toggle ADB.pak/launch.sh b/skeleton/EXTRAS/Tools/rg35xx/Toggle ADB.pak/launch.sh deleted file mode 100755 index 4a2e896..0000000 --- a/skeleton/EXTRAS/Tools/rg35xx/Toggle ADB.pak/launch.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/sh - -PATH=$(dirname "$0") -cd "$PATH" -./toggle_adb.elf diff --git a/skeleton/SYSTEM/rg35xx/paks/Emus/SFC.pak/default.cfg b/skeleton/SYSTEM/rg35xx/paks/Emus/SFC.pak/default.cfg index 6f3b92d..3b5568c 100644 --- a/skeleton/SYSTEM/rg35xx/paks/Emus/SFC.pak/default.cfg +++ b/skeleton/SYSTEM/rg35xx/paks/Emus/SFC.pak/default.cfg @@ -1,3 +1,4 @@ +minarch_cpu_speed = Powersave minarch_prevent_tearing = Strict bind Up = UP diff --git a/skeleton/SYSTEM/rg35xx/paks/MinUI.pak/launch.sh b/skeleton/SYSTEM/rg35xx/paks/MinUI.pak/launch.sh index 0eaae24..bf76d21 100755 --- a/skeleton/SYSTEM/rg35xx/paks/MinUI.pak/launch.sh +++ b/skeleton/SYSTEM/rg35xx/paks/MinUI.pak/launch.sh @@ -7,6 +7,7 @@ export SYSTEM_PATH="$SDCARD_PATH/.system/rg35xx" export CORES_PATH="$SYSTEM_PATH/cores" export USERDATA_PATH="$SDCARD_PATH/.userdata/rg35xx" export LOGS_PATH="$USERDATA_PATH/logs" +export SCREENSHOTS_PATH="$SDCARD_PATH/Screenshots" ####################################### diff --git a/src/boot/boot.sh b/src/boot/boot.sh index 43c87f5..00cdb4b 100755 --- a/src/boot/boot.sh +++ b/src/boot/boot.sh @@ -1,5 +1,10 @@ #!/system/bin/sh +# Enable Android Debug Bridge +if [ -f /misc/enableADB ]; then + /usbdbg.sh device +fi + echo 0xF > /sys/devices/system/cpu/autoplug/plug_mask TF1_PATH=/mnt/mmc # ROMS partition @@ -26,11 +31,6 @@ if [ $? -ne 0 ]; then fi fi -# Enable Android Debug Bridge -if [ -f /mnt/mmc/enableADB ]; then - /usbdbg.sh device -fi - if [ -d ${TF1_PATH}${SYSTEM_FRAG} ] || [ -f ${TF1_PATH}${UPDATE_FRAG} ]; then if [ ! -L $TF2_PATH ]; then # .system found on TF1 but TF2 is present diff --git a/src/common/api.c b/src/common/api.c index c816c16..a2e8364 100644 --- a/src/common/api.c +++ b/src/common/api.c @@ -1560,34 +1560,24 @@ void POW_update(int* _dirty, int* _show_setting, POW_callback_t before_sleep, PO void POW_disablePowerOff(void) { pow.can_poweroff = 0; } -void POW_sync(char* msg) { - GFX_clear(gfx.screen); - GFX_blitMessage(font.large, msg, gfx.screen, NULL); - GFX_flip(gfx.screen); - - system("sync"); - system("echo s > /proc/sysrq-trigger"); - system("echo u > /proc/sysrq-trigger"); - system("sync"); - - sleep(2); -} void POW_powerOff(void) { if (pow.can_poweroff) { char* msg = exists(AUTO_RESUME_PATH) ? "Quicksave created,\npowering off" : "Powering off"; - POW_sync(msg); + GFX_clear(gfx.screen); + GFX_blitMessage(font.large, msg, gfx.screen, NULL); + GFX_flip(gfx.screen); + + system("sync"); + system("echo s > /proc/sysrq-trigger"); + system("echo u > /proc/sysrq-trigger"); + system("sync"); + + sleep(2); // actual shutdown system("echo o > /proc/sysrq-trigger"); } } -void POW_reboot(void) { - char* msg = "Rebooting"; - POW_sync(msg); - - // trigger reboot - system("echo b > /proc/sysrq-trigger"); -} #define BACKLIGHT_PATH "/sys/class/backlight/backlight.2/bl_power" diff --git a/src/common/api.h b/src/common/api.h index 857628a..b09428c 100644 --- a/src/common/api.h +++ b/src/common/api.h @@ -220,10 +220,8 @@ void POW_warn(int enable); void POW_update(int* dirty, int* show_setting, POW_callback_t before_sleep, POW_callback_t after_sleep); -void POW_sync(char* msg); void POW_disablePowerOff(void); void POW_powerOff(void); -void POW_reboot(void); void POW_fauxSleep(void); void POW_disableAutosleep(void); diff --git a/src/common/defines.h b/src/common/defines.h index 9425713..a2b61b7 100644 --- a/src/common/defines.h +++ b/src/common/defines.h @@ -60,8 +60,7 @@ #define FAUX_FAVORITE_PATH SDCARD_PATH "/Favorites" #define COLLECTIONS_PATH SDCARD_PATH "/Collections" #define BATTERY_PATH SDCARD_PATH "/battery.txt" -#define ADB_FLAG_PATH SDCARD_PATH "/enableADB" -#define ALIASES_PATH SDCARD_PATH "/Roms/aliases.txt" +#define SCREENSHOTS_PATH SDCARD_PATH "/Screenshots" #define LAST_PATH "/tmp/last.txt" // transient #define CHANGE_DISC_PATH "/tmp/change_disc.txt" diff --git a/src/common/utils.c b/src/common/utils.c index b222a55..901ac27 100644 --- a/src/common/utils.c +++ b/src/common/utils.c @@ -117,7 +117,7 @@ void trimSortingMeta(char** str) { // eg. `001) ` char* safe = *str; while(isdigit(**str)) *str += 1; // ignore leading numbers - if (*str[0]==')' || *str[0]=='.') { // then match a closing parenthesis or dot + if (*str[0]==')') { // then match a closing parenthesis *str += 1; } else { // or bail, restoring the string to its original value diff --git a/src/minarch/minarch.c b/src/minarch/minarch.c index 48e5380..d9eb371 100644 --- a/src/minarch/minarch.c +++ b/src/minarch/minarch.c @@ -31,8 +31,8 @@ static int show_menu; static int quit_action = 0; static char quit_action_name[16]; static char* quit_action_labels[] = { - "Save & Quit", "Quit", + "Save & Quit", "Reset", NULL }; @@ -549,6 +549,46 @@ static void State_resume(void) { State_read(); state_slot = last_state_slot; } +static void Take_screenshot(void) { + char bmp_path[256]; + char screenshot_dir[256]; + + sprintf(screenshot_dir, SCREENSHOTS_PATH); + mkdir(screenshot_dir, 0755); + + SDL_Surface* backing = GFX_getBufferCopy(); + SDL_Surface* snapshot = SDL_CreateRGBSurface(SDL_SWSURFACE, FIXED_WIDTH,FIXED_HEIGHT,FIXED_DEPTH,0,0,0,0); + + if (backing->w==FIXED_WIDTH && backing->h==FIXED_HEIGHT) { + SDL_BlitSurface(backing, NULL, snapshot, NULL); + } + else { + Downsample(backing->pixels,snapshot->pixels,backing->w,backing->h,backing->pitch,snapshot->pitch); + } + + // Get the current date and time for the screenshot filename + time_t currentTime = time(NULL); + struct tm* timeinfo = localtime(¤tTime); + int day = timeinfo->tm_mday; + int month = timeinfo->tm_mon + 1; + int year = timeinfo->tm_year + 1900; + + int hours = timeinfo->tm_hour; + int minutes = timeinfo->tm_min; + int seconds = timeinfo->tm_sec; + + // Convert hours and minutes to strings + char timeStr[16]; + snprintf(timeStr, sizeof(timeStr), "%04d%02d%02d_%02d%02d%02d", year, month, day, hours, minutes, seconds); + sprintf(bmp_path, "%s/%s.bmp", screenshot_dir, timeStr); + + SDL_RWops* out = SDL_RWFromFile(bmp_path, "wb"); + + SDL_SaveBMP_RW(snapshot, out, 1); + + SDL_FreeSurface(snapshot); + SDL_FreeSurface(backing); +} /////////////////////////////// @@ -626,6 +666,7 @@ enum { SHORTCUT_TOGGLE_SCANLINES, SHORTCUT_TOGGLE_FF, SHORTCUT_HOLD_FF, + SHORTCUT_TAKE_SCREENSHOT, SHORTCUT_COUNT, }; @@ -865,6 +906,7 @@ static struct Config { [SHORTCUT_TOGGLE_SCANLINES] = {"Toggle Scanlines", -1, BTN_ID_NONE, 0}, [SHORTCUT_TOGGLE_FF] = {"Toggle FF", -1, BTN_ID_NONE, 0}, [SHORTCUT_HOLD_FF] = {"Hold FF", -1, BTN_ID_NONE, 0}, + [SHORTCUT_TAKE_SCREENSHOT] = {"Take Screenshot", -1, BTN_ID_NONE, 0}, {NULL} }, }; @@ -1449,6 +1491,9 @@ static void input_poll_callback(void) { Config_syncFrontend(FE_OPT_SCANLINES, !show_scanlines); } break; + case SHORTCUT_TAKE_SCREENSHOT: + Take_screenshot(); + break; default: break; } @@ -3925,7 +3970,7 @@ static void Menu_loop(void) { getDisplayName(game.name, rom_name); int selected = 0; // resets every launch - quit_action = 0; // first option resets to 'Save & Quit' + quit_action = 0; // first option is reseted to 'Quit' sprintf(quit_action_name, "%s", quit_action_labels[quit_action]); if (exists(slot_path)) menu.slot = getInt(slot_path); if (menu.slot==8) menu.slot = 0; @@ -4073,7 +4118,7 @@ static void Menu_loop(void) { reset_flag = 1; status = STATUS_RSET; } else { - // 'save & quit' or quit is managed by quitting procedure + // save & quit is managed by quitting procedure status = STATUS_QUIT; quit = 1; // TODO: tmp? } @@ -4412,7 +4457,7 @@ int main(int argc , char* argv[]) { Menu_quit(); finish: - if (quit_action==0) State_autosave(); + if (quit_action==1) State_autosave(); Game_close(); Core_unload(); diff --git a/src/minui/minui.c b/src/minui/minui.c index 6dde36b..79cdd4c 100644 --- a/src/minui/minui.c +++ b/src/minui/minui.c @@ -114,7 +114,6 @@ typedef struct Entry { char* path; char* name; char* unique; - char* alias; // for neogeo and others where you cannot change the rom filename int type; int alpha; // index in parent Directory's alphas Array, which points to the index of an Entry in its entries Array :sweat_smile: } Entry; @@ -126,7 +125,6 @@ static Entry* Entry_new(char* path, int type) { self->path = strdup(path); self->name = strdup(display_name); self->unique = NULL; - self->alias = NULL; self->type = type; self->alpha = 0; return self; @@ -135,7 +133,6 @@ static void Entry_free(Entry* self) { free(self->path); free(self->name); if (self->unique) free(self->unique); - if (self->alias) free(self->alias); free(self); } @@ -1302,37 +1299,6 @@ int main (int argc, char *argv[]) { POW_setCPUSpeed(CPU_SPEED_MENU); GFX_setVsync(VSYNC_STRICT); - FILE *aliases = fopen(ALIASES_PATH, "r"); - int aIndex = 0; - char* original[1000]; - char* alias[1000]; - char line[75]; - - if (aliases) { - while(fgets(line, sizeof line, aliases)!=NULL) { - if (line[0] != '\0' && line[0] != '#') { - original[aIndex] = malloc(sizeof(line)); - alias[aIndex] = malloc(sizeof(line)); - - int set_alias = 0; - char* split = strtok(line, "~"); - - while(split) { - if (!set_alias) { - strcpy(original[aIndex], split); - set_alias = 1; - } else { - strcpy(alias[aIndex], split); - } - split = strtok(NULL, "~"); - } - aIndex++; - } - } - - fclose(aliases); - } - PAD_reset(); int dirty = 1; int show_version = 0; @@ -1570,7 +1536,6 @@ int main (int argc, char *argv[]) { Entry* entry = top->entries->items[i]; char* entry_name = entry->name; char* entry_unique = entry->unique; - char* entry_alias = entry->alias; int available_width = screen->w - SCALE1(PADDING * 2); if (i==top->start) available_width -= ow + CLOCK_SIZE; @@ -1578,24 +1543,7 @@ int main (int argc, char *argv[]) { if (isFavorite(entry->path)) { text_color = COLOR_GOLD; } - - if (aIndex > 0) { - for(int a = 0; a < aIndex; ++a) - { - if(!strcmp(original[a], entry_name)) - { - entry_alias = strdup(alias[a]); - } - } - } - if (entry_alias!=NULL) { - // has alias, we display these over the others - entry_unique = NULL; - entry_name = strdup(entry_alias); - LOG_info("new entry name: %s\n", entry_name); - } - trimSortingMeta(&entry_name); char display_name[256]; diff --git a/src/toggle_adb/makefile b/src/toggle_adb/makefile deleted file mode 100644 index 00f4dd7..0000000 --- a/src/toggle_adb/makefile +++ /dev/null @@ -1,15 +0,0 @@ -ifeq (,$(CROSS_COMPILE)) -$(error missing CROSS_COMPILE for this toolchain) -endif - -TARGET = toggle_adb - -CC = $(CROSS_COMPILE)gcc -CFLAGS = -Os -marm -mtune=cortex-a9 -mfpu=neon-fp16 -mfloat-abi=hard -march=armv7-a -fomit-frame-pointer -CFLAGS += -I. -I../common -DPLATFORM=\"$(UNION_PLATFORM)\" -LDFLAGS = -ldl -lSDL -lSDL_image -lSDL_ttf -lmsettings -lpthread - -all: - $(CC) $(TARGET).c ../common/utils.c ../common/api.c -o $(TARGET).elf $(CFLAGS) $(LDFLAGS) -clean: - rm -f $(TARGET).elf diff --git a/src/toggle_adb/toggle_adb.c b/src/toggle_adb/toggle_adb.c deleted file mode 100644 index 9381fff..0000000 --- a/src/toggle_adb/toggle_adb.c +++ /dev/null @@ -1,67 +0,0 @@ -#include -#include -#include -#include -#include -#include - -#include "defines.h" -#include "utils.h" -#include "api.h" - -int main(int argc, char* argv[]) { - POW_setCPUSpeed(CPU_SPEED_MENU); - - SDL_Surface* screen = GFX_init(MODE_MAIN); - POW_init(); - InitSettings(); - - SDL_Event event; - int quit = 0; - int save_changes = 0; - int adb_enabled = 0; - - // Show confirmation message - // GFX_blitHardwareGroup(screen, show_setting); - FILE *file = fopen(ADB_FLAG_PATH, "r"); - if (file) { - adb_enabled = 1; - GFX_blitMessage(font.large, "ADB is currently enabled\nDisable and reboot?", screen, NULL); - GFX_blitButtonGroup((char*[]){ "B","CANCEL", "A","DISABLE", NULL }, screen, 1); - } else { - GFX_blitMessage(font.large, "ADB is not enabled\nEnable and reboot?", screen, NULL); - GFX_blitButtonGroup((char*[]){ "B","CANCEL", "A","ENABLE", NULL }, screen, 1); - } - - GFX_flip(screen); - - // Wait for user's input - while (!quit) { - PAD_poll(); - if (PAD_justPressed(BTN_A)) { - save_changes = 1; - quit = 1; - } else if (PAD_justPressed(BTN_B)) { - quit = 1; - } else { - GFX_sync(); - } - } - - // Execute main program based on user's input - if (save_changes) { - if (!adb_enabled){ - fclose(fopen(ADB_FLAG_PATH, "w")); - } else { - remove(ADB_FLAG_PATH); - } - LOG_info("Rebooting to save changes\n"); - POW_reboot(); - } - - QuitSettings(); - POW_quit(); - GFX_quit(); - - return EXIT_SUCCESS; -}