diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index cb6695b871999c257f372a084107d321e04d6b30..6634a467940926695cf07a3f0e4da74ef8a631a2 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -4,6 +4,11 @@ This file will be processed and will be distributed with Recalbox Releases. The text, located between the first `## Version XXX` and the second one, will appear as release notes for end user on a Recalbox upgrade. +# Version 10.0 +- Avoid 50Hz mode for pal games on JAMMA +- Fix Midway resolutions on CRT + + ## Version 9.2.1-Pulstar ### Fixes diff --git a/board/recalbox/fsoverlay/etc/init.d/S11share b/board/recalbox/fsoverlay/etc/init.d/S11share index 396d8e3db15c0a3ecd40c5fcbdca244de89a2bf5..01c5c8dac8f0afdeaade276b889aa7e4e7a6e02d 100755 --- a/board/recalbox/fsoverlay/etc/init.d/S11share +++ b/board/recalbox/fsoverlay/etc/init.d/S11share @@ -79,6 +79,7 @@ createMissingPartitions() { fixGPTAltHeader "$bootDevice" alignSize=$((1024 * 1024)) # Align partition on megabyte overlayPartitionSize=$((1024 * 1024 * 1024)) # OVERLAY partition will be 1GB + freeSize=$((2 * 1024 * 1024 * 1024)) # FreeSize will be 2GB defaultPartedOptions=("-m" "-s" "-a" "optimal" "${bootDevice}" "unit" "b") partitionType=$(/recalbox/scripts/recalbox-part.sh type "${bootPartition}") @@ -102,9 +103,9 @@ createMissingPartitions() { # Determine new partitions boundaries sharePartitionStart=$(alignToUpperBlock "${freeSpaceStart}") - overlayPartitionStart=$(alignToUpperBlock $(( freeSpaceEnd - overlayPartitionSize ))) + overlayPartitionStart=$(alignToUpperBlock $(( freeSpaceEnd - freeSize - overlayPartitionSize ))) sharePartitionEnd=$(( overlayPartitionStart - alignSize )) # keep 1MB between partitions, since using `${overlayPartitionStart} - 1` can actually fail on some disks, despite being strictly correct - overlayPartitionEnd="100%" + overlayPartitionEnd=$(alignToUpperBlock $(( overlayPartitionStart + overlayPartitionSize ))) # Create SHARE partition and filesystem parted "${defaultPartedOptions[@]}" mkpart "${partitionType}" ntfs "${sharePartitionStart}" "${sharePartitionEnd}" # ExFAT uses the same type code than NTFS (0x07) in MBR partition tables diff --git a/package/recalbox-crt/crt-config/arcade_games.txt b/package/recalbox-crt/crt-config/arcade_games.txt index 93d48b9a8a1930d227db4072412504bde86a24c2..cd3ce072901968572af78abd706b4d578a29dce7 100644 --- a/package/recalbox-crt/crt-config/arcade_games.txt +++ b/package/recalbox-crt/crt-config/arcade_games.txt @@ -3214,12 +3214,12 @@ higemaru,mame2010,arcade:224@60.000000,0,0,0 highsplt,mame2010,arcade:224@60.000000,0,0,1 highsplta,mame2010,arcade:224@60.000000,0,0,1 highspltb,mame2010,arcade:224@60.000000,0,0,1 -hiimpact,mame2010,arcade:253@54.815170,0,0,0 -hiimpact1,mame2010,arcade:253@54.815170,0,0,0 -hiimpact2,mame2010,arcade:253@54.815170,0,0,0 -hiimpact3,mame2010,arcade:253@54.815170,0,0,0 -hiimpact4,mame2010,arcade:253@54.815170,0,0,0 -hiimpactp,mame2010,arcade:253@54.815170,0,0,0 +hiimpact,mame2010,arcade:253@54.815170,0,256,0 +hiimpact1,mame2010,arcade:253@54.815170,0,256,0 +hiimpact2,mame2010,arcade:253@54.815170,0,256,0 +hiimpact3,mame2010,arcade:253@54.815170,0,256,0 +hiimpact4,mame2010,arcade:253@54.815170,0,256,0 +hiimpactp,mame2010,arcade:253@54.815170,0,256,0 hikaru,mame2010,arcade:480@60.000000,0,0,0 himesiki,mame2010,arcade:192@60.000000,0,0,1 hipai,mame2010,arcade:240@60.000000,0,0,0 @@ -3516,9 +3516,9 @@ jchan2,mame2010,arcade:240@60.000000,0,0,0 jclub2,mame2010,arcade:240@60.000000,0,0,0 jclub2o,mame2010,arcade:240@60.000000,0,0,0 jcross,mame2010,arcade:216@60.000000,0,0,1 -jdredd,mame2010,arcade:480@60.000000,0,0,0 -jdreddb,mame2010,arcade:480@60.000000,0,0,0 -jdreddp,mame2010,arcade:253@54.815170,0,0,0 +jdredd,mame2010,arcade:480@60.000000,0,256,0 +jdreddb,mame2010,arcade:480@60.000000,0,256,0 +jdreddp,mame2010,arcade:253@54.815170,0,256,0 jedi,mame2010,arcade:240@60.000000,0,0,0 jgakuen,mame2010,arcade:480@60.000000,0,0,0 jigkmgri,mame2010,arcade:224@60.000000,0,0,0 @@ -4498,29 +4498,29 @@ mjyougo,mame2010,arcade:224@59.000000,0,0,0 mjyuugi,mame2010,arcade:240@60.000000,0,0,0 mjyuugia,mame2010,arcade:240@60.000000,0,0,0 mjzoomin,mame2010,arcade:224@60.000000,0,0,0 -mk,mame2010,arcade:253@54.815170,0,0,0 -mk2,mame2010,arcade:253@54.815170,0,0,0 -mk2chal,mame2010,arcade:253@54.815170,0,0,0 -mk2r14,mame2010,arcade:253@54.815170,0,0,0 -mk2r21,mame2010,arcade:253@54.815170,0,0,0 -mk2r30,mame2010,arcade:253@54.815170,0,0,0 -mk2r31e,mame2010,arcade:253@54.815170,0,0,0 -mk2r32,mame2010,arcade:253@54.815170,0,0,0 -mk2r42,mame2010,arcade:253@54.815170,0,0,0 -mk2r91,mame2010,arcade:253@54.815170,0,0,0 -mk3,mame2010,arcade:253@54.815170,0,0,0 -mk3ghw,mame2010,arcade:224@60.000000,0,0,0 -mk3p40,mame2010,arcade:253@54.815170,0,0,0 -mk3r10,mame2010,arcade:253@54.815170,0,0,0 -mk3r20,mame2010,arcade:253@54.815170,0,0,0 -mk4,mame2010,arcade:256@56.665468,0,0,0 -mk4a,mame2010,arcade:256@56.665468,0,0,0 -mk4b,mame2010,arcade:256@56.665468,0,0,0 +mk,mame2010,arcade:253@54.815170,0,256,0 +mk2,mame2010,arcade:253@54.815170,0,256,0 +mk2chal,mame2010,arcade:253@54.815170,0,256,0 +mk2r14,mame2010,arcade:253@54.815170,0,256,0 +mk2r21,mame2010,arcade:253@54.815170,0,256,0 +mk2r30,mame2010,arcade:253@54.815170,0,256,0 +mk2r31e,mame2010,arcade:253@54.815170,0,256,0 +mk2r32,mame2010,arcade:253@54.815170,0,256,0 +mk2r42,mame2010,arcade:253@54.815170,0,256,0 +mk2r91,mame2010,arcade:253@54.815170,0,256,0 +mk3,mame2010,arcade:253@54.815170,0,256,0 +mk3ghw,mame2010,arcade:224@60.000000,0,256,0 +mk3p40,mame2010,arcade:253@54.815170,0,256,0 +mk3r10,mame2010,arcade:253@54.815170,0,256,0 +mk3r20,mame2010,arcade:253@54.815170,0,256,0 +mk4,mame2010,arcade:256@56.665468,0,256,0 +mk4a,mame2010,arcade:256@56.665468,0,256,0 +mk4b,mame2010,arcade:256@56.665468,0,256,0 mkeibaou,mame2010,arcade:240@60.000000,0,0,0 -mkla1,mame2010,arcade:253@54.815170,0,0,0 -mkla2,mame2010,arcade:253@54.815170,0,0,0 -mkla3,mame2010,arcade:253@54.815170,0,0,0 -mkla4,mame2010,arcade:253@54.815170,0,0,0 +mkla1,mame2010,arcade:253@54.815170,0,256,0 +mkla2,mame2010,arcade:253@54.815170,0,256,0 +mkla3,mame2010,arcade:253@54.815170,0,256,0 +mkla4,mame2010,arcade:253@54.815170,0,256,0 mkoiuraa,mame2010,arcade:240@60.000000,0,0,0 mkprot8,mame2010,arcade:253@54.815170,0,0,0 mkprot9,mame2010,arcade:253@54.815170,0,0,0 @@ -4904,13 +4904,13 @@ naughtyba,mame2010,arcade:224@60.000000,0,0,1 naughtybc,mame2010,arcade:224@60.000000,0,0,1 navarone,mame2010,arcade:224@60.606061,0,0,1 nbahangt,mame2010,arcade:253@54.815170,0,0,0 -nbajam,mame2010,arcade:253@54.815170,0,0,0 -nbajamex,mame2010,arcade:480@60.000000,0,0,0 -nbajamr2,mame2010,arcade:253@54.815170,0,0,0 -nbajamt1,mame2010,arcade:253@54.815170,0,0,0 -nbajamt2,mame2010,arcade:253@54.815170,0,0,0 -nbajamt3,mame2010,arcade:253@54.815170,0,0,0 -nbajamte,mame2010,arcade:253@54.815170,0,0,0 +nbajam,mame2010,arcade:253@54.815170,0,256,0 +nbajamex,mame2010,arcade:480@60.000000,0,256,0 +nbajamr2,mame2010,arcade:253@54.815170,0,256,0 +nbajamt1,mame2010,arcade:253@54.815170,0,256,0 +nbajamt2,mame2010,arcade:253@54.815170,0,256,0 +nbajamt3,mame2010,arcade:253@54.815170,0,256,0 +nbajamte,mame2010,arcade:253@54.815170,0,256,0 nbamht,mame2010,arcade:253@54.815170,0,0,0 nbamht1,mame2010,arcade:253@54.815170,0,0,0 nbanfl,mame2010,arcade:480@57.000000,0,0,0 @@ -6848,10 +6848,10 @@ sheriff,mame2010,arcade:224@60.000000,0,0,1 shienryu,mame2010,arcade:224@59.828244,0,0,1 shikgam2,mame2010,arcade:480@60.000000,0,0,1 shikigam,mame2010,arcade:480@60.000000,0,0,1 -shimpact,mame2010,arcade:253@54.815170,0,0,0 -shimpactp4,mame2010,arcade:253@54.815170,0,0,0 -shimpactp5,mame2010,arcade:253@54.815170,0,0,0 -shimpactp6,mame2010,arcade:253@54.815170,0,0,0 +shimpact,mame2010,arcade:253@54.815170,0,256,0 +shimpactp4,mame2010,arcade:253@54.815170,0,256,0 +shimpactp5,mame2010,arcade:253@54.815170,0,256,0 +shimpactp6,mame2010,arcade:253@54.815170,0,256,0 shinobi,mame2010,arcade:224@60.000000,0,0,0 shinobi1,mame2010,arcade:224@60.000000,0,0,0 shinobi2,mame2010,arcade:224@60.054389,0,0,0 @@ -7030,11 +7030,11 @@ slyspy,mame2010,arcade:240@57.410000,0,0,0 slyspy2,mame2010,arcade:240@57.410000,0,0,0 smarinef,mame2010,arcade:480@60.000000,0,0,0 smash,mame2010,arcade:256@57.000000,0,0,0 -smashtv,mame2010,arcade:253@54.815170,0,0,0 -smashtv3,mame2010,arcade:253@54.815170,0,0,0 -smashtv4,mame2010,arcade:253@54.815170,0,0,0 -smashtv5,mame2010,arcade:253@54.815170,0,0,0 -smashtv6,mame2010,arcade:253@54.815170,0,0,0 +smashtv,mame2010,arcade:253@54.815170,0,256,0 +smashtv3,mame2010,arcade:253@54.815170,0,256,0 +smashtv4,mame2010,arcade:253@54.815170,0,256,0 +smashtv5,mame2010,arcade:253@54.815170,0,256,0 +smashtv6,mame2010,arcade:253@54.815170,0,256,0 smbomb,mame2010,arcade:224@59.629403,0,0,0 smbombr1,mame2010,arcade:224@59.629403,0,0,0 smgolf,mame2010,arcade:240@60.000000,0,0,0 @@ -7511,7 +7511,7 @@ strikeit2d,mame2010,arcade:296@50.000000,0,0,0 strikeitd,mame2010,arcade:296@50.000000,0,0,0 striv,mame2010,arcade:224@60.000000,0,0,1 strkfgtr,mame2010,arcade:224@60.000000,0,0,0 -strkforc,mame2010,arcade:253@54.815170,0,0,0 +strkforc,mame2010,arcade:253@54.815170,0,256,0 strkzone,mame2010,arcade:240@60.000000,0,0,0 strnskil,mame2010,arcade:224@60.000000,0,0,0 strongx,mame2010,arcade:224@60.606061,0,0,0 @@ -7786,10 +7786,10 @@ terabrst,mame2010,arcade:384@60.000000,0,0,0 terabrst,mame2010,arcade:384@60.000000,0,0,0 terabrsta,mame2010,arcade:384@60.000000,0,0,0 terabrsta,mame2010,arcade:384@60.000000,0,0,0 -term2,mame2010,arcade:253@54.815170,0,0,0 -term2la1,mame2010,arcade:253@54.815170,0,0,0 -term2la2,mame2010,arcade:253@54.815170,0,0,0 -term2la3,mame2010,arcade:253@54.815170,0,0,0 +term2,mame2010,arcade:253@54.815170,0,256,0 +term2la1,mame2010,arcade:253@54.815170,0,256,0 +term2la2,mame2010,arcade:253@54.815170,0,256,0 +term2la3,mame2010,arcade:253@54.815170,0,256,0 terracre,mame2010,arcade:224@60.000000,0,0,1 terracrea,mame2010,arcade:224@60.000000,0,0,1 terracren,mame2010,arcade:224@60.000000,0,0,1 @@ -8041,8 +8041,8 @@ tornbase,mame2010,arcade:224@59.541985,0,0,0 tortufam,mame2010,arcade:232@60.000000,0,0,0 torus,mame2010,arcade:224@54.000000,0,0,1 toryumon,mame2010,arcade:224@60.054389,0,0,0 -totcarn,mame2010,arcade:253@54.815170,0,0,0 -totcarnp,mame2010,arcade:253@54.815170,0,0,0 +totcarn,mame2010,arcade:253@54.815170,0,256,0 +totcarnp,mame2010,arcade:253@54.815170,0,256,0 totd,mame2010,arcade:480@60.000000,0,0,0 totlvice,mame2010,arcade:384@60.000000,0,0,0 totlvicj,mame2010,arcade:384@60.000000,0,0,0 @@ -8112,11 +8112,11 @@ triviayp,mame2010,arcade:240@59.185606,0,0,0 trivquiz,mame2010,arcade:240@59.992284,0,0,0 trizeal,mame2010,arcade:480@60.000000,0,0,1 troangel,mame2010,arcade:240@57.000000,0,0,0 -trog,mame2010,arcade:253@54.815170,0,0,0 -trog3,mame2010,arcade:253@54.815170,0,0,0 -trog4,mame2010,arcade:253@54.815170,0,0,0 -trogpa4,mame2010,arcade:253@54.815170,0,0,0 -trogpa6,mame2010,arcade:253@54.815170,0,0,0 +trog,mame2010,arcade:253@54.815170,0,256,0 +trog3,mame2010,arcade:253@54.815170,0,256,0 +trog4,mame2010,arcade:253@54.815170,0,256,0 +trogpa4,mame2010,arcade:253@54.815170,0,256,0 +trogpa6,mame2010,arcade:253@54.815170,0,256,0 trojan,mame2010,arcade:240@60.000000,0,0,0 trojanj,mame2010,arcade:240@60.000000,0,0,0 trojanr,mame2010,arcade:240@60.000000,0,0,0 @@ -16313,7 +16313,7 @@ hharry,mame2003,arcade:256@55.000000,0,0,0 hharryu,mame2003,arcade:256@55.000000,0,0,0 hidnctch,mame2003,arcade:256@60.000000,0,0,0 higemaru,mame2003,arcade:224@60.000000,0,0,0 -hiimpact,mame2003,arcade:256@53.204948,0,0,0 +hiimpact,mame2003,arcade:256@53.204948,0,256,0 hippodrm,mame2003,arcade:240@57.410000,0,0,0 hiryuken,mame2003,arcade:224@60.000000,0,0,0 hishouza,mame2003,arcade:240@54.877857,0,0,1 @@ -16459,9 +16459,9 @@ janjans1,mame2003,arcade:240@60.000000,0,0,0 janshin,mame2003,arcade:224@60.000000,0,0,0 jchan,mame2003,arcade:512@60.000000,0,0,0 jcross,mame2003,arcade:224@61.000000,0,0,1 -jdredd,mame2003,arcade:480@60.000000,0,0,0 -jdreddb,mame2003,arcade:480@60.000000,0,0,0 -jdreddp,mame2003,arcade:254@53.204948,0,0,0 +jdredd,mame2003,arcade:480@60.000000,0,256,0 +jdreddb,mame2003,arcade:480@60.000000,0,256,0 +jdreddp,mame2003,arcade:254@53.204948,0,256,0 jedi,mame2003,arcade:240@60.000000,0,0,0 jgakuen,mame2003,arcade:480@60.000000,0,0,0 jigkmgri,mame2003,arcade:224@60.000000,0,0,0 @@ -16950,24 +16950,24 @@ mjyougo,mame2003,arcade:224@59.000000,0,0,0 mjyuugi,mame2003,arcade:240@60.000000,0,0,0 mjyuugia,mame2003,arcade:240@60.000000,0,0,0 mjzoomin,mame2003,arcade:232@60.000000,0,0,0 -mk,mame2003,arcade:254@53.204948,0,0,0 -mk2,mame2003,arcade:254@53.204948,0,0,0 -mk2chal,mame2003,arcade:254@53.204948,0,0,0 -mk2r14,mame2003,arcade:254@53.204948,0,0,0 -mk2r21,mame2003,arcade:254@53.204948,0,0,0 -mk2r32,mame2003,arcade:254@53.204948,0,0,0 -mk2r42,mame2003,arcade:254@53.204948,0,0,0 -mk2r91,mame2003,arcade:254@53.204948,0,0,0 -mk3,mame2003,arcade:254@53.204948,0,0,0 -mk3r10,mame2003,arcade:254@53.204948,0,0,0 -mk3r20,mame2003,arcade:254@53.204948,0,0,0 +mk,mame2003,arcade:254@53.204948,0,256,0 +mk2,mame2003,arcade:254@53.204948,0,256,0 +mk2chal,mame2003,arcade:254@53.204948,0,256,0 +mk2r14,mame2003,arcade:254@53.204948,0,256,0 +mk2r21,mame2003,arcade:254@53.204948,0,256,0 +mk2r32,mame2003,arcade:254@53.204948,0,256,0 +mk2r42,mame2003,arcade:254@53.204948,0,256,0 +mk2r91,mame2003,arcade:254@53.204948,0,256,0 +mk3,mame2003,arcade:254@53.204948,0,256,0 +mk3r10,mame2003,arcade:254@53.204948,0,256,0 +mk3r20,mame2003,arcade:254@53.204948,0,256,0 mkeibaou,mame2003,arcade:240@60.000000,0,0,0 -mkla1,mame2003,arcade:254@53.204948,0,0,0 -mkla2,mame2003,arcade:254@53.204948,0,0,0 -mkla3,mame2003,arcade:254@53.204948,0,0,0 -mkla4,mame2003,arcade:254@53.204948,0,0,0 -mkprot9,mame2003,arcade:254@53.204948,0,0,0 -mkr4,mame2003,arcade:254@53.204948,0,0,0 +mkla1,mame2003,arcade:254@53.204948,0,256,0 +mkla2,mame2003,arcade:254@53.204948,0,256,0 +mkla3,mame2003,arcade:254@53.204948,0,256,0 +mkla4,mame2003,arcade:254@53.204948,0,256,0 +mkprot9,mame2003,arcade:254@53.204948,0,256,0 +mkr4,mame2003,arcade:254@53.204948,0,256,0 mladyhtr,mame2003,arcade:240@60.000000,0,0,0 mmatrix,mame2003,arcade:224@59.633331,0,0,0 mmatrixj,mame2003,arcade:224@59.633331,0,0,0 @@ -17160,13 +17160,13 @@ naughtyb,mame2003,arcade:224@60.000000,0,0,1 naughtyc,mame2003,arcade:224@60.000000,0,0,1 navalone,mame2003,arcade:224@60.000000,0,0,1 nbahangt,mame2003,arcade:254@53.204948,0,0,0 -nbajam,mame2003,arcade:254@53.204948,0,0,0 -nbajamex,mame2003,arcade:480@60.000000,0,0,0 -nbajamr2,mame2003,arcade:254@53.204948,0,0,0 -nbajamt1,mame2003,arcade:254@53.204948,0,0,0 -nbajamt2,mame2003,arcade:254@53.204948,0,0,0 -nbajamt3,mame2003,arcade:254@53.204948,0,0,0 -nbajamte,mame2003,arcade:254@53.204948,0,0,0 +nbajam,mame2003,arcade:254@53.204948,0,256,0 +nbajamex,mame2003,arcade:480@60.000000,0,256,0 +nbajamr2,mame2003,arcade:254@53.204948,0,256,0 +nbajamt1,mame2003,arcade:254@53.204948,0,256,0 +nbajamt2,mame2003,arcade:254@53.204948,0,256,0 +nbajamt3,mame2003,arcade:254@53.204948,0,256,0 +nbajamte,mame2003,arcade:254@53.204948,0,256,0 nbamaxht,mame2003,arcade:254@53.204948,0,0,0 nbbatman,mame2003,arcade:240@60.000000,0,0,0 ncombat,mame2003,arcade:224@60.000000,0,0,0 @@ -18171,7 +18171,7 @@ shdancrj,mame2003,arcade:224@60.000000,0,0,0 sheriff,mame2003,arcade:224@60.000000,0,0,1 shienryu,mame2003,arcade:480@60.000000,0,0,1 shimpacp,mame2003,arcade:256@53.204948,0,0,0 -shimpact,mame2003,arcade:256@53.204948,0,0,0 +shimpact,mame2003,arcade:256@53.204948,0,256,0 shinobi,mame2003,arcade:224@60.000000,0,0,0 shinobia,mame2003,arcade:224@60.000000,0,0,0 shinobib,mame2003,arcade:224@60.000000,0,0,0 @@ -18280,10 +18280,10 @@ slithera,mame2003,arcade:256@60.000000,0,0,1 slmdunkj,mame2003,arcade:224@60.000000,0,0,0 slyspy,mame2003,arcade:240@57.410000,0,0,0 slyspy2,mame2003,arcade:240@57.410000,0,0,0 -smashtv,mame2003,arcade:256@53.204948,0,0,0 -smashtv4,mame2003,arcade:256@53.204948,0,0,0 -smashtv5,mame2003,arcade:256@53.204948,0,0,0 -smashtv6,mame2003,arcade:256@53.204948,0,0,0 +smashtv,mame2003,arcade:256@53.204948,0,256,0 +smashtv4,mame2003,arcade:256@53.204948,0,256,0 +smashtv5,mame2003,arcade:256@53.204948,0,256,0 +smashtv6,mame2003,arcade:256@53.204948,0,256,0 smbomb,mame2003,arcade:224@59.633331,0,0,0 smbombr1,mame2003,arcade:224@59.633331,0,0,0 smgolf,mame2003,arcade:240@60.000000,0,0,0 @@ -18561,7 +18561,7 @@ striderj,mame2003,arcade:224@60.000000,0,0,0 stridr2a,mame2003,arcade:480@60.000000,0,0,0 stridrja,mame2003,arcade:224@60.000000,0,0,0 stridrua,mame2003,arcade:224@60.000000,0,0,0 -strkforc,mame2003,arcade:255@53.204948,0,0,0 +strkforc,mame2003,arcade:255@53.204948,0,256,0 strkzone,mame2003,arcade:240@60.000000,0,0,0 strnskil,mame2003,arcade:224@60.000000,0,0,0 strtheat,mame2003,arcade:224@60.000000,0,0,1 @@ -18694,9 +18694,9 @@ teljan,mame2003,arcade:240@60.000000,0,0,0 telmahjn,mame2003,arcade:240@60.000000,0,0,1 tengai,mame2003,arcade:224@59.299999,0,0,0 teplus2j,mame2003,arcade:224@60.000000,0,0,0 -term2,mame2003,arcade:255@53.204948,0,0,0 -term2la1,mame2003,arcade:255@53.204948,0,0,0 -term2la2,mame2003,arcade:255@53.204948,0,0,0 +term2,mame2003,arcade:255@53.204948,0,256,0 +term2la1,mame2003,arcade:255@53.204948,0,256,0 +term2la2,mame2003,arcade:255@53.204948,0,256,0 terracra,mame2003,arcade:224@60.000000,0,0,1 terracrb,mame2003,arcade:224@60.000000,0,0,1 terracre,mame2003,arcade:224@60.000000,0,0,1 @@ -18831,8 +18831,8 @@ toratora,mame2003,arcade:240@60.000000,0,0,1 toride2g,mame2003,arcade:224@60.000000,0,0,0 tornbase,mame2003,arcade:224@60.000000,0,0,0 toryumon,mame2003,arcade:224@60.000000,0,0,0 -totcarn,mame2003,arcade:256@53.204948,0,0,0 -totcarnp,mame2003,arcade:256@53.204948,0,0,0 +totcarn,mame2003,arcade:256@53.204948,0,256,0 +totcarnp,mame2003,arcade:256@53.204948,0,256,0 touchgo,mame2003,arcade:240@59.099998,0,0,0 tourtab2,mame2003,arcade:200@60.000000,0,0,0 tourtabl,mame2003,arcade:200@60.000000,0,0,0 @@ -18869,10 +18869,10 @@ triviasp,mame2003,arcade:240@60.000000,0,0,0 triviayp,mame2003,arcade:240@60.000000,0,0,0 trivquiz,mame2003,arcade:256@60.000000,0,0,0 troangel,mame2003,arcade:240@57.000000,0,0,0 -trog,mame2003,arcade:256@53.204948,0,0,0 -trog3,mame2003,arcade:256@53.204948,0,0,0 -trogp,mame2003,arcade:256@53.204948,0,0,0 -trogpa6,mame2003,arcade:256@53.204948,0,0,0 +trog,mame2003,arcade:256@53.204948,0,256,0 +trog3,mame2003,arcade:256@53.204948,0,256,0 +trogp,mame2003,arcade:256@53.204948,0,256,0 +trogpa6,mame2003,arcade:256@53.204948,0,256,0 trojan,mame2003,arcade:240@60.000000,0,0,0 trojanj,mame2003,arcade:240@60.000000,0,0,0 trojanr,mame2003,arcade:240@60.000000,0,0,0 @@ -19287,4 +19287,3 @@ gngbla,fbneo,arcade:224@59.590000,0,0,0 ddpsdoj,fbneo,arcade:240@60.000000,0,0,1 espgal2,fbneo,arcade:240@60.000000,0,0,1 smashtv,fbneo,arcade:256@54.744337,0,0,0 -totcarn,fbneo,arcade:256@54.744337,0,0,0 diff --git a/package/recalbox-crt/gf-vienna-heavy.heavy.ttf b/package/recalbox-crt/gf-vienna-heavy.heavy.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f1b1646ec475c3483f2adc51697580f0530464b4 Binary files /dev/null and b/package/recalbox-crt/gf-vienna-heavy.heavy.ttf differ diff --git a/package/recalbox-crt/recalbox-crt.mk b/package/recalbox-crt/recalbox-crt.mk index a025f68195e004d72b3839f63f96b27c1d7101eb..becbb2c8c9bbdddfc415e54b73ad8a8e32b71b56 100644 --- a/package/recalbox-crt/recalbox-crt.mk +++ b/package/recalbox-crt/recalbox-crt.mk @@ -13,6 +13,7 @@ define RECALBOX_CRT_INSTALL_TARGET_CMDS $(INSTALL) -D -m 644 $(RECALBOX_CRT_PKGDIR)/crt-config/recalbox-crt-options.cfg $(BINARIES_DIR)/boot-data/crt/recalbox-crt-options.cfg $(INSTALL) -D -m 644 $(RECALBOX_CRT_PKGDIR)/crt-config/recalbox-crt-options.cfg $(BINARIES_DIR)/boot-data/crt/recalbox-crt-options.cfg.defaults $(INSTALL) -D -m 0744 $(RECALBOX_CRT_PKGDIR)/S13crt $(TARGET_DIR)/etc/init.d/ + $(INSTALL) -D -m 0744 $(RECALBOX_CRT_PKGDIR)/gf-vienna-heavy.heavy.ttf $(TARGET_DIR)/usr/share/fonts/truetype/ mkdir -p $(TARGET_DIR)/recalbox/system/configs/crt/ mkdir -p $(TARGET_DIR)/recalbox/share_init/system/configs/crt/ echo "Place your extra CRT configurations in this directory." > $(TARGET_DIR)/recalbox/share_init/system/configs/crt/README.txt diff --git a/projects/configgen/configgen/Emulator.py b/projects/configgen/configgen/Emulator.py index 3409afd51bbfceede7da6a8ab51af839971bd632..4d18b11cf5e99783b5ad94a739923fc7ed91e862 100644 --- a/projects/configgen/configgen/Emulator.py +++ b/projects/configgen/configgen/Emulator.py @@ -421,6 +421,10 @@ class Emulator: @property def CRTVideoStandard(self) -> CRTVideoStandard: return self._crtvideostandard + @CRTVideoStandard.setter + def CRTVideoStandard(self, value): + self._crtvideostandard = value + @property def CRTRegion(self) -> CRTRegion: return self._crtregion diff --git a/projects/configgen/configgen/generators/libretro/crt/LibretroConfigCRT.py b/projects/configgen/configgen/generators/libretro/crt/LibretroConfigCRT.py index 27d4f609460c88343f490958edb5c0e878ecaafc..7477efb2beb0bf2951a9c998d981e0ee02e96d70 100644 --- a/projects/configgen/configgen/generators/libretro/crt/LibretroConfigCRT.py +++ b/projects/configgen/configgen/generators/libretro/crt/LibretroConfigCRT.py @@ -23,6 +23,8 @@ class LibretroConfigCRT: arcade_cores: [str] = ["fbneo", "mame2003", "mame2010", "mame2003_plus", "mame2015", "mame"] + standard_font = '"/usr/share/fonts/truetype/ubuntu_condensed.ttf"' + wide_font = '"/usr/share/fonts/truetype/gf-vienna-heavy.heavy.ttf"' def createConfigForMode(self, region: str, mode: Mode, viewport_width: int, viewport_height: int, game_is_tate: int, system_rotation: Rotation, k31:bool=False, forceFullAndIntegerScale:bool=False) -> \ typing.Dict[ str, typing.Any]: @@ -41,13 +43,13 @@ class LibretroConfigCRT: extension = ["_ntsc", "_pal"] if region == "all" else ["_" + region] - if ((system_rotation.value == Rotation.none or system_rotation.value == Rotation.upsidedown) and not game_is_tate) \ or ((system_rotation.value == Rotation.left or system_rotation.value == Rotation.right) and game_is_tate): # we are in a yoko game on a yoko screen, or tate game on tate screen - if forceFullAndIntegerScale: - config["aspect_ratio_index"] = '24' - config["video_scale_integer"] = '"true"' + if forceFullAndIntegerScale : + if k31 or (viewport_height == 0 or viewport_height == mode.height): + config["aspect_ratio_index"] = '24' + config["video_scale_integer"] = '"true"' if k31 and viewport_height > 480: config["video_scale_integer_overscale"] = '"true"' @@ -101,6 +103,10 @@ class LibretroConfigCRT: # For arcade, the viewport info by region seems not selected sometimes on retroarch so we set default values config["custom_viewport_x"] = final_x config["custom_viewport_y"] = final_y + + # Superrez is at least 6x width but we do not take risk + if mode.width > 3 * mode.height: + config["video_font_path"] = self.wide_font return config def select_width(self, system: Emulator, mode_viewport_width: int, mode: Mode, gameIsTate: int = 0): @@ -274,11 +280,10 @@ class LibretroConfigCRT: "video_smooth": '"false"', "video_allow_rotate": '"true"', "video_driver": '"gl"', - "video_scale_integer_overscale": '"false"' + "video_scale_integer_overscale": '"false"', + "video_font_path": self.standard_font, + "video_font_enable": '"true"' } - if system.CRTAdapter == CRTAdapter.RECALBOXRGBJAMMA: - config["video_font_enable"] = '"false"' - core: str = system.Core default: bool = True game_name: str = Path(rom).stem @@ -305,6 +310,8 @@ class LibretroConfigCRT: config["video_scale_integer_overscale"] = '"true"' if system.CRTAdapter == CRTAdapter.RECALBOXRGBJAMMA: forceIntergerScale = True + # Always force ntsc, because arcade monitors are 60HZ only + system.CRTVideoStandard = CRTVideoStandard.NTSC # Arcade if core in self.arcade_cores and system.Name != "neogeocd": diff --git a/projects/configgen/tests/generators/libretro/crt/LibretroConfigCRT_test.py b/projects/configgen/tests/generators/libretro/crt/LibretroConfigCRT_test.py index 87bdf2864b4694c31558cc380870b2ba4624ceba..eab21619274b61c1fe832433a6b24c684a58fd4c 100644 --- a/projects/configgen/tests/generators/libretro/crt/LibretroConfigCRT_test.py +++ b/projects/configgen/tests/generators/libretro/crt/LibretroConfigCRT_test.py @@ -1154,8 +1154,8 @@ def test_given_mk_clone_find_mk_mode(mocker): def test_given_any_yoko_game_and_jamma_then_return_fullscreen_ratio_and_integer_scale(mocker): givenThoseFiles(mocker, { - ARCADE_TXT: "mk,fbneo,arcade:254@54.706840,0,256,0", - MODES_TXT: "arcade:254@54.706840,1920 1 80 184 312 254 1 7 3 22 0 0 0 54 0 39052806 1,54.706840\ndefault:ntsc:240@60,1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1,60" + ARCADE_TXT: "ffight,fbneo,arcade:224@59.637405,0,0,0", + MODES_TXT: "arcade:224@59.637405,1920 1 80 184 312 224 1 10 3 25 0 0 0 59 0 39000000 1,59.637405\ndefault:ntsc:240@60,1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1,60" }) emulator = configureForCrt( Emulator(name='fbneo', videoMode='1920x1080', ratio='auto', emulator='libretro', core='fbneo'), @@ -1163,7 +1163,7 @@ def test_given_any_yoko_game_and_jamma_then_return_fullscreen_ratio_and_integer_ crtscreentype="15kHz", crtadaptor="recalboxrgbjamma") libretro_config = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter()).createConfigFor(emulator, - "/recalbox/share/roms/fbneo/mkyturbo.zip") + "/recalbox/share/roms/fbneo/galaxian.zip") assert libretro_config["aspect_ratio_index"] == "24" assert libretro_config["video_scale_integer"] == '"true"' @@ -1319,7 +1319,7 @@ def test_given_arcade_256p_game_and_31k_progressive_mode_then_return_480pmode_an emulator = configureForCrt(system_mame, crtresolutiontype="progressive", crtscreentype="31kHz", crtadaptor="recalboxrgbjamma") config_lines = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter(), False).createConfigFor(emulator, "mk.zip") - + assert config_lines["aspect_ratio_index"] == '24' assert config_lines["video_refresh_rate_ntsc"] == '"60"' assert config_lines["crt_switch_timings_ntsc"] == '"1920 1 48 208 256 480 1 15 3 26 0 0 0 60 0 76462080 1"' assert config_lines["custom_viewport_width_ntsc"] == 1920 @@ -1344,3 +1344,68 @@ def test_given_playstation_game_then_return_interger_scale_overscale(mocker): assert config_lines["custom_viewport_height_ntsc"] == 239 assert config_lines["video_scale_integer"] == '"true"' assert config_lines["video_scale_integer_overscale"] == '"true"' + +def test_given_jamma_then_dont_use_50Hz_modes_on_snes(mocker): + givenThoseFiles(mocker, { + SYSTEMS_TXT: "snes,snes9x,pal,15kHz,progressive,snes:pal:240@50p,0,0\nsnes,snes9x,ntsc,15kHz,progressive,snes:ntsc:224@60p,0,0", + MODES_TXT: "snes:ntsc:224@60p,1920 1 78 192 210 224 1 3 3 16 0 0 0 60 0 37730000 1,60.1\nsnes:pal:240@50p,1920 1 78 192 210 240 1 3 3 16 0 0 0 50 0 37730000 1,50.1"}) + + snes = configureForCrt( + Emulator(name='snes', videoMode='1920x1080', ratio='auto', emulator='libretro', core='snes9x'), + crtresolutiontype="progressive", crtvideostandard="pal", + crtscreentype="15kHz", crtadaptor="recalboxrgbjamma") + config_lines = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter(), False).createConfigFor(snes, + "ff6.zip") + assert config_lines["crt_switch_timings_pal"] == '"1920 1 78 192 210 224 1 3 3 16 0 0 0 60 0 37730000 1"' + assert config_lines["crt_switch_timings_ntsc"] == '"1920 1 78 192 210 224 1 3 3 16 0 0 0 60 0 37730000 1"' + assert config_lines["video_refresh_rate_pal"] == '"60.1"' + assert config_lines["video_refresh_rate_ntsc"] == '"60.1"' + +def test_given_jamma_then_use_60Hz_modes_on_console_with_only_50HZ(mocker): + givenThoseFiles(mocker, { + SYSTEMS_TXT: "amigacd32,uae4arm,all,15kHz,progressive,standard:pal:240@50,0,0", + MODES_TXT: "standard:pal:240@50,1920 1 80 184 312 240 1 28 3 42 0 0 0 50 0 39062400 1,50\ndefault:ntsc:240@60,1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1,60"}) + + snes = configureForCrt( + Emulator(name='amigacd32', videoMode='1920x1080', ratio='auto', emulator='libretro', core='uae4arm'), + crtresolutiontype="progressive", crtvideostandard="pal", + crtscreentype="15kHz", crtadaptor="recalboxrgbjamma") + config_lines = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter(), False).createConfigFor(snes, + "gamez.zip") + assert config_lines["crt_switch_timings_pal"] == '"1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1"' + assert config_lines["crt_switch_timings_ntsc"] == '"1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1"' + assert config_lines["video_refresh_rate_pal"] == '"60"' + assert config_lines["video_refresh_rate_ntsc"] == '"60"' + +def test_given_superrez_mode_then_set_wide_font(mocker): + givenThoseFiles(mocker, { + SYSTEMS_TXT: "psx,swanstation,ntsc,15kHz,progressive,psx@60.0988,0,0", + MODES_TXT: "psx@60.0988,1920 1 80 184 312 239 1 1 3 16 0 0 0 60 0 39001717 1,60.0988" + }) + + psx = configureForCrt( + Emulator(name='psx', videoMode='1920x1080', ratio='auto', emulator='libretro', core='swanstation'), + crtresolutiontype="progressive", crtvideostandard="auto", + crtscreentype="15kHz") + config_lines = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter(), False).createConfigFor(psx, + "ff7.chd") + assert config_lines["video_font_path"] == '"/usr/share/fonts/truetype/gf-vienna-heavy.heavy.ttf"' + assert config_lines["video_font_enable"] == '"true"' + + +def test_given_mk_then_do_not_use_fullscale_on_rgbjamma(mocker): + givenThoseFiles(mocker, { + ARCADE_TXT: "mk,fbneo,arcade:254@54.706840,0,256,0", + MODES_TXT: "arcade:254@54.706840,1920 1 80 184 312 254 1 7 3 22 0 0 0 54 0 39052806 1,54.706840\ndefault:ntsc:240@60,1920 1 80 184 312 240 1 1 3 16 0 0 0 60 0 38937600 1,60" + }) + emulator = configureForCrt( + Emulator(name='fbneo', videoMode='1920x1080', ratio='auto', emulator='libretro', core='fbneo'), + crtresolutiontype="progressive", crtvideostandard="ntsc", crtadaptor="recalboxrgbjamma", + crtscreentype="15kHz") + + libretro_config = LibretroConfigCRT(CRTConfigParser(), CRTModeOffsetter()).createConfigFor(emulator, + "/recalbox/share/roms/fbneo/mkyturbo.zip") + + assert libretro_config["aspect_ratio_index"] == '23' + assert libretro_config["crt_switch_timings_ntsc"] == '"1920 1 80 184 312 254 1 7 3 22 0 0 0 54 0 39052806 1"' + assert libretro_config["custom_viewport_height_ntsc"] == 256