Compare commits

...

10 commits

15 changed files with 709 additions and 73 deletions

View file

@ -19,8 +19,9 @@ 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="devRelease"
BUILD_HASH="unknown release"
endif
# TODO: this needs to consider the different platforms, eg. rootfs.ext2 should only be copied in rg35xx-toolchain
@ -45,6 +46,7 @@ all-cores:
tools:
cd ./src/clock && make
cd ./src/clear_recent && make
cd ./src/toggle_adb && make
cd ./other/DinguxCommander && make -j
bundle:
@ -73,6 +75,7 @@ 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
@ -106,14 +109,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 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
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
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 Screenshots Tools dmenu.bin MinUI.zip INSTALL.txt SHORTCUTS.txt
cd ./build/FULL && zip -r ../../releases/$(RELEASE_NAME)-full.zip Bios Emus Roms Saves Tools dmenu.bin MinUI.zip INSTALL.txt SHORTCUTS.txt
echo "$(RELEASE_NAME)" > ./build/latest.txt
@ -131,4 +134,5 @@ 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

View file

View file

@ -0,0 +1,527 @@
#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

View file

@ -0,0 +1,5 @@
#!/bin/sh
PATH=$(dirname "$0")
cd "$PATH"
./toggle_adb.elf

View file

@ -1,4 +1,3 @@
minarch_cpu_speed = Powersave
minarch_prevent_tearing = Strict
bind Up = UP

View file

@ -7,7 +7,6 @@ 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"
#######################################

View file

@ -1,10 +1,5 @@
#!/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
@ -31,6 +26,11 @@ 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

View file

@ -1560,9 +1560,7 @@ void POW_update(int* _dirty, int* _show_setting, POW_callback_t before_sleep, PO
void POW_disablePowerOff(void) {
pow.can_poweroff = 0;
}
void POW_powerOff(void) {
if (pow.can_poweroff) {
char* msg = exists(AUTO_RESUME_PATH) ? "Quicksave created,\npowering off" : "Powering off";
void POW_sync(char* msg) {
GFX_clear(gfx.screen);
GFX_blitMessage(font.large, msg, gfx.screen, NULL);
GFX_flip(gfx.screen);
@ -1573,11 +1571,23 @@ void POW_powerOff(void) {
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);
// 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"

View file

@ -220,8 +220,10 @@ 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);

View file

@ -60,7 +60,8 @@
#define FAUX_FAVORITE_PATH SDCARD_PATH "/Favorites"
#define COLLECTIONS_PATH SDCARD_PATH "/Collections"
#define BATTERY_PATH SDCARD_PATH "/battery.txt"
#define SCREENSHOTS_PATH SDCARD_PATH "/Screenshots"
#define ADB_FLAG_PATH SDCARD_PATH "/enableADB"
#define ALIASES_PATH SDCARD_PATH "/Roms/aliases.txt"
#define LAST_PATH "/tmp/last.txt" // transient
#define CHANGE_DISC_PATH "/tmp/change_disc.txt"

View file

@ -117,7 +117,7 @@ void trimSortingMeta(char** str) { // eg. `001) `
char* safe = *str;
while(isdigit(**str)) *str += 1; // ignore leading numbers
if (*str[0]==')') { // then match a closing parenthesis
if (*str[0]==')' || *str[0]=='.') { // then match a closing parenthesis or dot
*str += 1;
}
else { // or bail, restoring the string to its original value

View file

@ -31,8 +31,8 @@ static int show_menu;
static int quit_action = 0;
static char quit_action_name[16];
static char* quit_action_labels[] = {
"Quit",
"Save & Quit",
"Quit",
"Reset",
NULL
};
@ -549,46 +549,6 @@ 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(&currentTime);
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);
}
///////////////////////////////
@ -666,7 +626,6 @@ enum {
SHORTCUT_TOGGLE_SCANLINES,
SHORTCUT_TOGGLE_FF,
SHORTCUT_HOLD_FF,
SHORTCUT_TAKE_SCREENSHOT,
SHORTCUT_COUNT,
};
@ -906,7 +865,6 @@ 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}
},
};
@ -1491,9 +1449,6 @@ static void input_poll_callback(void) {
Config_syncFrontend(FE_OPT_SCANLINES, !show_scanlines);
}
break;
case SHORTCUT_TAKE_SCREENSHOT:
Take_screenshot();
break;
default: break;
}
@ -3970,7 +3925,7 @@ static void Menu_loop(void) {
getDisplayName(game.name, rom_name);
int selected = 0; // resets every launch
quit_action = 0; // first option is reseted to 'Quit'
quit_action = 0; // first option resets to 'Save & 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;
@ -4118,7 +4073,7 @@ static void Menu_loop(void) {
reset_flag = 1;
status = STATUS_RSET;
} else {
// save & quit is managed by quitting procedure
// 'save & quit' or quit is managed by quitting procedure
status = STATUS_QUIT;
quit = 1; // TODO: tmp?
}
@ -4457,7 +4412,7 @@ int main(int argc , char* argv[]) {
Menu_quit();
finish:
if (quit_action==1) State_autosave();
if (quit_action==0) State_autosave();
Game_close();
Core_unload();

View file

@ -114,6 +114,7 @@ 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;
@ -125,6 +126,7 @@ 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;
@ -133,6 +135,7 @@ 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);
}
@ -1299,6 +1302,37 @@ 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;
@ -1536,6 +1570,7 @@ 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;
@ -1544,6 +1579,23 @@ int main (int argc, char *argv[]) {
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];

15
src/toggle_adb/makefile Normal file
View file

@ -0,0 +1,15 @@
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

View file

@ -0,0 +1,67 @@
#include <stdio.h>
#include <time.h>
#include <unistd.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <msettings.h>
#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;
}