Jump to content

Glossary: Difference between revisions

Bit the bullet and added the anchors. The case sensitivity is a slight pain...
>Ryccardo
No edit summary
>Bbbbbbbbba
(Bit the bullet and added the anchors. The case sensitivity is a slight pain...)
Line 1:
;{{Anchor|0-based}}'''0-based'''
:''See: [[wikipedia:Zero-based numbering|Zero-based numbering]] on Wikipedia''
:A form of indexing, where what would be called "the first item" in normal English has an index value of 0, and "the second item" has an index value of 1, etc. It is sometimes considered more "natural" in computer science. An example in daily life is the [[wikipedia:Storey#European scheme|European scheme]] of floor numbering, where the ground floor can be considered as the 0th floor.
 
;{{Anchor|1-based}}'''1-based'''
:A form of indexing, where what would be called "the first item" in normal English has an index value of 1, and "the second item" has an index value of 2, etc.
 
;{{Anchor|Assembly (language)}}'''Assembly (language)'''
:A (processor-specific) programming language most close to machine code, to the point conversion from assembly to machine code, known as '''assembling''', is for the most part fully reversible - although any labels (arbitrary name assigned to code/memory locations) and comments will be lost.
:Compiled higher-level languages (i.e all those further distant from machine code) are '''compiled''' to assembly language just before being '''assembled''' into an '''object file''' made of machine code, which will (by itself or after being combined with other machine code and/or other files) form the final program (such as a ROM).
:''See also:'' [[#Disassembly|disassembly]]
 
;{{Anchor|Binary-coded decimal}}'''Binary-coded decimal''' (BCD)
:A technique for writing a number in hexadecimal where, unlike in the regular conversion from decimal to hexadecimal (for example, dec[58] = hex[3A]), the decimal digits are written as-is in hexadecimal, two per byte (for example, dec[58] = hex[58]).
:In Pokémon games, BCD is often used for quantities of money and casino coins; it is also fairly commonly used in clock chips, such as the ones used in generation II and III games with said feature.
 
;{{Anchor|Count byte}}'''Count byte'''
:A [[byte]] representing the number of items in a list. Usually notable when the list itself has a [[#Terminator|terminator]], since the code may determine the end of the list by the terminator at some places, and by the count byte at other places. Desynchronizing the count byte and the actual number of items in the list (according to the terminator) can cause glitches.
 
;{{Anchor|Disassembly}}'''Disassembly'''
:''See also:'' [[#Assembly (language)|assembly]], [[List of Pokémon disassembly projects]]
:The inverse process of assembling (i.e converting machine code to assembly language), possibly complemented by manual analysis to recreate the missing labels and comments.
:The result is a relatively easier to understand (and potentially easier to edit) program; where said program in an higher-level programming language (such as C, as in the case for most games for the GBA and DS) it is possible, although often with more effort, to go one step further ('''decompiling''') and produce a source file functionally equivalent to the original one.
:The creation and study of disassemblies, whether as a full-blown project or targeted study of a segment of code, is often useful for providing insight about complex and/or obscure game mechanics - most notably, the generation I and II Pokémon games have enjoyed a new wave of "scientific" research and understanding of glitches and other mechanics in the 2010s.
 
;{{Anchor|Jump table}}'''Jump table'''
:A table of addresses pointing to assembly code (typically entry points of functions). A relatively well-known example of a jump table is [https://github.com/pret/pokered/blob/725b86ebbec23bd1f53fd60bf0201c904fee951d/engine/items/items.asm#L18 ItemUsePtrTable] in Generation I. An invalid index into a jump table will usually cause glitches, possibly [[arbitrary code execution]] exploits.
 
<!--
;{{Anchor|Machine code}}'''Machine code'''
:A program written (directly, or more often converted from another format) in the processor's native coding. It is a binary format and therefore usually observed and/or edited with an hex editor
:Not all data accessible by a processor (such as that in ROM or RAM) is necessarily valid machine code, therefore it's imperative for a machine code program to be designed in such a way - yet it's not intrinsecally possible for the processor to "know any better" and tell apart valid machine code from other data, often resulting in undesirable side effects if such invalid code were to be executed.
:That data may however happen to form valid and meaningful machine code, as seen
-->
;{{Anchor|Party count}}'''Party count'''
:The value of the [[#Count byte|count byte]] for a party Pokémon list. Normally, it is just the number of Pokémon in the party.
 
;{{Anchor|Terminator}}'''Terminator'''
;'''Party count'''
:The value of the count byte for a party Pokémon list. Normally, it is just the number of Pokémon in the party.
 
;'''Terminator'''
:A value that signifies the end of a list or a string. To avoid ambiguity, it must be an otherwise invalid value for that list or string. Common values for terminators are 0x00 or 0xFF. Notably, in Generation I and II, the control character 0x50 usually acts as the terminator, although there are other control characters that also terminate the string (in addition to their other functions).
 
;{{Anchor|W^X}}'''W^X''' (Write Xor eXecute)
:Synonyms: Data Execution Prevention, No-Execute, ...
:A technology used by some systems, with the intent to prevent accidental or malicious execution of non-program data, involving making enforceable declarations of which memory addresses are supposed to contain machine code and which don't.
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.