rhyddhau vita2hos: Rhedeg gemau PS Vita ymlaen Nintendo Switch gallai ddod yn realiti yn fuan

Mae datblygwr hynafol golygfa Vita xerpi wedi rhyddhau vita2hos (Vita i Horizon OS), llyfrgell ryngwyneb sy’n caniatáu rhedeg gweithredoedd gweithredadwy Vita ar y Nintendo Switch.

Mae hyn yn ei gyfnod datblygu cynnar iawn, ac mae’r datganiad cyntaf hwn ond yn gweithio gyda meddalwedd cartref syml fel y “sampl ciwb” a ddarperir yn y homebrew Vita SDK. (fideo isod), ond gallai hyn yn y pen draw yn caniatáu i redeg Gemau Vita ar y Nintendo Switchperfformiad cyflymder llawn tebygol allan o’r blwch.

Beth yw pwrpas Vita2hos Nintendo Switch

Mae Vita2hos yn “haen gyfieithu”, sef API sy’n ailgyfeirio galwadau arferol Vita i Brodorol Switch cyfatebol.

Mewn geiriau eraill, nid yw’n “efelychydd” yn yr ystyr dechnegol, gan nad yw’n ceisio dynwared y Vita CPU/GPU, ond yn hytrach mae’n ailgyfeirio llyfrgelloedd â brodorol Switch cymheiriaid. Mae hyn yn debyg iawn i’r hyn y mae Wine yn ei wneud ar gyfer rhedeg Windows ar Linux, neu i’r hyn y mae rhai porthladdoedd gêm Android diweddar ar vita wedi bod yn ei wneud. (Ac am yr hyn sy’n werth, yn debyg i’r hyn yr oeddem yn ei wneud gyda HBL/VHBL PSP mewn rhai achosion pan nad oedd modd cyrchu rhai modiwlau penodol)

Yn ôl vita2hos readme, mae gweithredoedd gweithredadwy Vita yn seiliedig ar ARM7, a gellir eu rhedeg yn frodorol ar y Switch’s ARM8 prosesydd. Mae hyn yn golygu bod y cod deuaidd yn gyffredinol yn cael ei ddehongli yr un fath, ac felly mae nid oes angen efelychu’r Vita CPU ymlaen Switch trwy ail-grynhoi deuaidd. Mae’r arferion o fodiwlau llwytho gan y gêm fodd bynnag, angen cyfatebol brodorol ar y Switchac mae angen vita2hos i “ailgyfeirio” y swyddogaeth, weithiau gyda newidiadau ychwanegol ar gyfer cydnawsedd.

Gellir rhedeg gweithredoedd gweithredadwy PlayStation Vita (ARMv7 CPU) yn frodorol ymlaen Nintendo Switch CPU ARMv8 yn y modd gweithredu 32-bit.

Wrth lwytho gweithredadwy PlayStation Vita, mae vita2hos yn ailgyfeirio’r mewnforion modiwl o weithredadwy i neidio i arferion sy’n gweithredu’r un ymddygiad, trwy ddefnyddio gwasanaethau Horizon OS brodorol, fel yr un a ddatgelwyd gan fodiwlau gwreiddiol PlayStation Vita OS.

Enghraifft syml o’r cod ffynhonnell yw’r swyddogaeth creu edau:

SceUID sceKernelCreateThread(const char *name, SceKernelThreadEntry entry, int initPriority,
SceSize stackSize, SceUInt attr, int cpuAffinityMask,
const SceKernelThreadOptParam *option)
{
    return create_thread(name, entry, initPriority, stackSize);
}

Mae hyn yn trosi trefn Vita eithaf cyffredin, yn rhywbeth a fydd yn gweithio ar y Switch. Sylwch sut mae rhai o baramedrau’r swyddogaeth (fel cpuAffinityMask) yn cael eu gollwng. Mae hyn yn golygu na fydd y swyddogaeth bob amser yn cyfateb i 100% ag un y Vita, ond gallai’r math hwnnw o frasamcan fod yn ddigon i redeg y mwyafrif o gemau.

Anfanteision dilyn llwybr o’r fath yw bod y canlyniadau (i ddechrau o leiaf) yn mynd i fod yn frasamcan o sut mae’r Vita yn ymddwyn. Mewn llawer o achosion gallai hyn fod yn ddigon, ond ar gyfer rhai gemau gallai hyn arwain at glitches, swyddogaeth ar goll (er enghraifft dim sain cyn belled â ee nad yw’r llyfrgell mp3 wedi’i “chyfieithu’n iawn”), neu’n syml nad yw’r gêm yn gweithio.

Y manteision yw mai dim ond haen denau o gyfieithu yw hon ar ben y gweithredoedd gweithredadwy, sy’n golygu hynny Dylai gemau Vita allu rhedeg ar gyflymder llawn ar y Switchunwaith y bydd vita2hos wedi aeddfedu digon i redeg mwy o gemau.

Ynglŷn â Vita2hos Alpha 0.1

Dyma beth sydd gan Xerpi i’w ddweud am y datganiad cyntaf hwn:

Cofiwch fod hyn yn dal i fod yn y cam “prawf o gysyniad”. Er y gall redeg rhai brews cartref syml wedi’u rendro gan CPU (fel VITA-8), mae cefnogaeth graffeg 3D gychwynnol iawn o hyd (gall redeg samplau triongl a chiwb GXM Vitasdk trwy godio caled arlliwwyr vita2hos i gyd-fynd â’r rhai y mae’r sampl yn eu defnyddio).

Y dasg anoddaf yw cyfieithu lliwiwr o god byte SGX USSE PSVita i gyfarwyddiadau Nvidia Maxwell. Yn ddelfrydol, hoffwn ddefnyddio ail-grynhoir cysgodi Vita3K, neu hyd yn oed droi Vita3K yn haen gyfieithu (ac eithrio gweithredu fel efelychydd ar systemau x86 hefyd) fel nad oes rhaid i ni ddyblygu llawer o’r cod.

Mae gen i gefnogaeth hacio a PoC iawn ar gyfer cyfieithu shader gan ddefnyddio Vita3K ac UAM wedi’u copi-gludo (cyhoeddwr cysgodi ffynhonnell agored ar gyfer y ffynhonnell agored Switch Llyfrgell graffeg 3D: deko3d) cod yn y gangen vita3k-shader-recompiler-uam.

Fideo yn dangos sampl ciwb GXM Vitasdk yn rhedeg ar y Switch trwy vita2hos: https://i.imgur.com/w9HPluo.mp4

Lawrlwythwch vita2hos Alpha 0.1

Yn ei gyflwr presennol, dim ond is-set bach o Vita homebrew syml iawn y mae vita2hos yn ei redeg (enghreifftiau isod), ond gall y rhai ohonoch sydd am roi cynnig arni ddilyn y cyfarwyddiadau isod.

Lawrlwythwch vita2hos yma.

Sut alla i ei ddefnyddio?

  1. Copïwch vita2hos.nsp i’ch cerdyn microSD (hy i: atmosphere/vita2hos.nsp)

  2. Creu awyrgylch/config/override_config.ini ac ychwanegu’r llinellau canlynol ato:

    [hbl_config]
    override_any_app=true
    override_any_app_key=R
    override_any_app_address_space=32_bit
    ; adjust the path according to the location of your file
    path=atmosphere/vita2hos.nsp
    
    • Note: Cyn belled â bod y ffeil hon yn bodoli ni fyddwch yn gallu defnyddio’r ddewislen homebrew a bydd yn rhedeg bob amser yn lle hynny vita2hos.

      Ateb cyflym fyddai ailenwi’r ffeil ac ailgychwyn eich ffeil Switch. Yn anffodus nid yw override_config.ini yn caniatáu cofnodion llwybr lluosog a dyna pam y mae’n rhaid ei wneud fel hyn.

  3. Copïwch weithred PlayStation Vita (.velf neu .self/eboot.bin) i wraidd eich cerdyn microSD a’i ailenwi i test.elf

  4. Boot (neu ailgychwyn) eich Switch a dechrau unrhyw gêm wrth ddal R i lawr

    • Ceisio defnyddio vita2hos trwy’r modd rhaglennig (botwm albwm) ar hyn o bryd yn arwain at wall angheuol ac ni fyddai’n cael ei argymell beth bynnag.
  5. Mwynhewch!

Sampl PSVita homebrew: