ZASM Documentation

From ZCWiki
Jump to navigationJump to search

This page lists all the ZASM commands available for use, along with descriptions of how they work. This page is a work in progress, as most commands are as yet undeciphered.

Some commands have two versions, one ending in V, and the other ending on R. The difference is whether they work on "values" or "references". For example, this command:

SETV D0, 1234

Will put the value "1234" into the D0 register. However,

SETR D0, 1234

Will put whatever is at address $1234 into D0 (which is not what you want).

Below, a few "dummy" values are used to indicate what are acceptable arguments to the instructions. They are:

  • <target> - This is a memory address whose value will be overwritten. Generally, you will specify a register (such as D0). You may use any register that is not specified as read-only.
  • <source> - This is a memory address whose value will be read. Usually, this will be a register (such as D0). You may specify any register that is not write-only.
  • <targetsource> - This is a memory address whose value will be read, and then overwritten. You must specify a register that is not write- or read-only
  • <value> - This is a immediate value that will not be dereferenced. Do not use a register, it will not be dereferenced.

Instructions

Basic Commands

SETV, SETR

SETV <target>, <value>
SETR <target>, <source>

Copies the value into the target.

GOTO, GOTOR

GOTO  <target>
GOTOR <source>

Jumps execution to the target. The target is specified as "number of instructions from the beginning of the file", i.e. the line number. It can also be a label.

LOADI, STOREI

Load/Store Indirect

LOADI  <target>, <source>
STOREI <target>, <source>

Loads the value as though 'source' were the stack pointer into 'target'

LOAD1, LOAD2, SETA1, SETA2

LOAD1 <target>, <source>
LOAD2 <target>, <source>
SETA1 <source1>, <source2>
SETA2 <source1>, <source2>

Intended for use with the 'A' registers of each ffc to allow manipulating the D registers from the other ffcs on the screen, except they don't work

Register and Data Manipulation

PUSHV, PUSHR, POP

PUSHV <value>
PUSHR <source>

Pushes the specified value onto the stack and increments SP.

POP <target>

Pops the top value from the stack and loads it into target


Mathematical Operations, Data and Address Instructions

ADDR, ADDV, SUBR, SUBV, MULTR, MULTV, DIVR, DIVV, MODR, MODV

ADDR  <targetsource>, <source>
ADDV  <targetsource>, <value>
SUBR  <targetsource>, <source>
SUBV  <targetsource>, <value>
MULTR <targetsource>, <source>
MULTV <targetsource>, <value>
DIVR  <targetsource>, <source>
DIVV  <targetsource>, <value>
MODR  <targetsource>, <source>
MODV  <targetsource>, <value>

Performs the specified mathematical operation, with <source>/<value> as specified as the first operand and targetsource as the second operand, and stores the result in targetsource

Bitwise

  • ANDR
  • ANDV
  • ORR
  • ORV
  • XORR
  • XORV
  • NANDR
  • NANDV
  • NORR
  • NORV
  • XNORR
  • XNORV
  • NOT
  • LSHIFTR
  • LSHIFTV
  • RSHIFTR
  • RSHIFTV
  • BITNOT


Compare Values in Memory

COMPARER < > < >
COMPAREV < > < >

Additional GOTO Instructions

GOTOTRUE --> To research, then document. GOTO for infinite ( while(true) ) loops ?
GOTOFALSE --> To research, then document.
GOTOLESS --> To research, then document.
GOTOMORE --> To research, then document.

Main Instructions and Equivalent ZScript Functions

ZASM Instruction: QUIT

void Quit(); /**

  • Terminates execution of the current script. Does not return.
  • Caution: If called from a global script, the script itself exits.
  • / Example Use:

Quit(); QUIT


ZASM Instruction: WAITFRAME

void Waitframe(); /**

  • Temporarily halts execution of the current script. This function returns at
  • the beginning of the next frame of gameplay.
  • Slots 1, 3 and 4 Global scripts and item scripts only execute for one frame,
  • so in those scripts Waitframe() is essentially Quit().
  • It is safe to call Waitframe in the active global script.
  • A Waitframe is required in all infinite loops (e.g. while(true) ) so that ZC may
  • pause to break in order to advance to the next frame, then resume the loop from the start.
  • / Example Use:

Waitframe(); WAITFRAME


ZASM Instruction: WAITDRAW

void Waitdraw(); /**

  • Halts execution of the script until ZC's internal code has been run (movement,
  • collision detection, etc.), but before the screen is drawn. This can only
  • be used in the active global script.
  • Waitdraw() may only be called from the global active script; not from FFC scripts.
  • The sequence of ZC actions is as follows:
  • FFCs
  • Enemies
  • EWeapons
  • Link
  • LWeapons
  • Hookshot
  • Collision Checking
  • Waitdraw()
  • Drawing
  • Anything placed after Waitdraw() will not present effects until the next frame.
  • / Example Use:

WAITDRAW Waitdraw();

Mathematical Instructions

ZASM Instructions:

RNDR <d2>,<d3> 
RNDV
--> Which arg is the value?

int Rand(int maxvalue);

/**

  • Computes and returns a random integer between 0 and maxvalue,
  • or a negative value between maxvalue and 0 if maxvalue is negative.
  • / Example Use:

Rand(40); Produces a random number between 0 and 40.


ZASM Instruction: SINR d2,d3 SINV

float Sin(float deg);

/**

  • Returns the trigonometric sine of the parameter, which is interpreted
  • as a degree value.
  • / Example Use:

float x = Sin(32); x = 0.5299


ZASM Instruction: COSR d2,d3 COSV

float Cos(float deg);

/**

  • Returns the trigonometric cosine of the parameter, which is
  • interpreted as a degree value.
  • / Example Usage:

float x = Cos(40); x = 0.7660


ZASM Instruction: TANR d2,d3 TANV

float Tan(float deg);

/**

  • Returns the trigonometric tangent of the parameter, which is
  • interpreted as a degree value. The return value is undefined if
  • deg is of the form 90 + 180n for an integral value of n.
  • / Example Use:

float x = Tan(100); x = -5.6712


ZASM Instruction: ARCTANR (Does ARCTANV exist?)

float ArcTan(int x, int y); /**

  • Returns the trigonometric arctangent of the coordinates, which is
  • interpreted as a radian value.
  • / Example Use:


ZASM Instruction: ARCSINR ARCSINV

float ArcSin(float x); /**

  • Returns the trigonometric arcsine of x, which is
  • interpreted as a radian value.
  • / Example Use:


ZASM Instruction: ARCCOSR ARCCOSV

float ArcCos(float x); /**

  • Returns the trigonometric arccosine of x, which is
  • interpreted as a radian value.
  • / Example Use:


ZASM Instruction: MAXR MAXV

float Max(float a, float b); /**

  • Returns the greater of a and b.
  • / Example Use:


ZASM Instriction: MINR MINV

float Min(float a, float b); /**

  • Returns the lesser of a and b.
  • / Example Use:


ZASM Instruction: POWERR POWERV

int Pow(int base, int exp); /**

  • Returns base^exp. The return value is undefined for base=exp=0. Note
  • also negative values of exp may not be useful, as the return value is
  • truncated to the nearest integer.
  • / Example Use:


ZASM Instruction: LOG10

float Log10(float val); /**

  • Returns the log of val to the base 10. Any value <= 0 will return 0.
  • / Example Use:


ZASM Instruction: LOGE

float Ln(float val);

/**

  • Returns the natural logarithm of val (to the base e). Any value <= 0 will return 0.
  • / Example Use:

ZASM Instruction: FACTORIAL

int Factorial(int val); /**

  • Returns val!. val < 0 returns 0.
  • / Example Use:


ZASM Instruction: ABS

float Abs(float val); /**

  • Return the absolute value of the parameter, if possible. If the
  • absolute value would overflow the parameter, the return value is
  • undefined.
  • / Example Use:


ZASM Instruction: IPOWERR IPOWERV

int InvPow(int base, int exp); /**

  • Returns base^(1/exp). The return value is undefined for exp=0, or
  • if exp is even and base is negative. Note also that negative values
  • of exp may not be useful, as the return value is truncated to the
  • nearest integer.
  • / Example Use:


ZASM Instruction: SQROOTV SQROOTR

float Sqrt(float val); /**

  • Computes the square root of the parameter. The return value is
  • undefined for val < 0.
  • / Example Use:

int x = Sqrt(16); x = 4


//!Sources: OMultImmediate, OArcSinRegister //Is there a direct ZASM instruction equivalent, or does this function run as a routine?

float RadianSin(float rad); /**

  • Returns the trigonometric sine of the parameter, which is interpreted
  • as a radian value.
  • / Example Use:


//!Sources: OMultImmediate, OCosRegister //Is there a direct ZASM instruction equivalent, or does this function run as a routine?

float RadianCos(float rad); /**

  • Returns the trigonometric cosine of the parameter, which is
  • interpreted as a radian value.
  • / Example Use:


//!Sources: OMultImmediate, OTanRegister //Is there a direct ZASM instruction equivalent, or does this function run as a routine?

float RadianTan(float rad); /**

  • Returns the trigonometric tangent of the parameter, which is
  • interpreted as a radian value. The return value is undefined for
  • values of rad near (pi/2) + n*pi, for n an integer.
  • / Example Use:


Tracing

ZASM Instruction: TRACER d3 TRACEV

void Trace(float val); /**

  • Prints a line containing a string representation of val to allegro.log.
  • Useful for debugging scripts. You may trace int, and float types.
  • For b oolean values, see TraceB() below.
  • Values printed to allegro.log no not incorporate any spacing, or carriage
  • returns. You must manually add these into your commands.
  • Int values are not truncated when printed, and will always have four leading
  • zeros after the decimal point.
  • To add new lines (carriange returns), see TraceNL() below.
  • / Example Use:

int val = 4; Trace(val); Prints 4.000 to allegro.log

ZASM Instruction: TRACE2R d3 TRACE2V

void TraceB(bool state); /**

  • Prints a boolean state to allegro.log. Works as trace() above, but prints 'true'
  • or 'false' to allegro.log
  • / Example Use:

bool test = true; TraceB(test); Prints 'true' to allegro.log.


ZASM Instruction: TRACE3

void TraceToBase(int val, int base, int mindigits); /**

  • Prints a line in allegro.log representing 'val' in numerical base 'base',
  • where 2 <= base <= 36, with minimum digits 'mindigits'.
  • (Base must be at least base-2, and at most, base-36)
  • Can be useful for checking hex values or flags ORed together, or just to trace
  • an integer value, as Trace() always traces to four decimal places.
  • mindigits specifies the minimum number of integer digits to print.
  • Unlike Trace(), Decimal values are not printed. TraceToBase *does not* handle floats.
  • If you specify a floating point value as arg 'val', it will be Floored before conversion.
  • / Example Use:

TraceToBase(20,8,1); Converts (decimal) d20 to base-8 (o24 in base-8) and prints value '024' to allegro.log

TraceToBase(50,16,1); Converts (decimal) d50 to base-16 (0x32 hexadecimal) and prints value '0x32' to allegro.log.


ZASM Instruction: TRACE4

void ClearTrace(); /**

  • Clears allegro.log of all current traces and messages from Zelda Classic/ZQuest.
  • Works on a per-quest, per-session basis. Values recorded from previous sessions are not erased.
  • / Example Use

ClearTrace();


ZASM Instruction: TRACE5

void TraceNL(); /**

  • Traces a newline to allegro.log
  • This inserts a carriage return (as if pressing return/enter) into allegro.log
  • and is useful for providing formatting to debugging.
  • / Example Use:


Usage: TraceNL();


ZASM Instruction: TRACE6 <reg>

void TraceS(int s[]); /**

  • Works as Trace() above, but prints a full string to allegro.log, using the array pointer
  • (name) as its argument.
  • Maximum 512 characters. Functions from string.zh can be used to split larger strings.
  • / Example Use:

int testString[]="This is a string."; TraceS(testString); Prints 'This is a string.' to allegro.log.


Tilesheet Manipulation

ZASM Instruction: COPYTILERR d2,d3 COPYTILEVV COPYTILERV COPYTILEVR

void CopyTile(int srctile, int desttile); /**

  • Copies the tile specified by scrtile onto the tile space
  • specified by desttile. The valid tile value range is 0 to 65519.
  • This change is permanent / temporary (!check!) within the quest file
  • and will / not (!check!) be retained when saving the game.
  • / Example Use:

CopyTile(312,11614); Copies tile 312, to tile 11614. Tiles 312, and 11614 will be identical.


ZASM Instruction: SWAPTILERR d2,d3 SWAPTILEVV SWAPTILEVR SWAPTILERV

void SwapTile(int firsttile, int secondtile); /**

  • Swaps the two tiles specified by firsttile and secondtile.
  • The valid tile value range is 0 to 65519.
  • This change is permanent / temporary (!check!) within the quest file
  • and will / not (!check!) be retained when saving the game.
  • / Example Use:

SwapTile(312,11614); Changes tile 11614 into tile 312; and tile 312 into tile 11614, transposing their positions.


ZASM Instruction: CLEARTILER d3 CLEARTILEV

void ClearTile(int tileref); /**

  • Erases the tile specified by tileref.
  • This change is permanent / temporary (!check!) within the quest file
  • and will / not (!check!) be retained when saving the game.
  • Tiles are not / are (!check!) shifted upward to adjust for the cleared tile.
  • / Example Use:

ClearTile(21362); Clears tile 21362 by ( blanking it to colour 0 ) | ( removing it and shifting all tiles thereafter upward ).


To Document

  • OVERLAYTILEVV
  • OVERLAYTILEVR
  • OVERLAYTILERV
  • OVERLAYTILERR

Uncategorized

  • WARP
  • PLAYSOUNDR
  • PLAYSOUNDV
  • LOADLWEAPONR
  • LOADLWEAPONV
  • LOADITEMR
  • LOADITEMV
  • LOADNPCR
  • LOADNPCV
  • CREATELWEAPONR
  • CREATELWEAPONV
  • CREATEITEMR
  • CREATEITEMV
  • CREATENPCR
  • CREATENPCV
  • CREATEEWEAPONR
  • CREATEEWEAPONV
  • PITWARP
  • WARPR
  • PITWARPR
  • CLEARSPRITESR
  • CLEARSPRITESV
  • RECT
  • CIRCLE
  • ARC
  • ELLIPSE
  • LINE
  • PUTPIXEL
  • DRAWTILE
  • DRAWCOMBO
  • ELLIPSE2
  • SPLINE
  • FLOODFILL
  • MSGSTRR
  • MSGSTRV
  • ISVALIDITEM
  • ISVALIDNPC
  • PLAYMIDIR
  • PLAYMIDIV
  • ISVALIDLWPN
  • ISVALIDEWPN
  • LOADEWEAPONR
  • LOADEWEAPONV
  • ALLOCATEMEMR
  • ALLOCATEMEMV
  • DEALLOCATEMEMR
  • DEALLOCATEMEMV
  • WAITDRAW
  • LWPNUSESPRITER
  • LWPNUSESPRITEV
  • EWPNUSESPRITER
  • EWPNUSESPRITEV
  • LOADITEMDATAR
  • LOADITEMDATAV
  • ISSOLID
  • LAYERSCREEN
  • LAYERMAP
  • SECRETS
  • DRAWCHAR
  • GETSCREENFLAGS
  • QUAD
  • TRIANGLE
  • GAMEEND
  • DRAWINT
  • SETTRUE
  • SETFALSE
  • SETMORE
  • SETLESS
  • FASTTILE
  • FASTCOMBO
  • DRAWSTRING
  • SETSIDEWARP
  • SAVE
  • QUAD3D
  • TRIANGLE3D
  • SETCOLORB
  • SETDEPTHB
  • GETCOLORB
  • GETDEPTHB


Registers

FFC Related

  • REFFFC
  • FFCHEIGHT
  • FFCWIDTH
  • FFFLAGSD
  • FFINITD
  • FFINITDD
  • FFLINK
  • FFMISC
  • FFMISCD
  • FFSCRIPT
  • FFTHEIGHT
  • FFTWIDTH

Link Related

  • LINK
  • LINKACTION
  • LINKDIR
  • LINKDRUNK
  • LINKEQUIP
  • LINKHELD
  • LINKHP
  • LINKHXOFS
  • LINKHXSZ
  • LINKHYOFS
  • LINKHYSZ
  • LINKHZSZ
  • LINKINVINC
  • LINKINVIS
  • LINKITEMD
  • LINKITEMJINX
  • LINKJUMP
  • LINKLADDERX
  • LINKLADDERY
  • LINKMAXHP
  • LINKMAXMP
  • LINKMISC
  • LINKMISCD
  • LINKMP
  • LINKSWORDJINX
  • LINKTXSZ
  • LINKTYSZ
  • LINKX
  • LINKXOFS
  • LINKY
  • LINKYOFS
  • LINKZ
  • LINKZOFS

NPC Related

  • REFNPC
  • REFNPCCLASS
  • NPCX
  • NPCY
  • NPCZ
  • NPCJUMP
  • NPCDIR
  • NPCRATE
  • NPCSTEP
  • NPCFRAMERATE
  • NPCHALTRATE
  • NPCDRAWTYPE
  • NPCHP
  • NPCID
  • NPCDP
  • NPCWDP
  • NPCOTILE
  • NPCENEMY
  • NPCWEAPON
  • NPCITEMSET
  • NPCCSET
  • NPCBOSSPAL
  • NPCBGSFX
  • NPCCOUNT
  • NPCHXOFS
  • NPCHYOFS
  • NPCXOFS
  • NPCYOFS
  • NPCZOFS
  • NPCHXSZ
  • NPCHYSZ
  • NPCHZSZ
  • NPCHOMING
  • NPCDD
  • NPCD
  • NPCMISCD
  • NPCMISC
  • NPCMFLAGS
  • NPCCOLLDET
  • NPCSTUN
  • NPCDEFENSED
  • NPCEXTEND
  • NPCTILE
  • NPCTXSZ
  • NPCTYPE
  • NPCTYSZ

EWeapon Related

  • EWPNANGLE
  • EWPNANGULAR
  • EWPNASPEED
  • EWPNBEHIND
  • EWPNCOLLDET
  • EWPNCOUNT
  • EWPNCSET
  • EWPNDEAD
  • EWPNDIR
  • EWPNDRAWTYPE
  • EWPNEXTEND
  • EWPNFLASH
  • EWPNFLASHCSET
  • EWPNFLIP
  • EWPNFRAME
  • EWPNFRAMES
  • EWPNHXOFS
  • EWPNHXSZ
  • EWPNHYOFS
  • EWPNHYSZ
  • EWPNHZSZ
  • EWPNID
  • EWPNJUMP
  • EWPNMISC
  • EWPNMISCD
  • EWPNOCSET
  • EWPNOTILE
  • EWPNPOWER
  • EWPNSTEP
  • EWPNTILE
  • EWPNTXSZ
  • EWPNTYSZ
  • EWPNX
  • EWPNXOFS
  • EWPNY
  • EWPNYOFS
  • EWPNZ
  • EWPNZOFS

LWeapon Related

  • LWPNANGLE
  • LWPNANGULAR
  • LWPNASPEED
  • LWPNBEHIND
  • LWPNCOLLDET
  • LWPNCOUNT
  • LWPNCSET
  • LWPNDEAD
  • LWPNDIR
  • LWPNDRAWTYPE
  • LWPNEXTEND
  • LWPNFLASH
  • LWPNFLASHCSET
  • LWPNFLIP
  • LWPNFRAME
  • LWPNFRAMES
  • LWPNHXOFS
  • LWPNHXSZ
  • LWPNHYOFS
  • LWPNHYSZ
  • LWPNHZSZ
  • LWPNID
  • LWPNJUMP
  • LWPNMISC
  • LWPNMISCD
  • LWPNOCSET
  • LWPNOTILE
  • LWPNPOWER
  • LWPNSTEP
  • LWPNTILE
  • LWPNTXSZ
  • LWPNTYSZ
  • LWPNX
  • LWPNXOFS
  • LWPNY
  • LWPNYOFS
  • LWPNZ
  • LWPNZOFS

Item Related

  • IDATAAMOUNT
  • IDATACOUNTER
  • IDATAFAMILY
  • IDATAKEEP
  • IDATALEVEL
  • IDATAMAX
  • IDATASETMAX
  • IDATAUSESOUND
  • ITEMASPEED
  • ITEMCOUNT
  • ITEMCSET
  • ITEMDELAY
  • ITEMDRAWTYPE
  • ITEMEXTEND
  • ITEMFLASH
  • ITEMFLASHCSET
  • ITEMFLIP
  • ITEMFRAME
  • ITEMFRAMES
  • ITEMHXOFS
  • ITEMHXSZ
  • ITEMHYOFS
  • ITEMHYSZ
  • ITEMHZSZ
  • ITEMID
  • ITEMJUMP
  • ITEMMISC
  • ITEMMISCD
  • ITEMOTILE
  • ITEMPICKUP
  • ITEMTILE
  • ITEMTXSZ
  • ITEMTYSZ
  • ITEMX
  • ITEMXOFS
  • ITEMY
  • ITEMYOFS
  • ITEMZ
  • ITEMZOFS

Input Related

*** Input Functions *** * The following Input* boolean values return true if the player is pressing * the corresponding button, analog stick, or key. Writing to this variable simulates * the press or release of that referenced button, analog stick, or key. */

bool InputStart; INPUTSTART

bool InputMap; INPUTMAP

bool InputUp; INPUTUP

bool InputDown; INPUTDOWN

bool InputLeft; INPUTLEFT

bool InputRight; INPUTRIGHT

bool InputA; INPUTA

bool InputB; INPUTB

bool InputL; INPUTL

bool InputR; INPUTR

bool InputEx1 INPUTEX1

bool InputEx2 INPUTEX2

bool InputEx3 INPUTEX3

bool InputEx4 INPUTEX4

bool InputAxisUp; INPUTAXISUP

bool InputAxisDown; INPUTAXISDOWN

bool InputAxisLeft; INPUTAXISLEFT

bool InputAxisRight; INPUTAXISRIGHT


*** Press Functions *** /** * The following Press* boolean values return true if the player activated * the corresponding button, analog stick, or key this frame. Writing to this * variable simulates the press or release of that referenced button, analog stick, * or keys input press state. */


bool PressStart; INPUTPRESSSTART

bool PressMap; INPUTPRESSMAP ( Does this exist? I inserted this, because logically, it should, but it was missing on the wiki. )

bool PressUp; INPUTPRESSUP

bool PressDown; INPUTPRESSDOWN

bool PressLeft; INPUTPRESSLEFT

bool PressRight; INPUTPRESSRIGHT

bool PressA; INPUTPRESSA

bool PressB; INPUTPRESSB

bool PressL; INPUTPRESSL

bool PressR; INPUTPRESSR

bool PressEx1 INPUTPRESSEX1

bool PressEx2 INPUTPRESSEX2

bool PressEx3 INPUTPRESSEX3

bool PressEx4 INPUTPRESSEX4

bool PressAxisUp; PRESSAXISUP

bool PressAxisDown; PRESSAXISDOWN

bool PressAxisLeft; PRESSAXISLEFT

bool PressAxisRight; PRESSAXISRIGHT

/** * The mouse's in-game X position. This value is undefined if * the mouse pointer is outside the Zelda Classic window. */ int InputMouseX; INPUTMOUSEX

/** * The mouse's in-game Y position. This value is undefined if * the mouse pointer is outside the Zelda Classic window. */ int InputMouseY; INPUTMOUSEY

/** * Whether the left or right mouse buttons are pressed, as two flags OR'd (|) together; * use the MB_ constants or the Input'X'Click functions in std.zh to check the button states. * InputMouseB is read only; while setting it is not syntactically incorrect, it does nothing * If you are not comfortable with binary, you can use the InputMouse'x' functions in std.zh */ int InputMouseB; INPUTMOUSEB

/** * The current state of the mouse's scroll wheel, negative for scrolling down and positive for scrolling up. */ int InputMouseZ; INPUTMOUSEZ

Misc

Uncategorized

  • A
  • COMBOC
  • COMBOCD
  • COMBOCDM
  • COMBOD
  • COMBODD
  • COMBODDM
  • COMBOF
  • COMBOFD
  • COMBOFDM
  • COMBOID
  • COMBOIDM
  • COMBOSD
  • COMBOSDM
  • COMBOTD
  • COMBOTDM
  • CSET
  • CURDMAP
  • CURDSCR
  • CURLEVEL
  • CURMAP
  • CURSCR
  • D
  • DATA
  • DELAY
  • DMAPFLAGSD
  • FLAG
  • GAMECHEAT
  • GAMECONTDMAP
  • GAMECONTSCR
  • GAMECOUNTER
  • GAMECOUNTERD
  • GAMEDCOUNTER
  • GAMEDCOUNTERD
  • GAMEDEATHS
  • GAMEGENERIC
  • GAMEGENERICD
  • GAMEGUYCOUNT
  • GAMEGUYCOUNTD
  • GAMEHASPLAYED
  • GAMEITEMS
  • GAMEITEMSD
  • GAMELITEMS
  • GAMELITEMSD
  • GAMELKEYS
  • GAMELKEYSD
  • GAMEMCOUNTER
  • GAMEMCOUNTERD
  • GAMETIME
  • GAMETIMEVALID
  • GD
  • GDD
  • GETMIDI
  • GLOBALRAM
  • GLOBALRAMD
  • GS
  • HEIGHT
  • LIT
  • QUAKE
  • REFEWPN
  • REFEWPNCLASS
  • REFITEM
  • REFITEMCLASS
  • REFLWPN
  • REFLWPNCLASS
  • SAVERAM
  • SCRDOOR
  • SCRDOORD
  • SCREENEFLAGS
  • SCREENEFLAGSD
  • SCREENFLAGS
  • SCREENFLAGSD
  • SCREENSTATE
  • SCREENSTATED
  • SCREENSTATEDD
  • SCRIPTRAM
  • SCRIPTRAMD
  • SD
  • SDD
  • SDDD
  • SDDDD
  • SP
  • WAVY
  • WIDTH
  • X
  • XD
  • XD2
  • Y
  • YD
  • YD



Not Implemented

  • ENQUEUER
  • ENQUEUEV
  • DEQUEUE
  • CHECKTRIG
  • COMPOUNDR
  • COMPOUNDV
  • FLIPROTTILEVV
  • FLIPROTTILEVR
  • FLIPROTTILERV
  • FLIPROTTILERR
  • GETTILEPIXELV
  • GETTILEPIXELR
  • SETTILEPIXELV
  • SETTILEPIXELR
  • SHIFTTILEVV
  • SHIFTTILEVR
  • SHIFTTILERV
  • SHIFTTILERR

Deprecated

  • DECLARE
  • PTROFF

Register Reservations

SP 
stack pointer
D4 
stack frame pointer
D6 
stack frame offset accumulator
D2 
expression accumulator #1
D3 
expression accumulator #2
D0 
array index accumulator
D1 
secondary array index accumulator
D5 
pure SETR sink