ඉමුලේටර් ක්‍රියා කරන්නේ කෙසේද සහ ඒවා ලියා ඇත්තේ කෙසේද? [වසා ඇත]


967

ඉමුලේටර් ක්‍රියා කරන්නේ කෙසේද? මම NES / SNES හෝ C64 ඉමුලේටර් දුටු විට එය මා මවිතයට පත් කරයි.

http://www.tommowalker.co.uk/snemzelda.png

එකලස් කිරීමේ උපදෙස් අර්ථ නිරූපණය කිරීමෙන් ඔබට එම යන්ත්‍රවල ප්‍රොසෙසරය අනුකරණය කළ යුතුද? එයට තවත් කුමක් සිදුවේද? ඒවා සාමාන්‍යයෙන් නිර්මාණය කර ඇත්තේ කෙසේද?

ඉමුලේටරයක් ​​ලිවීමට උනන්දුවක් දක්වන කෙනෙකුට (විශේෂයෙන් ක්‍රීඩා පද්ධතියක්) ඔබට උපදෙස් දිය හැකිද?


15
ඔබ සොයා ගත යුතු වැදගත්ම දෙය වන්නේ එම පද්ධතිය සඳහා වන “ක්‍රමලේඛ අත්පොත” වන අතර, එමඟින් එච්ඩබ්ලිව් වෙළෙන්දා සහ ක්‍රමලේඛකයින් අතර ඇති “කොන්ත්‍රාත්තුව” විස්තර කෙරෙන අතර අදාළ නොවන හා වෙනස් විය හැකි තොරතුරු සඟවයි. ඔබේ අවස්ථා පද්ධති ජනප්‍රියතාවය මත රඳා පවතී.
යූරි

155
හොඳ ක්‍රීඩා තේරීමක්.
ක්‍රිස්ටියන් රෝමෝ

2
ඔව්, මම එසේ විශ්වාස කරමි: en.wikipedia.org/wiki/The_Legend_of_Zelda:_A_Link_to_the_Past
mmcdole


8
මම පළමු වරට එම ක්‍රීඩාව කළ දා සිටම, මම නිතරම කල්පනා කළේ හයිරූල් "බෝල 8" ගල්වලින් පිරී ඇත්තේ මන්ද යන්නයි :-)
විවියන් ගඟ

Answers:


1123

අනුකරණය යනු බහු මුහුණුවරකි. මෙන්න මූලික අදහස් සහ ක්‍රියාකාරී සංරචක. මම එය කැබලිවලට කඩා පසුව සංස්කරණයන් හරහා විස්තර පුරවන්නෙමි. මම විස්තර කිරීමට යන බොහෝ දේ සඳහා සකසනයන්ගේ අභ්‍යන්තර ක්‍රියාකාරිත්වය පිළිබඳ දැනුමක් අවශ්‍ය වනු ඇත - එකලස් කිරීමේ දැනුම අවශ්‍ය වේ. මම සමහර දේවල් ගැන ටිකක් අපැහැදිලි නම්, කරුණාකර ප්‍රශ්න අසන්න එවිට මට මෙම පිළිතුර තවදුරටත් දියුණු කර ගත හැකිය.

මූලික අදහස:

ප්‍රොසෙසරයේ හැසිරීම සහ තනි කොටස් හැසිරවීම මගින් අනුකරණයන් ක්‍රියා කරයි. ඔබ පද්ධතියේ එක් එක් කැබැල්ලක් ගොඩනඟා දෘඩාංගවල වයර් මෙන් කෑලි සම්බන්ධ කරන්න.

සකසනය අනුකරණය කිරීම:

ප්‍රොසෙසර අනුකරණය හැසිරවීමේ ක්‍රම තුනක් තිබේ:

  • අර්ථ නිරූපණය
  • ගතික නැවත සකස් කිරීම
  • ස්ථිතික නැවත සකස් කිරීම

මෙම සියලු මාර්ග සමඟ, ඔබට එකම සමස්ත ඉලක්කයක් ඇත: ප්‍රොසෙසරයේ තත්වය වෙනස් කිරීමට සහ 'දෘඩාංග' සමඟ අන්තර් ක්‍රියා කිරීමට කේත කැබැල්ලක් ක්‍රියාත්මක කරන්න. ප්‍රොසෙසර් ස්ටේට් යනු දී ඇති ප්‍රොසෙසර් ඉලක්කයක් සඳහා ප්‍රොසෙසර් රෙජිස්ටර්, බාධා කිරීම් හසුරුවන්නන් යනාදියයි. මෙම 6502, ඔබ ලේඛන නියෝජනය 8-bit නිඛිල ගණනාවක් ඇති කියලා: A, X, Y, P, හා S, ඔබට බිට් 16 PCලේඛනයක් ද ඇත.

අර්ථ නිරූපණය සමඟ, ඔබ IP(උපදෙස් දර්ශකය - PCවැඩසටහන් කවුන්ටරය ලෙසද) ආරම්භ කර මතකයෙන් උපදෙස් කියවන්න. ඔබේ කේතය මෙම උපදෙස් විග්‍රහ කරන අතර ඔබේ ප්‍රොසෙසරය මඟින් නියම කර ඇති පරිදි ප්‍රොසෙසරයේ තත්වය වෙනස් කිරීමට මෙම තොරතුරු භාවිතා කරයි. අර්ථ නිරූපණයෙහි මූලික ගැටළුව වන්නේ එය ඉතා මන්දගාමී වීමයි; ඔබ ලබා දුන් උපදෙස් හසුරුවන සෑම අවස්ථාවකම, ඔබ එය විකේතනය කර අවශ්‍ය මෙහෙයුම සිදු කළ යුතුය.

ගතික ප්‍රතිනිර්මාණය සමඟ, ඔබ අර්ථ නිරූපණයට සමාන කේතයක් හරහා ක්‍රියා කරයි, නමුත් ඔප්කෝඩ් ක්‍රියාත්මක කිරීම වෙනුවට, ඔබ මෙහෙයුම් ලැයිස්තුවක් සාදයි. ඔබ ශාඛා උපදෙස් වෙත ළඟා වූ පසු, ඔබ මෙම මෙහෙයුම් ලැයිස්තුව ඔබේ සත්කාරක වේදිකාව සඳහා යන්ත්‍ර කේතයට සම්පාදනය කරයි, ඉන්පසු ඔබ මෙම සම්පාදනය කළ කේතය හැඹිලි කර ක්‍රියාත්මක කරන්න. ඔබ නැවත දී ඇති උපදෙස් කණ්ඩායමකට පහර දුන් විට, ඔබට සිදුවන්නේ හැඹිලියෙන් කේතය ක්‍රියාත්මක කිරීම පමණි. .

ස්ථිතික ප්‍රතිසංවිධානය සමඟ, ඔබ ගතික ප්‍රතිචක්‍රීකරණය මෙන් ම සිදු කරයි, නමුත් ඔබ ශාඛා අනුගමනය කරයි. ඔබ අවසන් කරන්නේ වැඩසටහනේ ඇති සියලුම කේත නියෝජනය කරන කේත කැබැල්ලක් තැනීමෙනි, එය තවදුරටත් බාධාවකින් තොරව ක්‍රියාත්මක කළ හැකිය. පහත සඳහන් ගැටළු සඳහා නොවේ නම් මෙය හොඳ යාන්ත්‍රණයක් වනු ඇත:

  • ආරම්භ කිරීමට වැඩසටහනේ නොමැති කේතය (උදා: සම්පීඩිත, සංකේතාත්මක, ධාවන වේලාවේදී උත්පාදනය / වෙනස් කිරීම යනාදිය) නැවත සකස් නොකෙරේ, එබැවින් එය ක්‍රියාත්මක නොවේ
  • දී ඇති ද්විමය තුළ ඇති සියලුම කේත සොයා ගැනීම හැල්ටිං ගැටලුවට සමාන බව ඔප්පු වී ඇත

මේවායින් 99% ක්ම ස්ථිතික නැවත සකස් කිරීම සම්පූර්ණයෙන්ම කළ නොහැකි වේ. වැඩි විස්තර සඳහා, මයිකල් ස්ටීල් ස්ථිතික නැවත සකස් කිරීම පිළිබඳව විශාල පර්යේෂණ කිහිපයක් කර ඇත - මා දැක ඇති හොඳම දේ.

ප්‍රොසෙසර අනුකරණයට අනෙක් පැත්ත වන්නේ ඔබ දෘඩාංග සමඟ අන්තර්ක්‍රියා කරන ආකාරයයි. මෙය සැබවින්ම පැති දෙකක් ඇත:

  • සකසනය වේලාව
  • හැසිරවීමට බාධා

සකසනය වේලාව:

සමහර වේදිකා - විශේෂයෙන් පැරණි කොන්සෝල වන NES, SNES යනාදිය - ඔබේ ඉමුලේටරයට දැඩි වේලාවක් සම්පුර්ණයෙන්ම අනුකූල වීමට අවශ්‍ය වේ. NES සමඟ, ඔබට PPU (පික්සෙල් සැකසුම් ඒකකය) ඇති අතර එමඟින් CPU එහි මතකයට නිශ්චිත වේලාවක පික්සෙල් දැමිය යුතුය. ඔබ අර්ථ නිරූපණය භාවිතා කරන්නේ නම්, ඔබට පහසුවෙන් චක්‍ර ගණනය කර නිසි වේලාව අනුකරණය කළ හැකිය; ගතික / ස්ථිතික ප්‍රතිසංවිධානය සමඟ, දේවල් / ගොඩක් / වඩා සංකීර්ණ වේ.

බාධා කිරීම් හැසිරවීම:

CPU දෘඩාංග සමඟ සන්නිවේදනය කරන මූලික යාන්ත්‍රණය වන්නේ බාධා කිරීම් ය. සාමාන්‍යයෙන්, ඔබේ දෘඩාංග සංරචක CPU වෙත එය බාධා කරන්නේ කුමක් දැයි කියනු ඇත. මෙය ඉතා සරල ය - ඔබේ කේතය දී ඇති බාධාවක් විසි කරන විට, ඔබ බාධා කිරීම් හසුරුවන වගුව දෙස බලා නිසි ඇමතුමක් ලබා ගන්න.

දෘඩාංග අනුකරණය:

දී ඇති දෘඩාංග උපාංගයක් අනුකරණය කිරීමට පැති දෙකක් තිබේ:

  • උපාංගයේ ක්‍රියාකාරිත්වය අනුකරණය කිරීම
  • සත්‍ය උපාංග අතුරුමුහුණත් අනුකරණය කිරීම

දෘ drive තැටියක කාරණය ගන්න. පසුබිම් ආචයනය, කියවීම / ලිවීම / ආකෘති පත්ර ආදිය නිර්මාණය කිරීමෙන් ක්රියාකාරිත්වය අනුකරණය කරනු ලැබේ. මෙම කොටස සාමාන්යයෙන් ඉතා සරල ය.

උපාංගයේ සත්‍ය අතුරුමුහුණත ටිකක් සංකීර්ණයි. මෙය සාමාන්‍යයෙන් මතක සිතියම්ගත කළ රෙජිස්ටර වල එකතුවකි (උදා: සං sign ා කිරීම සඳහා උපාංගය බලා සිටින මතකයේ කොටස්) සහ බාධා කිරීම්. දෘ drive තැටියක් සඳහා, ඔබට කියවීමේ විධාන, ලිවීම් යනාදිය තැන්පත් කර ඇති මතක සිතියම් ගත කළ හැකි ප්‍රදේශයක් තිබිය හැක, ඉන්පසු මෙම දත්ත නැවත කියවන්න.

මම වඩාත් විස්තරාත්මකව යන්නෙමි, නමුත් ඔබට එය සමඟ යා හැකි ක්‍රම මිලියනයක් ඇත. ඔබට මෙහි කිසියම් නිශ්චිත ප්‍රශ්නයක් ඇත්නම්, විමසීමට නිදහස්ව සිටින්න, මම තොරතුරු එක් කරන්නෙමි.

සම්පත්:

මම නිරයක් මෙතන ඉතා හොඳ ලබා තියෙනවා හිතන්නේ, නමුත් එහි වේ ටොන් අමතර ප්රදේශවල. ඕනෑම ප්රශ්නයකට උදව් කිරීමට වඩා මම සතුටු වෙමි; අතිමහත් සංකීර්ණතාව නිසා මම බොහෝ විට නොපැහැදිලි වී සිටිමි.

අනිවාර්ය විකිපීඩියා සම්බන්ධතා:

සාමාන්‍ය අනුකරණ සම්පත්:

  • සොෆාර් - මා විසින් ආරම්භය අනුකරණය කිරීම, මුලින්ම ඉමුලේටර් බාගත කිරීම සහ අවසානයේදී ඔවුන්ගේ අතිවිශාල ලේඛන ලේඛන කොල්ලකෑම මෙහි දී සිදු විය. ඔබට තිබිය හැකි පරම හොඳම සම්පත මෙයයි.
  • NGEmu - බොහෝ direct ජු සම්පත් නොවේ, නමුත් ඔවුන්ගේ සංසද පරාජය කළ නොහැකි ය.
  • RomHacking.net - ජනප්‍රිය කොන්සෝල සඳහා යන්ත්‍ර සැකැස්ම පිළිබඳ සම්පත් ලේඛන අංශයේ අඩංගු වේ

යොමු කිරීමට ඉමියුලේටර් ව්‍යාපෘති:

  • අයන්බබෙල් - මෙය .NET සඳහා වන අනුකරණ වේදිකාවක් වන අතර එය නෙමර්ලේ ලියා ඇති අතර පියාසර කරන විට C # වෙත කේතය නැවත සකස් කරයි. වියාචනය: මෙය මගේ ව්‍යාපෘතියයි, එබැවින් නිර්ලජ්ජිත ප්ලග් එකට සමාව දෙන්න.
  • BSnes - චක්‍ර-පරිපූර්ණ නිරවද්‍යතාවයේ ඉලක්කය සහිත නියම SNES ඉමුලේටරයක් .
  • MAME - මෙම ආර්කේඞ් ප්රොජෙක්ට්. විශිෂ්ට සඳහනක්.
  • 6502asm.com - මෙය සිසිල් කුඩා සංසදයක් සහිත ජාවාස්ක්‍රිප්ට් 6502 ඉමුලේටරයකි .
  • dynarec'd 6502asm - මෙය මම දිනක් හෝ දෙකක් තුළ කළ කුඩා හැක් එකකි. මම දැනට පවතින ඉමියුලේටරය 6502asm.com වෙතින් ගෙන විශාල වේගයකින් වැඩි කිරීම සඳහා කේතය ජාවාස්ක්‍රිප්ට් වෙත ගතිකව නැවත සකස් කිරීමට එය වෙනස් කළෙමි.

සකසනය නැවත සකස් කිරීමේ යොමුව:

  • (ඉහත සඳහන් කර ඇති) මයිකල් ස්ටීල් විසින් සිදු කරන ලද ස්ථිතික ප්‍රතිසංවිධානය පිළිබඳ පර්යේෂණ මෙම ලිපියෙන් අවසන් වූ අතර ඔබට මූලාශ්‍රය සහ එවැනි දේ මෙහි සොයාගත හැකිය .

අතිරේක:

මෙම පිළිතුර ඉදිරිපත් කර වසරකට වැඩි කාලයක් ගත වී ඇති අතර, සියලු අවධානයෙන් එය ලබාගෙන ඇති අතර, සමහර දේවල් යාවත්කාලීන කිරීමට කාලය පැමිණ ඇතැයි මම සිතුවෙමි.

සමහර විට මේ වන විට වඩාත් සිත්ගන්නාසුලු දෙය වන්නේ ඉහත සඳහන් කළ මයිකල් ස්ටීල් විසින් ආරම්භ කරන ලද libcpu ය . එය නැවත සකස් කිරීම සඳහා එල්එල්වීඑම් භාවිතා කරන (ස්ථිතික හා ගතික!) CPU මධ්‍යයන් විශාල සංඛ්‍යාවක් සඳහා සහාය වීමට අදහස් කරන පුස්තකාලයකි. එය විශාල විභවයක් ඇති අතර, එය අනුකරණය සඳහා විශාල දේ කරනු ඇතැයි මම සිතමි.

emu-docs ද මගේ අවධානයට යොමු කර ඇති අතර, එය පද්ධති ලේඛනවල විශාල ගබඩාවක් ඇති අතර එය අනුකරණ අරමුණු සඳහා ඉතා ප්‍රයෝජනවත් වේ. මම එහි වැඩි කාලයක් ගත කර නැත, නමුත් ඔවුන් සතුව විශාල සම්පත් ඇති බව පෙනේ.

මෙම ලිපිය ප්‍රයෝජනවත් වීම ගැන මම සතුටු වන අතර, වසර අවසානයේදී / ලබන වසර මුලදී මගේ බූරුවාගෙන් ඉවත් වී මෙම විෂය පිළිබඳ මගේ පොත අවසන් කළ හැකි යැයි මම බලාපොරොත්තු වෙමි.


37
මෙය දැනටමත් වීර කාව්‍යමය පිළිතුරක් බවට පත්වෙමින් තිබේ. ඔබට කිසියම් සම්පතක් වෙත යොමු කළ හැකි නම් සහ අවසානයේ එය අගය කරනු ඇත. මම අනුකරණය කිරීමට SNES හෝ NES පද්ධතිය දෙස බලා එය මගේ අධ්‍යයන වාරය බවට පත් කරමි.
mmcdole

8
නිසැකවම. මම ලස්සන සම්පත් ලැයිස්තුවක් එක්රැස් කරන්නෙමි. ඔබට කිසියම් නිශ්චිත ඉල්ලීමක් තිබේ නම්, මම ඒවා පිරවීමට උපරිම උත්සාහයක් දරමි.
කෝඩි බ්‍රෝසියස්

3
@thenonhacker, මගේ සම්පත් අංශයේ සඳහන් යකඩ බාබෙල් ව්‍යාපෘතිය මගේ ය. (නිර්ලජ්ජිත ප්ලග් එක සලකුණු කර ඇත;))
කෝඩි බ්‍රෝසියස්

1
"දී ඇති ද්විමය තුළ ඇති සියලුම කේත සොයා ගැනීම හැල්ටිං ගැටලුවට සමාන බව ඔප්පු වී ඇත" - කරුණාකර යොමු කරන්න? නැතහොත් එය " ඕනෑම ද්විමය තුළ ඇති සියලුම කේත සොයා ගැනීම හැල්ටිං ගැටලුවට සමාන බව ඔප්පු වී තිබේද"? එසේම
ස්ටීල්ගේ

4
ඔබ පොතක් ලියන බව සඳහන් කරයි; කරුණාකර අපට ඒ පිළිබඳ යාවත්කාලීන කිරීමක් ලබා දිය හැකිද? මම එය කියවීමට උනන්දු වෙමි.
ඇලෙක්ස්

126

වික්ටර් මොයා ඩෙල් බාරියෝ නම් පුද්ගලයෙක් මෙම මාතෘකාව පිළිබඳ සිය නිබන්ධනය ලිවීය. පිටු 152 ක හොඳ තොරතුරු රාශියක්. ඔබට මෙහි PDF බාගත කළ හැකිය .

ඔබට scribd සමඟ ලියාපදිංචි වීමට අවශ්‍ය නැතිනම් , ඔබට PDF මාතෘකාව සඳහා ගූගල් කළ හැකිය, "අනුකරණ වැඩසටහන්කරණය සඳහා වූ ශිල්ප ක්‍රම අධ්‍යයනය කරන්න" . PDF සඳහා විවිධ ප්‍රභවයන් කිහිපයක් තිබේ.


43

අනුකරණය කිරීම භයානක බවක් පෙනෙන්නට තිබුණත් ඇත්ත වශයෙන්ම එය අනුකරණය කිරීමට වඩා පහසුය.

ඕනෑම සකසනයකට සාමාන්‍යයෙන් හොඳින් ලියා ඇති පිරිවිතරයක් ඇත, එය තත්වයන්, අන්තර්ක්‍රියා ආදිය විස්තර කරයි.

ඔබ කිසිසේත්ම කාර්ය සාධනය ගැන තැකීමක් නොකළේ නම්, ඔබට ඉතා අලංකාර වස්තු නැඹුරු වැඩසටහන් භාවිතා කරමින් බොහෝ පැරණි සකසනයන් පහසුවෙන් අනුකරණය කළ හැකිය. උදාහරණයක් ලෙස, X86 ප්‍රොසෙසරයකට රෙජිස්ටරයේ තත්වය (පහසු) පවත්වා ගැනීමට යමක් අවශ්‍ය වේ, මතකයේ තත්වය පවත්වා ගැනීමට (පහසු) යමක් අවශ්‍ය වන අතර එන සෑම විධානයක්ම ගෙන එය යන්ත්‍රයේ වත්මන් තත්වයට අදාළ වේ. ඔබට නිරවද්‍යතාව අවශ්‍ය නම්, ඔබ මතක පරිවර්තන, හැඹිලි ආදිය අනුකරණය කරනු ඇත, නමුත් එය කළ හැකිය.

ඇත්ත වශයෙන්ම, බොහෝ මයික්‍රොචිප් සහ සීපීයූ නිෂ්පාදකයින් චිපයේ ඉමියුලේටරයකට එරෙහිව සහ පසුව චිපයට එරෙහිව වැඩසටහන් පරීක්ෂා කරයි, එමඟින් චිපයේ පිරිවිතරයන්හි ගැටළු තිබේද යන්න සොයා ගැනීමට හෝ දෘඩාංගවල චිපය සත්‍ය වශයෙන්ම ක්‍රියාත්මක කිරීමේදී සොයා ගැනීමට උපකාරී වේ. නිදසුනක් ලෙස, චිප් පිරිවිතරයක් ලිවීමට හැකි වන අතර එය අවහිර කිරීම් වලට හේතු විය හැකි අතර දෘඩාංගවල නියමිත කාල සීමාවක් ඇති වූ විට එය පිරිවිතරයෙන් ප්‍රතිනිෂ්පාදනය කළ හැකිදැයි බැලීම වැදගත් වේ.

ඇත්ත වශයෙන්ම, වීඩියෝ ක්‍රීඩා සඳහා වන ඉමියුලේටර් සාමාන්‍යයෙන් කාර්ය සාධනය ගැන සැලකිලිමත් වන අතර එමඟින් ඔවුන් බොළඳ ක්‍රියාත්මක කිරීම් භාවිතා නොකරයි, තවද ඒවාට සත්කාරක පද්ධතියේ මෙහෙයුම් පද්ධතිය සමඟ සම්බන්ධ වන කේත ද ඇතුළත් වේ, උදාහරණයක් ලෙස චිත්‍ර ඇඳීම සහ ශබ්දය භාවිතා කිරීම.

පැරණි වීඩියෝ ක්‍රීඩා වල (NES / SNES, ආදිය) ඉතා මන්දගාමී ක්‍රියාකාරිත්වය සැලකිල්ලට ගනිමින් නවීන පද්ධතිවල අනුකරණය කිරීම පහසුය. ඇත්ත වශයෙන්ම, ඊටත් වඩා පුදුම සහගත කරුණක් නම්, ඔබට සෑම SNES ක්‍රීඩාවකම කට්ටලයක් හෝ ඕනෑම අටාරි 2600 ක්‍රීඩාවක් මෙතෙක් බාගත කර ගත හැකි වීමයි. මෙම පද්ධති ජනප්‍රිය වූ විට සෑම කාට්රිජයකටම නොමිලේ ප්‍රවේශ වීම සිහිනයක් සැබෑ වනු ඇත.


1
අනුකරණය සහ අනුකරණය අතර ඇති වෙනස්කම් මොනවාද?
හු

2
EWei: පොදුවේ ගත් කල, ඉමුලේටරයක් ​​එය අනුකරණය කරන පද්ධතිය මෙන් “බාහිරව” හැසිරිය යුතු යැයි සිතිය හැකි නමුත් එය ඒ හා සමාන ආකාරයකින් ක්‍රියාත්මක කළ යුතු යැයි කීමට කිසිවක් නැත. සිමියුලේටරයක් ​​ක්‍රියාත්මක කරනුයේ අනුකරණ පද්ධතිය අනුකරණය කරන ආකාරයට වන අතර එහි ප්‍රති as ලයක් ලෙස එය හැසිරේ.
යූරි

ඔබ "සිමියුලේටරය" දුටු විට එය සමාන යැයි සිතන අතර ඉමුලේටරයක් ​​"අනුකරණය කරයි"
එම්පී.


29

මෙම ප්‍රශ්නය ටිකක් පැරණි බව මම දනිමි, නමුත් සාකච්ඡාවට යමක් එකතු කිරීමට මම කැමැත්තෙමි. මෙහි ඇති බොහෝ පිළිතුරු ඔවුන් අනුකරණය කරන පද්ධතිවල යන්ත්‍ර උපදෙස් අර්ථ නිරූපණය කරන එමුලේටර් වටා කේන්ද්‍රගත වේ.

කෙසේ වෙතත්, "අල්ට්රාහෙල්" ( WIKIpedia ලිපිය ) යනුවෙන් හැඳින්වෙන ඉතා ප්රසිද්ධ ව්යතිරේකයක් ඇත . අල්ට්‍රාහෙල්, මෙතෙක් නිර්මාණය කරන ලද වඩාත්ම ජනප්‍රිය ඉමියුලේටර් වලින් එකක් වන වාණිජ නින්ටෙන්ඩෝ 64 ක්‍රීඩා (ගෘහස්ථ පරිගණකවල හොඳ ක්‍රියාකාරිත්වයක් සහිතව) අනුකරණය කරන ලද්දේ එය කළ නොහැකි යැයි පුළුල් ලෙස සලකනු ලැබූ අවස්ථාවක ය. ඇත්ත වශයෙන්ම, අල්ට්‍රාහෙල් නිර්මාණය කරන විට නින්ටෙන්ඩෝ තවමත් නින්ටෙන්ඩෝ 64 සඳහා නව මාතෘකා නිෂ්පාදනය කරමින් සිටියේය!

පළමු වතාවට, මුද්‍රණ සඟරා වල ඉමුලේටර් පිළිබඳ ලිපි මා දුටුවේ මීට පෙර, වෙබයේ සාකච්ඡා කර ඇති අයුරු පමණි.

අල්ට්‍රාඑච්එල් හි සංකල්පය වූයේ යන්ත්‍ර මට්ටමේ ඇමතුම් වෙනුවට සී පුස්තකාල ඇමතුම් අනුකරණය කිරීමෙන් කළ නොහැකි දෙයක් බවට පත් කිරීමයි.


22

ජාවාස්ක්‍රිප්ට් හි ගේම්බෝයි ඉමුලේටරයක් ලිවීමට ඉම්රාන් නසාර් දැරූ උත්සාහය දෙස බැලීම වටී .


1
ගේම්බෝයි ක්‍රීඩාව සඳහා අමු ඔප්කෝඩ් උපදෙස් ලබා ගන්නේ කෙසේද?
පැසීරියර්

'අළු වෙළඳපොලේ' විකිණීමට ඇති උපාංග ගණනාවක් තිබේ. සංවර්ධිත ලෝකයේ කිසිදු ප්‍රධාන වෙළඳසැලකින් ඔබ ඒවා සොයා නොගනී. මෙම උපාංග ක්‍රීඩා කාට්රිජ් සිට සාමාන්‍යයෙන් "ROM" ලෙස හඳුන්වන ලිපිගොනු වෙත පිටපත් කිරීමට හැකියාව ඇත. ගූගල් "ගේම්බෝයි රොම්ස්", නමුත් වැඩ-අනාරක්ෂිත සබැඳි සහ ප්‍රහාරක අඩවි ගැන විමසිල්ලෙන් සිටින්න!
විවියන් ගඟ

18

80 දශකයේ බීබීසී මයික්‍රොකොම්පියුටර් (ගූගල් වෙත VBeeb ටයිප් කරන්න) මගේම ඉමියුලේටරයක් ​​නිර්මාණය කිරීමෙන් දැනගත යුතු කරුණු ගණනාවක් තිබේ.

  • ඔබ සැබෑ දේ අනුකරණය නොකරයි, එය අනුරුවක් වනු ඇත. ඒ වෙනුවට, ඔබ රාජ්‍යය අනුකරණය කරයි. හොඳ උදාහරණයක් වන්නේ කැල්කියුලේටරයයි, ඇත්ත දේට බොත්තම්, තිරය, නඩුව යනාදිය ඇත. නමුත් කැල්කියුලේටරයක් ​​අනුකරණය කිරීමට ඔබට අවශ්‍ය වන්නේ බොත්තම් ඉහළට හෝ පහළට, LCD හි කුමන කොටස් ක්‍රියාත්මක වේද යන්න අනුකරණය කළ යුතුය. මූලික වශයෙන්, සංඛ්‍යා සමූහයකි කැල්කියුලේටරයක වෙනස් විය හැකි සියලු සංයෝජන නියෝජනය කරයි.
  • ඔබට අවශ්‍ය වන්නේ සැබෑ දේ ලෙස පෙනී සිටීමට හා හැසිරීමට ඉමුලේටරයේ අතුරු මුහුණත පමණි. මෙය වඩාත් ඒත්තු ගැන්වෙන්නේ අනුකරණය වඩාත් සමීප වන බැවිනි. තිරය ​​පිටුපස ඇති දේ ඔබ කැමති ඕනෑම දෙයක් විය හැකිය. එහෙත්, ඉමියුලේටරයක් ​​ලිවීමේ පහසුව සඳහා, සැබෑ පද්ධතිය අතර චිප්ස්, ඩිස්ප්ලේ, යතුරුපුවරු, පරිපථ පුවරු සහ වියුක්ත පරිගණක කේතය අතර මානසික සිතියමක් ඇත.
  • පරිගණක පද්ධතියක් අනුකරණය කිරීම සඳහා, එය කුඩා කැබලිවලට කැඩීම සහ එම කුට්ටි තනි තනිව අනුකරණය කිරීම පහසුය. ඉන්පසු නිමි භාණ්ඩය සඳහා මුළු කොටසම එකට ගැට ගසන්න. ආදාන සහ ප්‍රතිදානයන් සහිත කළු පෙට්ටි සමූහයක් මෙන්, එය වස්තු නැඹුරු වැඩසටහන්කරණයට මනාව නැඹුරු වේ. ජීවිතය පහසු කිරීම සඳහා ඔබට මෙම කුට්ටි තවදුරටත් බෙදිය හැකිය.

ප්‍රායෝගිකව කිවහොත්, ඔබ සාමාන්‍යයෙන් ලිවීමට බලාපොරොත්තු වන්නේ අනුකරණයේ වේගය සහ විශ්වාසවන්තභාවය සඳහා ය. මෙයට හේතුව ඉලක්ක පද්ධතියේ මෘදුකාංග ප්‍රභව පද්ධතියේ මුල් දෘඩාංගවලට වඩා සෙමින් ක්‍රියාත්මක වීමයි. එමඟින් ක්‍රමලේඛන භාෂාව, සම්පාදකයින්, ඉලක්ක පද්ධතිය යනාදිය තෝරා ගැනීම සීමා කළ හැකිය.
ඊට අමතරව ඔබ අනුකරණය කිරීමට සූදානම් කර ඇති දේ චක්‍රලේඛනය කළ යුතුය, නිදසුනක් ලෙස මයික්‍රොප්‍රොසෙසරයක ට්‍රාන්සිස්ටර වල වෝල්ටීයතා තත්වය අනුකරණය කිරීම අවශ්‍ය නොවේ, නමුත් එය බොහෝ විට අවශ්‍ය වේ මයික්‍රොප්‍රොසෙසරයේ ලේඛණ කට්ටලයේ තත්වය අනුකරණය කිරීමට.
පොදුවේ ගත් කල, අනුකරණය පිළිබඳ විස්තරයේ මට්ටම කුඩා වන තරමට, ඔබ මුල් පද්ධතියට වඩාත් විශ්වාසදායක වනු ඇත.
අවසාන වශයෙන්, පැරණි පද්ධති සඳහා තොරතුරු අසම්පූර්ණ හෝ නොපවතින විය හැකිය. එබැවින් මුල් උපකරණ රඳවා තබා ගැනීම අත්‍යවශ්‍ය වේ, නැතහොත් අවම වශයෙන් වෙනත් අයෙකු ලියා ඇති තවත් හොඳ ඉමුලේටරයක් ​​වෙන් කරවා ගැනීම අත්‍යවශ්‍ය වේ!


17

ඔව්, ඔබ සම්පූර්ණ ද්විමය යන්ත්‍ර කේත අවුල "අතින්" අර්ථ නිරූපණය කළ යුතුය. එපමණක් නොව, බොහෝ විට ඔබට ඉලක්කගත යන්ත්‍රයට සමාන නොවන විදේශීය දෘඩාංග අනුකරණය කිරීමට සිදු වේ.

සරල ප්රවේශය වන්නේ උපදෙස් එකින් එක අර්ථ නිරූපණය කිරීමයි. එය හොඳින් ක්‍රියාත්මක වන නමුත් එය මන්දගාමී වේ. වේගවත් ප්‍රවේශයක් වන්නේ නැවත සකස් කිරීම - ප්‍රභව යන්ත්‍ර කේතය ඉලක්ක කර යන්ත්‍ර කේතයට පරිවර්තනය කිරීමයි. මෙය වඩාත් සංකීර්ණ වේ, මන්ද බොහෝ උපදෙස් එකින් එක සිතියම් ගත නොකරනු ඇත. ඒ වෙනුවට ඔබට අතිරේක කේත ඇතුළත් විස්තීර්ණ වැඩ වටයක් කිරීමට සිදුවේ. නමුත් අවසානයේ එය වඩා වේගවත් ය. බොහෝ නවීන ඉමුලේටර්වරු මෙය කරති.


1
නරකම දෙය නම් මෙතෙක් ලේඛන නොමැති වීමයි. GameBoy වර්ණයෙහි නවීකරණය කරන ලද Z80 හරයෙහි ලේඛනගත නොකළ ධජ මෙහෙයුම් ඇති බව ඔබ දැනගත් විට ඔබ පරීක්‍ෂා කරන ක්‍රීඩාව භාවිතා කරන්නේ ඔබ සැබවින්ම විශ්වාසය නැති කර ගැනීමට පටන් ගනී.
කැලම් රොජර්ස්

1
සුරතල් සතුන්: එය යන්ත්‍ර කේතය (ඒකීය) මිස යන්ත්‍ර කේත නොවේ (බහු); ඒක වගේ මෝස් සංඥා නැති Morse කේත .
ලෝරන්ස් ඩොල්

1
IlVilx: ඇත්ත වශයෙන්ම නැත - CPU සඳහා වන උපදෙස් කට්ටලය සඳහන් කරමින් “යන්ත්‍ර කේතය” යන යෙදුම මෘදුකාංග ආරම්භයේ සිටම භාවිතයේ පවතින අතර එය බහු වචන නොවේ. එය යොමු දක්වන්නේ “උපදෙස් කට්ටලය ”, ඒකීය ස්වරූපයක් මිස බහු වචන “උපදෙස්” නොවේ. ක්‍රමලේඛ කේතය, මෝර්ස් කේතය යනාදිය සමාන ය. බහු භාෂා ස්වරූපය අනිසි ලෙස භාවිතයෙන් ඉවත් වී ඇත, සාමාන්‍යයෙන් දෙවන භාෂාව ලෙස ඉංග්‍රීසි කතා කරන අය.
ලෝරන්ස් ඩොල්

1
Oft මෘදුකාංග වඳුරා - නමුත් කට්ටලයේ එක් අයිතමයක් යොමු කිරීමට මට "කේතය" යන වචනය භාවිතා කළ නොහැකිද? උදාහරණයක් ලෙස: " ... --- ...- මෙම මෝර්ස් කේත තුන S, O, S අක්ෂර තුන නියෝජනය කරයි." නිසා ...කේත කිරීෙමන් "S" නියෝජනය. නැත?
විල්ක්ස්-

1
නැත, කේතය ගණනය කළ නොහැකි නාම පදයකි, එයට ජලය හෝ වැලි වැනි බහු ස්වරූපයක් නොමැත ..
අයිවන්

15

ඔබ ඉමියුලේටරයක් ​​සංවර්ධනය කරන විට පද්ධතිය ක්‍රියාත්මක වන ප්‍රොසෙසර එකලස් කිරීම අර්ථ නිරූපණය කරයි (Z80, 8080, PS CPU, ආදිය).

පද්ධතියට ඇති සියලුම පර්යන්ත (වීඩියෝ ප්‍රතිදානය, පාලකය) අනුකරණය කිරීමටද ඔබට අවශ්‍යය.

හොඳ පැරණි ගේම් බෝයි (Z80 ප්‍රොසෙසරයක් භාවිතා කරන, මම වරදවා වටහා නොගත්තෙමි) හෝ C64 සඳහා සරල පද්ධති සඳහා ඉමියුලේටර් ලිවීම ආරම්භ කළ යුතුය .


9
C64 "සරල" පද්ධතියක්? 6510 සාපේක්ෂව සරල වන අතර (ඔබ ලැයිස්තුගත නොකළ ඔප්කෝඩ් ආවරණය කළ පසු), ශබ්දය (SID) සහ වීඩියෝ (VIC) චිප්ස් කිසිවක් නොව සරල ය. ඕනෑම හොඳ මට්ටමේ අනුකූලතාවයක් ලබා ගැනීම සඳහා, ඔබ ඒවා අනුකරණය කළ යුතුය - දෘඩාංග දෝෂ සහ සියල්ල.
moobaa

10

ඔබට අනුකරණය කිරීමට අවශ්‍ය බොහෝ හක්ක (අසාමාන්‍ය බලපෑම් වලදී මෙන්), කාල ගැටළු ආදිය ඇති බැවින් ඉමුලේටරය සෑදීම ඉතා අපහසුය.

මේ සඳහා උදාහරණයක් සඳහා, http://queue.acm.org/detail.cfm?id=1755886 බලන්න .

1MHz එකක් අනුකරණය කිරීම සඳහා ඔබට බහු-GHz CPU එකක් අවශ්‍ය වන්නේ මන්ද යන්නත් එය ඔබට පෙන්වයි.


9

JIT සඳහා උපදෙස් මට්ටමේ ප්‍රශස්තිකරණය පිළිබඳ හොඳ උපදෙස් සඳහා ඩාරෙක් මිහොකාගේ Emulators.com සහ කාර්යක්ෂම ඉමියුලේටර් තැනීම පිළිබඳ තවත් බොහෝ දේ බලන්න.


7

මම කවදාවත් ක්‍රීඩා කොන්සෝලයක් අනුකරණය කිරීමට තරම් මනස්කාන්ත දෙයක් කර නැත, නමුත් වරක් මම පා course මාලාවක් හැදෑරූ අතර ඇන්ඩ rew ටැනෙන්බෝම්ස් ව්‍යුහාත්මක පරිගණක සංවිධානයේ විස්තර කර ඇති යන්ත්‍රය සඳහා ඉමුලේටරයක් ​​ලිවීම පැවරුම විය . ඒක හරිම විනෝදජනකයි. නියම ඉමියුලේටරයක් ​​ලිවීමට කිමිදීමට පෙර ඔබට එම පොත තෝරා ගැනීමට අවශ්‍ය විය හැකිය.


4

සැබෑ පද්ධතියක් හෝ ඔබේම දෙයක් අනුකරණය කිරීමට උපදෙස්? ENTIRE දෘඩාංග අනුකරණය කිරීමෙන් emulators ක්‍රියා කරන බව මට පැවසිය හැකිය. සමහර විට පරිපථයට බැස නොයනු ඇත (එච්ඩබ්ලිව් වැනි බිටු වටා ගමන් කරන ආකාරයට. බයිට් එක ගෙනයාම අවසාන ප්‍රති result ලය බැවින් බයිට් පිටපත් කිරීම හොඳයි). ඔබට අනුකරණය කිරීමට අවශ්‍ය බොහෝ හක්ක (අසාමාන්‍ය බලපෑම් වලදී මෙන්), කාල ගැටළු ආදිය ඇති බැවින් ඉමුලේටරය සෑදීම ඉතා අපහසුය. එක් (ආදාන) කෑල්ලක් වැරදියි නම්, සමස්ත පද්ධතියට පහතට බැසීමට හෝ දෝෂ / දෝෂයක් ඇතිවිය හැකිය.


4

මෙම සාමූහික මූලාශ්රය උපාංගය ප්රොජෙක්ට් වූ PocketPC / ස්මාර්ට් ෆෝන් ජංගම ප්රොජෙක්ට් කිරීමට සැපයු ප්රභව කේත අඩංගු (විෂුවල් ස්ටුඩියෝ, Windows මත ලකුණු අවශ්යයි). ද්විමය නිකුතුවේ V1 සහ V2 මත මම වැඩ කළෙමි.

එය බොහෝ අනුකරණ ගැටළු වලට විසඳුම් සපයයි: - ආගන්තුක අථත්‍යයේ සිට ආගන්තුක භෞතික දක්වා සත්කාරක අථත්‍යය දක්වා කාර්යක්ෂම ලිපින පරිවර්තනය - ආගන්තුක කේතය JIT සම්පාදනය කිරීම - ජාල ඇඩැප්ටර, ටච්ස්ක්‍රීන් සහ ශ්‍රව්‍ය - UI අනුකලනය වැනි පර්යන්ත උපාංග අනුකරණය කිරීම, ධාරක යතුරුපුවරුව සහ මූසිකය සඳහා - සුරකින්න / අඩු බල ප්‍රකාරයෙන් නැවත ආරම්භ කිරීම අනුකරණය කිරීම සඳහා තත්වය යථා තත්වයට පත් කිරීම


1

Ody කෝඩි බ්‍රෝසියස් විසින් සපයන ලද පිළිතුර එක්
කිරීම සඳහා අථත්‍යකරණයේ සන්දර්භය තුළ ඔබ නව පද්ධතියක් (CPU, I / O යනාදිය) අථත්‍ය යන්ත්‍රයකට අනුකරණය කරමින් සිටින විට අපට පහත දැක්වෙන ඉමුලේටර් වර්ග දැක ගත හැකිය.

අර්ථ නිරූපණය: බොච් යනු පරිවර්තකයාට නිදසුනකි, එය x86 PC ඉමියුලේටරයකි, එය ආගන්තුක පද්ධතියෙන් ලබා ගන්නා සෑම උපදෙසක්ම අපේක්ෂිත ප්‍රති produce ල නිපදවීම සඳහා එය වෙනත් උපදෙස් මාලාවක (ධාරක අයිඑස්ඒ) පරිවර්තනය කරයි. එය ඉතා මන්දගාමී වේ, එසේ නොවේ කිසිවක් හැඹිලිගත නොකරන බැවින් සෑම උපදෙස්ම එකම චක්‍රයක් හරහා ගමන් කරයි.

ගතික ඉමලේටරය: Qemu යනු ගතික ඉමුලේටරයකි. එය ආගන්තුක උපදෙස් පියාසර කිරීමේ පරිවර්තනයේ ප්‍රති results ල ද ලබා දෙයි. හොඳම කොටස වන්නේ හැකි තරම් උපදෙස් සෘජුවම ධාරක පද්ධතිය මත ක්‍රියාත්මක කිරීම නිසා අනුකරණය වේගවත් වේ. කෝඩි සඳහන් කළ පරිදි, එය කේතය කොටස් වලට බෙදා ඇත (ක්‍රියාත්මක කිරීමේ 1 ප්‍රවාහය).

ස්ථිතික ඉමියුලේටරය: අථත්‍යකරණයට උපකාරී වන ස්ථිතික ඉමුලේටරයක් ​​නොමැති බව මම දනිමි.


1

මම අනුකරණය ආරම්භ කරන්නේ කෙසේද.

1. පහත් මට්ටමේ වැඩසටහන්කරණය මත පදනම් වූ පොත් ලබා ගන්න, නින්ටෙන්ඩෝ හි “මවාපෑම” මෙහෙයුම් පද්ධතිය සඳහා ඔබට එය අවශ්‍ය වේ ... ගේම් බෝයි ...

2. විශේෂයෙන් අනුකරණය පිළිබඳ පොත් ලබා ගන්න, සහ සමහර විට සංවර්ධනය විය හැකිය. (ඔබ OS එකක් සාදන්නේ නැත, නමුත් එයට ආසන්නතම වේ.

3. සමහර විවෘත මූලාශ්‍ර ඉමියුලේටර් දෙස බලන්න, විශේෂයෙන් ඔබට ඉමුලේටරයක් ​​සෑදීමට අවශ්‍ය පද්ධතියේ ඒවා.

4. වඩාත් සංකීර්ණ කේතයේ කොටස් ඔබේ IDE / compililer තුළට පිටපත් කරන්න. මෙය දිගු කේතයක් ලිවීමෙන් ඔබව සුරකිනු ඇත. OS සංවර්ධනය සඳහා මා කරන්නේ මෙයයි, ලිනක්ස් දිස්ත්‍රික්කයක් භාවිතා කරන්න


1

මම ජාවාස්ක්‍රිප්ට් හි චිප් -8 පද්ධතිය අනුකරණය කිරීම ගැන ලිපියක් ලිව්වෙමි .

පද්ධතිය එතරම් සංකීර්ණ නොවන බැවින් එය ආරම්භ කිරීමට හොඳ ස්ථානයකි, නමුත් ඔබ තවමත් ඔප්කෝඩ්, ස්ටක්, රෙජිස්ටර් යනාදිය ක්‍රියා කරන ආකාරය ඉගෙන ගනී.

මම ඉක්මනින් NES සඳහා දිගු මාර්ගෝපදේශයක් ලියමි.

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.