Knowledge

Porting

Source 📝

511:. This term has been widely used by the gaming community. The process of porting a game from a console to a PC is often regarded negatively due to the higher levels of performance that computers generally have being underutilized, partially due to console hardware being fixed throughout their run (with games being developed for console specs), while PCs become more powerful as hardware evolves, but also due to ported games sometimes being poorly optimized for PCs, or lazily ported. While broadly similar, architectural differences may exist such as the use of 475:, the terms "arcade perfect" or "arcade accurate" were often used to describe how closely the gameplay, graphics, and other assets on the ported version matched the arcade version. Many arcade ports in the early 1980s were far from arcade perfect as home consoles and computers lacked the sophisticated hardware in arcade games, but games could still approximate the gameplay. Notably, 362:, is converted to run on a different platform, perhaps with some minor differences. From the beginning of video games through to the 1990s, "ports", at the time often known as "conversions", were often not true ports, but rather reworked versions of the games due to the limitations of different systems. For example, the 1982 game 280:
An interpreter is less complex and therefore easier to port than a code generator, because it is not able to do code optimizations due to its limited view of the program code (it only sees one instruction at a time, and users need a sequence to do optimization). Some interpreters are extremely easy
268:
The use of intermediate code enhances portability of the compiler, because only the machine dependent code (the interpreter or the code generator) of the compiler itself needs to be ported to the target machine. The remainder of the compiler can be imported as intermediate code and then further
435:
and other sophisticated features made porting from them to Apple "far more difficult, perhaps even impossible". Reviews complained of ports that suffered from "Apple conversionitis", retaining the Apple's "lousy sound and black-white-green-purple graphics"; after Garriott's statement, when
454:
for the Atari first because it preferred to develop for the most advanced computers, removing or altering features as necessary during porting. Such a policy was not always feasible; Bunten stated that "M.U.L.E. can't be done for an Apple", and that the non-Atari versions of
173:
it on the new platform, but practitioners often find that various minor corrections are required, due to subtle platform differences. Most standards suffer from "gray areas" where differences in interpretation of standards lead to small variations from platform to platform.
368:, a text adventure augmented with graphic images, has significantly different graphic styles across the range of personal computers that its ports were developed for. However, many 21st century video games are developed using software (often in 440:
asked "Atari and Commodore people in the audience, are you happy with the Apple rewrites?" the audience shouted "No!" Garriott responded, " the Apple version will never get done. From a publisher's point of view that's not money wise".
110:
constructs and third party library calls are unlikely to be portable, and the amount of effort invested by the original authors in only using portable constructs (platform specific constructs often provide a cheaper solution).
63:
when the cost of porting it to a new platform is significantly less than the cost of writing it from scratch. The lower the cost of porting software relative to its implementation cost, the more portable it is said to be.
467:
wrote in 1986 that when porting from Atari to Commodore the original was usually superior. The latter's games' quality improved when developers began creating new software for it in late 1983, the magazine stated.
319:
language, interpreted code (in the BCPL case) is more compact than machine code, typically by a factor of two to one. Interpreted code however runs about ten times slower than compiled code on the same machine.
269:
processed by the ported code generator or interpreter, thus producing the compiler software or directly executing the intermediate code on the interpreter. The machine independent part can be developed and
165:. Writing software that stays within the bounds specified by these standards represents a practical although nontrivial effort. Porting such a program between two standards-compliant platforms (such as 98:, meaning that little effort is needed to adapt it to a new environment. The amount of effort actually needed depends on several factors, including the extent to which the original environment (the 496:
was notorious for its deviations from the arcade version. Arcade-accurate games became more prevalent starting in the 1990s as home consoles caught up to the power of arcade systems. Notably, the
504:, which was introduced as a multi-game arcade system, would also be offered as a home console with the same specifications. This allowed arcade perfect games to be played at home. 281:
to port, because they only make minimal assumptions about the instruction set of the underlying hardware. As a result, the virtual machine is even simpler than the target CPU.
327:
try to take advantage of the compactness of interpreted code, because a Java program may need to be transmitted over the Internet before execution can start on the target's
372:) that can output code for one or more consoles as well as for a PC without the need for actual porting (instead relying on the common porting of individual component 126:
means that most desktop software is never ported to a different CPU. In that same market, the choice of operating systems has effectively been reduced to three:
161:, greatly facilitate porting by specifying details of the computing environment in a way that helps reduce differences between different standards-conforming 249:(a machine is defined by its language and vice versa). The intermediate code instructions are translated into equivalent machine code sequences by a 284:
Writing the compiler sources entirely in the programming language the compiler is supposed to translate, makes the following approach, better known as
308:
Execute the adapted source using the interpreter with the code generator source as input. This will generate the machine code for the code generator.
277:). This greatly reduces design efforts, because the machine independent part needs to be developed only once to create portable intermediate code. 119:
The number of significantly different CPUs and operating systems used on the desktop today is much smaller than in the past. The dominance of the
158: 937: 312:
The difficult part of coding the optimization routines is done using the high-level language instead of the assembly language of the target.
393:
space and the hardware struggled when multiple ghosts appeared on the screen creating a flickering effect. The poor performance of the
89:
The term is not generally applied to the process of adapting software to run with less memory on the same CPU and operating system.
507:
A "console port" is a game that was originally made for a console before an identical version is created which can be played on a
185:, which automates the detection of minor variations in the environment and adapts the software accordingly before compilation. 1061: 765: 457: 46:
that is different from the one that a given program (meant for such execution) was originally designed for (e.g., different
1076: 891: 17: 800:
Nicoll, Benjamin (2015). "Bridging the Gap: The Neo Geo, the Media Imaginary, and the Domestication of Arcade Games".
1110: 1088: 1032: 920: 539: 742:, p. 136, § 7.4.3 Example gives an example translation of a BCPL program into INTCODE for the interpreter. 597:
Whitten, D.E.; Demaine, P.A.D. (March 1975). "A machine and configuration independent Fortran: Portable Fortran".
1019: 632: 239:
in order to enhance portability of the compiler and minimize design efforts. The intermediate language defines a
189: 864: 835: 730:, p. 133, § 7.4 The bootstrapping process and INTCODE explains the role of the INTCODE interpreter. 193: 668:
Origin: Of multiple origins. Partly a borrowing from French. Partly a borrowing from Latin. Etymons: French
569: 364: 54:). The term is also used when software/hardware is changed to make them usable in different environments. 324: 694:, p. 3, § 1.1 Languages, Levels, and Virtual Machines describes the terms and their relations. 432: 51: 1129: 559: 286: 910: 401: 205: 908: 788:
Port or conversion? An ontological framework for classifying game versions | DiGRA Conference 2019
407:
Many early ports suffered significant gameplay quality issues because computers greatly differed.
379:
Porting arcade games to home systems with inferior hardware was difficult. The ported version of
258: 178: 47: 549: 147: 94: 989: 753: 718:, p. 124, § 7.1 Introduction explains compiler portability using intermediate code. 463: 428: 262: 246: 201: 83: 1134: 554: 490: 394: 328: 162: 107: 58: 31: 8: 1098: 964: 257:. It is also possible to skip the generation of machine code by actually implementing an 177:
There also exists an ever-increasing number of tools to facilitate porting, such as the
1053: 1024: 909:
Stanton, Jeffrey; Wells, Robert P.; Rochowansky, Sandra; Mellid, Michael, eds. (1984).
813: 614: 389:
omitted many of the visual features of the original game to compensate for the lack of
373: 355: 43: 1106: 1084: 1057: 1028: 916: 817: 761: 508: 412: 359: 299: 236: 127: 618: 805: 606: 534: 524: 497: 408: 270: 151: 143: 139: 79: 445: 254: 241: 216: 123: 74: 1014: 529: 512: 477: 416: 181:, which provides consistent programming languages on different platforms, and 1123: 809: 610: 295: 574: 424: 228: 564: 472: 351: 890:
Dunnington, Benn; Brown, Mark R.; Malcolm, Tom (January–February 1987).
706:, p. 2. Ch. 1 Introduction explains translation and interpretation. 758:
The Video Game Explosion: A History from PONG to Playstation and Beyond
650: 486: 437: 386: 347: 482: 340: 232: 182: 170: 78:, meaning "to carry". When code is not compatible with a particular 450: 420: 212: 200:) gain portability by outputting source code in another high level 39: 27:
Process of adapting software to run in other computing environments
339:"Video game port" redirects here. For the hardware connector, see 208:) for which compilers for many platforms are generally available. 544: 381: 197: 92:
Software developers often claim that the software they write is
369: 166: 135: 131: 836:"Dispatches / Insights From the Strategy Game Design Front" 316: 106:), the experience of the original authors in knowing which 305:
Adapt the source of the code generator to the new machine.
211:
Two activities related to (but distinct from) porting are
157:
International standards, such as those promulgated by the
501: 390: 120: 42:
for the purpose of achieving some form of execution in a
1075: 739: 727: 715: 956: 889: 169:) can be just a matter of loading the source code and 781: 779: 777: 774: 649: 935: 785: 1121: 294:Port the interpreter. This needs to be coded in 86:, the code must be "carried" to the new system. 929: 829: 827: 685: 596: 883: 245:that can execute all programs written in the 915:. Addison-Wesley. pp. 12, 21, 44, 126. 871:(panel discussion). October 1984. p. 30 859: 857: 824: 400:is cited by some scholars as a cause of the 981: 833: 786:Grabarczyk, Pawel; Aarseth, Espen (2019), 350:designed to run on one platform, be it an 72:The term "port" is derived from the Latin 1097: 912:The Addison-Wesley Book of Atari Software 854: 703: 691: 637:.. discusses .. portability of .. Fortran 599:IEEE Transactions on Software Engineering 489:despite its differences, while the later 334: 102:) differs from the new environment (the 745: 14: 1122: 902: 799: 656:Oxford English Dictionary (OED Online) 150:remains a significant issue, with the 990:"The Evolution of Commodore Graphics" 987: 346:Porting is also the term used when a 227:Instead of translating directly into 1047: 1013: 760:. Bloomsbury Academic. p. 315. 751: 680:To carry, bear, or convey; to bring. 222: 1081:BCPL, the language and its compiler 1050:The Ultimate History of Video Games 740:Richards & Whitby-Strevens 1984 728:Richards & Whitby-Strevens 1984 716:Richards & Whitby-Strevens 1984 290:, feasible on the target machine: 235:translate to a machine independent 50:, operating system, or third party 24: 962: 865:"The CGW Computer Game Conference" 315:According to the designers of the 25: 1146: 1079:; Whitby-Strevens, Colin (1984). 1048:Kent, Steven (2001). "The Fall". 540:List of system quality attributes 154:being a widely used alternative. 1103:Structured computer organization 190:high-level programming languages 1041: 1020:Ultimate History of Video Games 1007: 793: 431:, because the latter machines' 1083:. Cambridge University Press. 936:Bernstein, Harvey (May 1985). 733: 721: 709: 697: 642: 625: 590: 419:developed video games for the 13: 1: 834:Bunten, Dan (December 1984). 583: 570:Write once, compile anywhere 67: 7: 938:"Beyond Castle Wolfenstein" 518: 444:Others worked differently. 298:, using an already present 38:is the process of adapting 10: 1151: 988:Yakal, Kathy (June 1986). 423:first then ported them to 338: 114: 752:Wolf, Mark J. P. (2008). 658:. Oxford University Press 560:Source-to-source compiler 325:Java programming language 265:for the virtual machine. 810:10.1177/1555412015590048 611:10.1109/TSE.1975.6312825 458:The Seven Cities of Gold 402:video game crash of 1983 273:on another machine (the 969:Ozark Softscape M.U.L.E 188:The compilers for some 179:GNU Compiler Collection 550:Program transformation 335:Porting of video games 287:compiler bootstrapping 965:"The Game Collection" 869:Computer Gaming World 840:Computer Gaming World 485:became the console's 448:, for example, wrote 429:Atari 8-bit computers 323:The designers of the 247:intermediate language 202:intermediate language 44:computing environment 1099:Tanenbaum, Andrew S. 1056:. pp. 237–239. 633:"Portability Issues" 555:Software portability 329:Java virtual machine 108:programming language 32:software engineering 18:Port (video gaming) 1054:Three Rivers Press 1025:Three Rivers Press 994:Compute!'s Gazette 464:Compute!'s Gazette 411:stated in 1984 at 356:video game console 138:. However, in the 1105:. Prentice-Hall. 1063:978-0-7615-3643-7 898:. pp. 14–21. 802:Games and Culture 767:978-0-313-33868-7 509:personal computer 413:Origins Game Fair 360:personal computer 237:intermediate code 223:Porting compilers 128:Microsoft Windows 16:(Redirected from 1142: 1130:Interoperability 1116: 1094: 1077:Richards, Martin 1068: 1067: 1045: 1039: 1038: 1011: 1005: 1004: 1002: 1001: 996:. pp. 34–42 985: 979: 978: 976: 975: 960: 954: 953: 951: 949: 933: 927: 926: 906: 900: 899: 892:"64/128 Gallery" 887: 881: 880: 878: 876: 861: 852: 851: 849: 847: 831: 822: 821: 797: 791: 790: 783: 772: 771: 749: 743: 737: 731: 725: 719: 713: 707: 701: 695: 689: 683: 682: 665: 663: 653: 646: 640: 639: 629: 623: 622: 594: 535:Language binding 525:Console emulator 409:Richard Garriott 140:embedded systems 80:operating system 21: 1150: 1149: 1145: 1144: 1143: 1141: 1140: 1139: 1120: 1119: 1113: 1091: 1072: 1071: 1064: 1046: 1042: 1035: 1027:. p. 190. 1012: 1008: 999: 997: 986: 982: 973: 971: 961: 957: 947: 945: 934: 930: 923: 907: 903: 888: 884: 874: 872: 863: 862: 855: 845: 843: 832: 825: 798: 794: 784: 775: 768: 750: 746: 738: 734: 726: 722: 714: 710: 702: 698: 690: 686: 661: 659: 648: 647: 643: 631: 630: 626: 595: 591: 586: 521: 461:were inferior. 446:Ozark Softscape 344: 337: 255:executable code 242:virtual machine 225: 217:cross-compiling 117: 104:target platform 100:source platform 70: 28: 23: 22: 15: 12: 11: 5: 1148: 1138: 1137: 1132: 1118: 1117: 1111: 1095: 1089: 1070: 1069: 1062: 1040: 1033: 1006: 980: 955: 928: 921: 901: 882: 853: 823: 792: 773: 766: 744: 732: 720: 708: 704:Tanenbaum 1984 696: 692:Tanenbaum 1984 684: 641: 624: 605:(1): 111–124. 588: 587: 585: 582: 581: 580: 572: 567: 562: 557: 552: 547: 542: 537: 532: 530:Cross-platform 527: 520: 517: 515:on a console. 513:unified memory 478:Space Invaders 417:Origin Systems 336: 333: 310: 309: 306: 303: 302:on the target. 251:code generator 224: 221: 116: 113: 69: 66: 26: 9: 6: 4: 3: 2: 1147: 1136: 1133: 1131: 1128: 1127: 1125: 1114: 1112:0-13-854605-3 1108: 1104: 1100: 1096: 1092: 1090:0-521-28681-6 1086: 1082: 1078: 1074: 1073: 1065: 1059: 1055: 1051: 1044: 1036: 1034:0-7615-3643-4 1030: 1026: 1022: 1021: 1016: 1010: 995: 991: 984: 970: 966: 963:Bunten, Dan. 959: 943: 939: 932: 924: 922:0-201-16454-X 918: 914: 913: 905: 897: 893: 886: 870: 866: 860: 858: 841: 837: 830: 828: 819: 815: 811: 807: 803: 796: 789: 782: 780: 778: 769: 763: 759: 755: 748: 741: 736: 729: 724: 717: 712: 705: 700: 693: 688: 681: 679: 675: 671: 657: 652: 645: 638: 634: 628: 620: 616: 612: 608: 604: 600: 593: 589: 579: 578: 573: 571: 568: 566: 563: 561: 558: 556: 553: 551: 548: 546: 543: 541: 538: 536: 533: 531: 528: 526: 523: 522: 516: 514: 510: 505: 503: 499: 495: 493: 488: 484: 480: 479: 474: 469: 466: 465: 460: 459: 453: 452: 447: 442: 439: 434: 430: 426: 422: 418: 414: 410: 405: 403: 399: 398: 392: 388: 384: 383: 377: 375: 371: 367: 366: 361: 357: 353: 349: 342: 332: 330: 326: 321: 318: 313: 307: 304: 301: 297: 296:assembly code 293: 292: 291: 289: 288: 282: 278: 276: 272: 266: 264: 260: 256: 252: 248: 244: 243: 238: 234: 230: 220: 218: 214: 209: 207: 203: 199: 195: 191: 186: 184: 180: 175: 172: 168: 164: 160: 155: 153: 149: 145: 141: 137: 133: 129: 125: 122: 112: 109: 105: 101: 97: 96: 90: 87: 85: 81: 77: 76: 65: 62: 61: 55: 53: 49: 45: 41: 37: 33: 19: 1102: 1080: 1049: 1043: 1018: 1015:Kent, Steven 1009: 998:. Retrieved 993: 983: 972:. Retrieved 968: 958: 946:. Retrieved 944:. p. 83 941: 931: 911: 904: 895: 885: 873:. Retrieved 868: 844:. Retrieved 842:. p. 40 839: 801: 795: 787: 757: 747: 735: 723: 711: 699: 687: 677: 673: 669: 667: 662:December 21, 660:. Retrieved 655: 644: 636: 627: 602: 598: 592: 576: 506: 500:system from 491: 476: 473:arcade games 470: 462: 456: 449: 443: 425:Commodore 64 406: 396: 380: 378: 363: 345: 322: 314: 311: 285: 283: 279: 275:host machine 274: 267: 250: 240: 229:machine code 226: 210: 187: 176: 156: 124:architecture 118: 103: 99: 93: 91: 88: 84:architecture 73: 71: 59: 57:Software is 56: 35: 29: 1135:Source code 651:"port, v.2" 575:Meaning of 565:Source port 471:In porting 395:Atari 2600 259:interpreter 171:recompiling 148:portability 1124:Categories 1000:2019-06-18 974:2017-10-04 875:31 October 846:31 October 754:"Glossary" 676:. ... 1. 584:References 487:killer app 438:Dan Bunten 387:Atari 2600 365:The Hobbit 348:video game 253:to create 948:8 January 818:147981978 483:Atari VCS 374:libraries 341:Game port 300:assembler 233:compilers 231:, modern 213:emulating 204:(such as 183:Autotools 163:platforms 146:markets, 68:Etymology 1101:(1984). 1017:(2001). 672:; Latin 619:16485156 577:unported 519:See also 451:M.U.L.E. 421:Apple II 385:for the 95:portable 60:portable 40:software 674:portāre 545:Poshlib 498:Neo Geo 492:Pac-Man 481:on the 433:sprites 397:Pac-Man 382:Pac-Man 331:(JVM). 198:Esterel 167:POSIX.1 115:History 75:portāre 52:library 36:porting 1109:  1087:  1060:  1031:  919:  816:  764:  678:trans. 670:porter 617:  352:arcade 271:tested 194:Eiffel 192:(e.g. 144:mobile 134:, and 942:Antic 814:S2CID 615:S2CID 415:that 358:, or 136:Linux 132:macOS 1107:ISBN 1085:ISBN 1058:ISBN 1029:ISBN 950:2015 917:ISBN 896:Info 877:2013 848:2013 762:ISBN 664:2017 603:SE-1 494:port 427:and 317:BCPL 215:and 142:and 806:doi 607:doi 502:SNK 391:ROM 376:). 370:C++ 263:JIT 261:or 159:ISO 152:ARM 121:x86 82:or 48:CPU 30:In 1126:: 1052:. 1023:. 992:. 967:. 940:. 894:. 867:. 856:^ 838:. 826:^ 812:. 804:. 776:^ 756:. 666:. 654:. 635:. 613:. 601:. 404:. 354:, 219:. 196:, 130:, 34:, 1115:. 1093:. 1066:. 1037:. 1003:. 977:. 952:. 925:. 879:. 850:. 820:. 808:: 770:. 621:. 609:: 343:. 206:C 20:)

Index

Port (video gaming)
software engineering
software
computing environment
CPU
library
portable
portāre
operating system
architecture
portable
programming language
x86
architecture
Microsoft Windows
macOS
Linux
embedded systems
mobile
portability
ARM
ISO
platforms
POSIX.1
recompiling
GNU Compiler Collection
Autotools
high-level programming languages
Eiffel
Esterel

Text is available under the Creative Commons Attribution-ShareAlike License. Additional terms may apply.