Free Hero Mesh

Check-in [21abf7afd3]
Login
This is a mirror of the main repository for Free Hero Mesh. New tickets and changes will not be accepted at this mirror.
Overview
Comment:Implement the "Data" instruction to read string data.
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 21abf7afd30f0896fc918a1519df55779ee94afc
User & Date: user on 2021-05-27 02:17:14
Other Links: manifest | tags
Context
2021-05-27
22:35
Some improvements to documentation. (No code changes.) check-in: a62361241e user: user tags: trunk
02:17
Implement the "Data" instruction to read string data. check-in: 21abf7afd3 user: user tags: trunk
2021-05-26
05:03
Implement the \d escape for embedding data in strings. The ability to use this data is not implemented yet. check-in: a9cc459c7a user: user tags: trunk
Changes

Modified class.doc from [b18e2bc6a7] to [1f9127ef0c].

82
83
84
85
86
87
88


89

90
91
92
93
94
95
96
82
83
84
85
86
87
88
89
90

91
92
93
94
95
96
97
98







+
+
-
+







\c
  Makes further text centred.

\dDATA\
  Includes inline data in the string. The data is not displayed, but
  can be read by class codes, or used in level titles to provide data
  and delimieters for the auto-generated table of contents. Data items
  are separated by semicolons; each item can be a underscore to mean a
  mark, a number (decimal integers only), or a class name with $ at front.
  are separated by semicolons. (Not fully implemented yet)
  (Not fully implemented yet)

\iCLASS:NUMBER\
  Displays a picture. Give the class name (without $ at first) and a
  colon and the zero-based index number of the picture in that class.
  This is then followed by another backslash. The picture may span
  multiple lines; it will automatically move the text to make room.

1263
1264
1265
1266
1267
1268
1269







1270
1271
1272
1273
1274
1275
1276
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285







+
+
+
+
+
+
+







  the object cannot be created due to the CollisionLayers, or if the new
  object is destroyed before its CREATE message returns.

cz?  ( any -- bool )
  True if the value is a class or zero, or false if it is neither a class
  nor zero. Error if it is a sound.

Data  ( string index -- ... )
  Read string data. If the index is a number, it is the zero-based number
  of which data block in the string to read; all of the data in that block
  is pushed to the stack. If there isn't enough data blocks, then nothing
  will be pushed to the stack. If the index is the KEY message, then all
  of the key codes of the quiz buttons in the string are push to stack.

DelInventory  ( class image -- ) **
  Delete an item from the inventory; see SetInventory for more details.

Delta  ( in1 in2 -- out )
  Subtracts the smaller input from the larger (unsigned).

Destroy  ( -- value ) **

Modified exec.c from [51d82ac75e] to [867f705250].

1935
1936
1937
1938
1939
1940
1941

































































1942
1943
1944
1945
1946
1947
1948
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013







+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+







      if(v1) Push(UVALUE(v1-1,TY_STRING)); else Push(NVALUE(0));
      break;
    case TY_CODE:
      return v1;
  }
  return ptr+n+n+2;
}

static void v_data(Value v1,Value v2) {
  const unsigned char*s;
  int i;
  Value v;
  if(v1.t!=TY_STRING && v1.t!=TY_LEVELSTRING) Throw("Type mismatch");
  s=value_string_ptr(v1);
  if(v2.t==TY_NUMBER) {
    for(;;) {
      s+=strcspn(s,"\x1F\x1E");
      if(!*s) return;
      if(*s==31) {
        s++;
        if(*s) s++;
      } else {
        s++;
        if(!v2.u) break;
        v2.u--;
      }
    }
    while(s && *s && *s!='\\') {
      if(*s=='_') {
        v.t=TY_MARK;
        v.u=0;
        s++;
      } else if(*s=='$') {
        s++;
        v.t=TY_CLASS;
        i=strcspn(s,";\\");
        for(v.u=1;v.u<0x4000;v.u++) {
          if(classes[v.u] && !(classes[v.u]->cflags&(CF_NOCLASS2|CF_GROUP)) && i==strlen(classes[v.u]->name) && !strncmp(s,classes[v.u]->name,i)) {
            s+=i;
            break;
          }
        }
      } else {
        v.t=TY_NUMBER;
        v.u=strtol(s,(char**)&s,10);
      }
      StackReq(0,1);
      Push(v);
      if(*s=='\\') break;
      if(*s!=';' && *s!='\\') Throw("Invalid string data");
      if(*s==';') s++; else break;
    }
  } else if(v2.t==TY_MESSAGE && v2.u==MSG_KEY) {
    v.t=TY_NUMBER;
    v.u=0;
    for(;;) {
      s+=strcspn(s,"\x1F\x10");
      if(!*s) return;
      if(*s==31) {
        s++;
        if(*s) s++;
      } else {
        s++;
        StackReq(0,1);
        if(*s) v.u=*s++;
        Push(v);
      }
    }
  } else {
    Throw("Type mismatch");
  }
}

// Here is where the execution of a Free Hero Mesh bytecode subroutine is executed.
#define NoIgnore() do{ changed=1; }while(0)
#define GetVariableOf(a,b) (i=v_object(Pop()),i==VOIDLINK?NVALUE(0):b(objects[i]->a))
#define GetVariableOrAttributeOf(a,b) (t2=Pop(),t2.t==TY_CLASS?NVALUE(classes[t2.u]->a):(i=v_object(t2),i==VOIDLINK?NVALUE(0):b(objects[i]->a)))
#define Numeric(a) do{ if((a).t!=TY_NUMBER) Throw("Type mismatch"); }while(0)
#define DivideBy(a) do{ Numeric(a); if(!(a).u) Throw("Division by zero"); }while(0)
2060
2061
2062
2063
2064
2065
2066

2067
2068
2069
2070
2071
2072
2073
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139







+







    case OP_COLOC_C: StackReq(2,1); t1=Pop(); t2=Pop(); i=colocation(v_object(t1),v_object(t2)); Push(NVALUE(i)); break;
    case OP_COMPATIBLE: StackReq(0,1); if(classes[o->class]->cflags&CF_COMPATIBLE) Push(NVALUE(1)); else Push(NVALUE(0)); break;
    case OP_COMPATIBLE_C: StackReq(1,1); GetClassFlagOf(CF_COMPATIBLE); break;
    case OP_COPYARRAY: NoIgnore(); StackReq(2,0); t2=Pop(); t1=Pop(); v_copy_array(t1,t2); break;
    case OP_COUNT: StackReq(1,2); i=v_count(); Push(NVALUE(i)); break;
    case OP_CREATE: NoIgnore(); StackReq(5,1); t5=Pop(); t4=Pop(); t3=Pop(); t2=Pop(); t1=Pop(); Push(v_create(obj,t1,t2,t3,t4,t5)); break;
    case OP_CREATE_D: NoIgnore(); StackReq(5,0); t5=Pop(); t4=Pop(); t3=Pop(); t2=Pop(); t1=Pop(); v_create(obj,t1,t2,t3,t4,t5); break;
    case OP_DATA: StackReq(2,1); t2=Pop(); t1=Pop(); v_data(t1,t2); break;
    case OP_DELINVENTORY: StackReq(2,0); t2=Pop(); t1=Pop(); v_delete_inventory(t1,t2); break;
    case OP_DELTA: StackReq(2,1); t2=Pop(); Numeric(t2); t1=Pop(); Numeric(t1); Push(NVALUE(t1.u>t2.u?t1.u-t2.u:t2.u-t1.u)); break;
    case OP_DENSITY: StackReq(0,1); Push(NVALUE(o->density)); break;
    case OP_DENSITY_C: StackReq(1,1); Push(GetVariableOrAttributeOf(density,NVALUE)); break;
    case OP_DENSITY_E: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); change_density(obj,t1.s); break;
    case OP_DENSITY_E16: NoIgnore(); StackReq(1,0); t1=Pop(); Numeric(t1); change_density(obj,t1.s&0xFFFF); break;
    case OP_DENSITY_EC: NoIgnore(); StackReq(2,0); t1=Pop(); Numeric(t1); change_density(v_object(Pop()),t1.s); break;

Modified instruc from [3f9b18c19d] to [e1be2aa284].

204
205
206
207
208
209
210
211

212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227

228
229
230
231
232
233
234
204
205
206
207
208
209
210

211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235







-
+
















+







-InPlace
-DefaultImage
-Help
-EditorHelp
-Others
-SUBS

; Main operations
; Main operations / miscellaneous
Animate
AnimateDead
,Assassinate ; destroy without sending any messages
.Broadcast
BroadcastAnd ; Broadcast, but result is AND of return values
BroadcastAndEx
*BroadcastClass ; for (Broadcast [class])
.BroadcastEx ; broadcast with three arguments
BroadcastList ; Broadcast, pushing results to stack
BroadcastListEx
BroadcastSum ; Broadcast, but result is sum of return values
BroadcastSumEx
chain
,Chebyshev
,Coloc
.Create
Data
DelInventory
Delta
.,Destroy
FlushClass
,FlushObj
GetInventory
HeightAt

Modified instruc.h from [bdce706361] to [89714eb101].

312
313
314
315
316
317
318

319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
































































































































447
448
449
450
451

452
453

454
455
456
457
458
459

460
461
462
463
464
465
466
467



468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484

485
486
487
488
489
490
491
312
313
314
315
316
317
318
319
































































































































320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451

452
453

454
455
456
457
458
459

460
461
462
463
464
465



466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484

485
486
487
488
489
490
491
492







+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+




-
+

-
+





-
+





-
-
-
+
+
+
















-
+







#define OP_CHAIN 32920
#define OP_CHEBYSHEV 32921
#define OP_CHEBYSHEV_C 34969
#define OP_COLOC 32922
#define OP_COLOC_C 34970
#define OP_CREATE 32923
#define OP_CREATE_D 41115
#define OP_DATA 32924
#define OP_DELINVENTORY 32924
#define OP_DELTA 32925
#define OP_DESTROY 32926
#define OP_DESTROY_C 34974
#define OP_DESTROY_D 41118
#define OP_DESTROY_CD 43166
#define OP_FLUSHCLASS 32927
#define OP_FLUSHOBJ 32928
#define OP_FLUSHOBJ_C 34976
#define OP_GETINVENTORY 32929
#define OP_HEIGHTAT 32930
#define OP_IGNOREKEY 32931
#define OP_INTMOVE 32932
#define OP_INTMOVE_C 34980
#define OP_INTMOVE_D 41124
#define OP_INTMOVE_CD 43172
#define OP_JUMPTO 32933
#define OP_JUMPTO_C 34981
#define OP_JUMPTO_D 41125
#define OP_JUMPTO_CD 43173
#define OP_LOC 32934
#define OP_LOC_C 34982
#define OP_LOCATEME 32935
#define OP_LOSELEVEL 32936
#define OP_MANHATTAN 32937
#define OP_MANHATTAN_C 34985
#define OP_MAXINVENTORY 32938
#define OP_MOVE 32939
#define OP_MOVE_C 34987
#define OP_MOVE_D 41131
#define OP_MOVE_CD 43179
#define OP_MOVEPLUS 32940
#define OP_MOVEPLUS_C 34988
#define OP_MOVEPLUS_D 41132
#define OP_MOVEPLUS_CD 43180
#define OP_MOVETO 32941
#define OP_MOVETO_C 34989
#define OP_MOVETO_D 41133
#define OP_MOVETO_CD 43181
#define OP_PLUSMOVE 32942
#define OP_PLUSMOVE_C 34990
#define OP_PLUSMOVE_D 41134
#define OP_PLUSMOVE_CD 43182
#define OP_MINUSMOVE 32943
#define OP_MINUSMOVE_C 34991
#define OP_MINUSMOVE_D 41135
#define OP_MINUSMOVE_CD 43183
#define OP_NEWX 32944
#define OP_NEWXY 32945
#define OP_NEWY 32946
#define OP_OBJABOVE 32947
#define OP_OBJABOVE_C 34995
#define OP_OBJBELOW 32948
#define OP_OBJBELOW_C 34996
#define OP_OBJBOTTOMAT 32949
#define OP_OBJCLASSAT 32950
#define OP_OBJDIR 32951
#define OP_OBJDIR_C 34999
#define OP_OBJLAYERAT 32952
#define OP_OBJMOVINGTO 32953
#define OP_OBJTOPAT 32954
#define OP_POPUP 32955
#define OP_POPUPARGS 32956
#define OP_REL 32957
#define OP_REL_C 35005
#define OP_SEEK 32958
#define OP_SEEK_C 35006
#define OP_SEND 32959
#define OP_SEND_C 35007
#define OP_SEND_D 41151
#define OP_SEND_CD 43199
#define OP_SENDEX 32960
#define OP_SENDEX_C 35008
#define OP_SENDEX_D 41152
#define OP_SENDEX_CD 43200
#define OP_SETINVENTORY 32961
#define OP_SOUND 32962
#define OP_SYNCHRONIZE 32963
#define OP_TARGET 32964
#define OP_TARGET_C 35012
#define OP_TRACE 32965
#define OP_VOLUMEAT 32966
#define OP_WINLEVEL 32967
#define OP_XDIR 32968
#define OP_XDIR_C 35016
#define OP_XYDIR 32969
#define OP_YDIR 32970
#define OP_YDIR_C 35018
#define OP_MARK 32971
#define OP_TMARK 32972
#define OP_IN 32973
#define OP_NIN 32974
#define OP_MBEGIN 32975
#define OP_FLIP 32976
#define OP_COUNT 32977
#define OP_CLEAR 32978
#define OP_UNIQ 32979
#define OP_ARRAY 32980
#define OP_GETARRAY 32981
#define OP_INITARRAY 32982
#define OP_SETARRAY 32983
#define OP_ARRAYCELL 32984
#define OP_ARRAYSLICE 32985
#define OP_COPYARRAY 32986
#define OP_DOTPRODUCT 32987
#define OP_PATTERN 32988
#define OP_PATTERN_C 35036
#define OP_PATTERN_E 37084
#define OP_PATTERN_EC 39132
#define OP_PATTERNS 32989
#define OP_PATTERNS_C 35037
#define OP_PATTERNS_E 37085
#define OP_PATTERNS_EC 39133
#define OP_ROOK 32990
#define OP_BISHOP 32991
#define OP_QUEEN 32992
#define OP_CUT 32993
#define OP_ABSTRACT 32994
#define OP_SUPER 32995
#define OP_SUPER_C 35043
#define OP_FUNCTION 32996
#define OP_LOCAL 32997
#define OP_LABEL 32998
#define OP_STRING 32999
#define OP_INT16 33000
#define OP_INT32 33001
#define OP_DISPATCH 33002
#define OP_USERFLAG 33003
#define OP_DELINVENTORY 32925
#define OP_DELTA 32926
#define OP_DESTROY 32927
#define OP_DESTROY_C 34975
#define OP_DESTROY_D 41119
#define OP_DESTROY_CD 43167
#define OP_FLUSHCLASS 32928
#define OP_FLUSHOBJ 32929
#define OP_FLUSHOBJ_C 34977
#define OP_GETINVENTORY 32930
#define OP_HEIGHTAT 32931
#define OP_IGNOREKEY 32932
#define OP_INTMOVE 32933
#define OP_INTMOVE_C 34981
#define OP_INTMOVE_D 41125
#define OP_INTMOVE_CD 43173
#define OP_JUMPTO 32934
#define OP_JUMPTO_C 34982
#define OP_JUMPTO_D 41126
#define OP_JUMPTO_CD 43174
#define OP_LOC 32935
#define OP_LOC_C 34983
#define OP_LOCATEME 32936
#define OP_LOSELEVEL 32937
#define OP_MANHATTAN 32938
#define OP_MANHATTAN_C 34986
#define OP_MAXINVENTORY 32939
#define OP_MOVE 32940
#define OP_MOVE_C 34988
#define OP_MOVE_D 41132
#define OP_MOVE_CD 43180
#define OP_MOVEPLUS 32941
#define OP_MOVEPLUS_C 34989
#define OP_MOVEPLUS_D 41133
#define OP_MOVEPLUS_CD 43181
#define OP_MOVETO 32942
#define OP_MOVETO_C 34990
#define OP_MOVETO_D 41134
#define OP_MOVETO_CD 43182
#define OP_PLUSMOVE 32943
#define OP_PLUSMOVE_C 34991
#define OP_PLUSMOVE_D 41135
#define OP_PLUSMOVE_CD 43183
#define OP_MINUSMOVE 32944
#define OP_MINUSMOVE_C 34992
#define OP_MINUSMOVE_D 41136
#define OP_MINUSMOVE_CD 43184
#define OP_NEWX 32945
#define OP_NEWXY 32946
#define OP_NEWY 32947
#define OP_OBJABOVE 32948
#define OP_OBJABOVE_C 34996
#define OP_OBJBELOW 32949
#define OP_OBJBELOW_C 34997
#define OP_OBJBOTTOMAT 32950
#define OP_OBJCLASSAT 32951
#define OP_OBJDIR 32952
#define OP_OBJDIR_C 35000
#define OP_OBJLAYERAT 32953
#define OP_OBJMOVINGTO 32954
#define OP_OBJTOPAT 32955
#define OP_POPUP 32956
#define OP_POPUPARGS 32957
#define OP_REL 32958
#define OP_REL_C 35006
#define OP_SEEK 32959
#define OP_SEEK_C 35007
#define OP_SEND 32960
#define OP_SEND_C 35008
#define OP_SEND_D 41152
#define OP_SEND_CD 43200
#define OP_SENDEX 32961
#define OP_SENDEX_C 35009
#define OP_SENDEX_D 41153
#define OP_SENDEX_CD 43201
#define OP_SETINVENTORY 32962
#define OP_SOUND 32963
#define OP_SYNCHRONIZE 32964
#define OP_TARGET 32965
#define OP_TARGET_C 35013
#define OP_TRACE 32966
#define OP_VOLUMEAT 32967
#define OP_WINLEVEL 32968
#define OP_XDIR 32969
#define OP_XDIR_C 35017
#define OP_XYDIR 32970
#define OP_YDIR 32971
#define OP_YDIR_C 35019
#define OP_MARK 32972
#define OP_TMARK 32973
#define OP_IN 32974
#define OP_NIN 32975
#define OP_MBEGIN 32976
#define OP_FLIP 32977
#define OP_COUNT 32978
#define OP_CLEAR 32979
#define OP_UNIQ 32980
#define OP_ARRAY 32981
#define OP_GETARRAY 32982
#define OP_INITARRAY 32983
#define OP_SETARRAY 32984
#define OP_ARRAYCELL 32985
#define OP_ARRAYSLICE 32986
#define OP_COPYARRAY 32987
#define OP_DOTPRODUCT 32988
#define OP_PATTERN 32989
#define OP_PATTERN_C 35037
#define OP_PATTERN_E 37085
#define OP_PATTERN_EC 39133
#define OP_PATTERNS 32990
#define OP_PATTERNS_C 35038
#define OP_PATTERNS_E 37086
#define OP_PATTERNS_EC 39134
#define OP_ROOK 32991
#define OP_BISHOP 32992
#define OP_QUEEN 32993
#define OP_CUT 32994
#define OP_ABSTRACT 32995
#define OP_SUPER 32996
#define OP_SUPER_C 35044
#define OP_FUNCTION 32997
#define OP_LOCAL 32998
#define OP_LABEL 32999
#define OP_STRING 33000
#define OP_INT16 33001
#define OP_INT32 33002
#define OP_DISPATCH 33003
#define OP_USERFLAG 33004
#ifdef HEROMESH_CLASS
static const Op_Names op_names[]={
{"*",8486939},
{"+",8421401},
{"+Move",10584238},
{"+Move",10584239},
{"-",8421402},
{"-Move",10584239},
{"-Move",10584240},
{"-rot",8421382},
{".",10518528},
{"/",8486940},
{"ANHH",8389394},
{"ARRIVED",8389124},
{"Abstract",8683746},
{"Abstract",8683747},
{"Animate",8421516},
{"AnimateDead",8421517},
{"Arg1",8552571},
{"Arg2",8552572},
{"Arg3",8552573},
{"Array",8683732},
{"ArrayCell",8421592},
{"ArraySlice",8421593},
{"Array",8683733},
{"ArrayCell",8421593},
{"ArraySlice",8421594},
{"Arrivals",8618088},
{"Arrived",8618086},
{"Assassinate",8487054},
{"B",9437196},
{"BANG",8389380},
{"BEDOINGNG",8389406},
{"BEEDEEP",8389404},
{"BEGIN_TURN",8389123},
{"BLOCKED",8389144},
{"BOOOM",8389410},
{"BOUNCE",8389415},
{"BRRREEET",8389396},
{"BRRRT",8389395},
{"BUZZER",8389420},
{"BWEEP",8389397},
{"Background",8683650},
{"Bishop",8683743},
{"Bishop",8683744},
{"Broadcast",10518671},
{"BroadcastAnd",8421520},
{"BroadcastAndEx",8421521},
{"BroadcastEx",10518675},
{"BroadcastList",8421524},
{"BroadcastListEx",8421525},
{"BroadcastSum",8421526},
503
504
505
506
507
508
509
510

511
512
513
514
515
516
517
518
519

520
521
522


523
524
525
526

527
528
529
530
531

532
533
534
535
536
537
538
539
540
541
542


543
544
545
546
547


548
549
550
551
552
553
554

555
556
557

558
559
560
561

562
563

564
565
566
567

568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583



584
585
586
587


588
589
590
591
592
593
594
595
596


597
598

599
600
601
602
603
604
605
606
607



608
609
610
611
612
613
614
615
616
617
618
619








620
621
622


623
624
625
626
627
628
629


630
631
632
633
634
635
636
637
638


639
640
641
642
643
644
645
646
647
648

649
650
651
652
653




654
655
656
657
658

659
660
661
662


663
664
665
666
667

668
669

670
671
672
673
674
675
676
677
678

679
680
681
682
683
684
685



686
687

688
689
690

691
692
693
694
695
696
697
504
505
506
507
508
509
510

511
512
513
514
515
516
517
518
519
520
521
522


523
524
525
526
527

528
529
530
531
532

533
534
535
536
537
538
539
540
541
542


543
544
545
546
547


548
549
550
551
552
553
554
555

556
557
558

559
560
561
562

563
564

565
566
567
568

569
570
571
572
573
574
575
576
577
578
579
580
581
582



583
584
585
586
587


588
589
590
591
592
593
594
595
596


597
598
599

600
601
602
603
604
605
606



607
608
609
610
611
612
613








614
615
616
617
618
619
620
621
622


623
624
625
626
627
628
629


630
631
632
633
634
635
636
637
638


639
640
641
642
643
644
645
646
647
648
649

650
651




652
653
654
655
656
657
658
659

660
661
662


663
664
665
666
667
668

669
670

671
672
673
674
675
676
677
678
679

680
681
682
683
684



685
686
687
688

689
690
691

692
693
694
695
696
697
698
699







-
+









+

-
-
+
+



-
+




-
+









-
-
+
+



-
-
+
+






-
+


-
+



-
+

-
+



-
+













-
-
-
+
+
+


-
-
+
+







-
-
+
+

-
+






-
-
-
+
+
+




-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+

-
-
+
+





-
-
+
+







-
-
+
+









-
+

-
-
-
-
+
+
+
+




-
+


-
-
+
+




-
+

-
+








-
+




-
-
-
+
+
+

-
+


-
+







{"Chebyshev",8487065},
{"Class",8486972},
{"Climb",9142352},
{"CodePage",8683651},
{"CollisionLayers",8487031},
{"Coloc",8487066},
{"Compatible",8487030},
{"CopyArray",8421594},
{"CopyArray",8421595},
{"Create",10518683},
{"DEEP_POP",8389417},
{"DEPARTED",8389125},
{"DESTROY",8389122},
{"DESTROYED",8389136},
{"DINK",8389390},
{"DOOR",8389378},
{"DRLRLRINK",8389398},
{"DYUPE",8389413},
{"Data",8421532},
{"DefaultImage",8683655},
{"DelInventory",8421532},
{"Delta",8421533},
{"DelInventory",8421533},
{"Delta",8421534},
{"Density",9142344},
{"Departed",8618087},
{"Departures",8618089},
{"Destroy",10584222},
{"Destroy",10584223},
{"Destroyed",8487028},
{"Dir",8618050},
{"Distance",9142342},
{"Done",8618099},
{"DotProduct",8421595},
{"DotProduct",8421596},
{"E",9437184},
{"END_TURN",8389139},
{"EditorHelp",8683657},
{"F",9437192},
{"FAROUT",8389421},
{"FFFFTT",8389399},
{"FLOATED",8389132},
{"FROG",8389383},
{"Finished",8552577},
{"FlushClass",8421535},
{"FlushObj",8487072},
{"FlushClass",8421536},
{"FlushObj",8487073},
{"From",8421498},
{"GLASS",8389379},
{"GLISSANT",8389419},
{"GetArray",8421589},
{"GetInventory",8421537},
{"GetArray",8421590},
{"GetInventory",8421538},
{"HAWK",8389425},
{"HEARTBEAT",8389407},
{"HIT",8389134},
{"HITBY",8389135},
{"Hard",8618068},
{"Height",9142350},
{"HeightAt",8421538},
{"HeightAt",8421539},
{"Help",8683656},
{"INIT",8389120},
{"IgnoreKey",8421539},
{"IgnoreKey",8421540},
{"Image",8618051},
{"InPlace",8683654},
{"Inertia",9142340},
{"InitArray",8421590},
{"InitArray",8421591},
{"Input",8683652},
{"IntMove",10584228},
{"IntMove",10584229},
{"Invisible",8618091},
{"JAYAYAYNG",8389416},
{"JUMPED",8389128},
{"JumpTo",10584229},
{"JumpTo",10584230},
{"KEWEL",8389422},
{"KEY",8389129},
{"KLECK",8389387},
{"KLINKK",8389385},
{"Key",8421504},
{"KeyCleared",8618092},
{"L",9437194},
{"LASTIMAGE",8389126},
{"LB",9437195},
{"LF",9437193},
{"LOCK",8389408},
{"LOOP",8388610},
{"Level",8421503},
{"Loc",8487078},
{"LocateMe",8421543},
{"LoseLevel",8421544},
{"Loc",8487079},
{"LocateMe",8421544},
{"LoseLevel",8421545},
{"MOVED",8389127},
{"MOVING",8389130},
{"Manhattan",8487081},
{"MaxInventory",8421546},
{"Manhattan",8487082},
{"MaxInventory",8421547},
{"Misc1",9142360},
{"Misc2",9142362},
{"Misc3",9142364},
{"Misc4",9142366},
{"Misc5",9142368},
{"Misc6",9142370},
{"Misc7",9142372},
{"Move",10584235},
{"Move+",10584236},
{"Move",10584236},
{"Move+",10584237},
{"MoveNumber",8421502},
{"MoveTo",10584237},
{"MoveTo",10584238},
{"Moved",8618097},
{"Moving",8618098},
{"Msg",8421497},
{"N",9437186},
{"NE",9437185},
{"NW",9437187},
{"NewX",8421552},
{"NewXY",8421553},
{"NewY",8421554},
{"NewX",8421553},
{"NewXY",8421554},
{"NewY",8421555},
{"OLDPHONE",8389402},
{"ONCE",8388609},
{"OSC",8388616},
{"OSCLOOP",8388618},
{"ObjAbove",8487091},
{"ObjBelow",8487092},
{"ObjBottomAt",8421557},
{"ObjClassAt",8421558},
{"ObjDir",8487095},
{"ObjLayerAt",8421560},
{"ObjMovingTo",8421561},
{"ObjTopAt",8421562},
{"ObjAbove",8487092},
{"ObjBelow",8487093},
{"ObjBottomAt",8421558},
{"ObjClassAt",8421559},
{"ObjDir",8487096},
{"ObjLayerAt",8421561},
{"ObjMovingTo",8421562},
{"ObjTopAt",8421563},
{"Others",8683658},
{"P",8880348},
{"P*",8880349},
{"P",8880349},
{"P*",8880350},
{"PLAYERMOVING",8389133},
{"POSTINIT",8389138},
{"POUR",8389377},
{"POWER",8389386},
{"Player",8487029},
{"PopUp",8421563},
{"Queen",8683744},
{"PopUp",8421564},
{"Queen",8683745},
{"Quiz",8683653},
{"R",9437198},
{"RATCHET1",8389418},
{"RATCHET2",8389412},
{"RATTLE",8389403},
{"RB",9437197},
{"RF",9437199},
{"Rel",8487101},
{"Rook",8683742},
{"Rel",8487102},
{"Rook",8683743},
{"S",9437190},
{"SE",9437191},
{"SMALL_POP",8389389},
{"SPLASH",8389376},
{"STEAM",8389424},
{"STOP",8388608},
{"SUBS",8683659},
{"SUNK",8389131},
{"SW",9437189},
{"Seek",8487102},
{"Seek",8487103},
{"Self",8421496},
{"Send",10584255},
{"SendEx",10584256},
{"SetArray",8421591},
{"SetInventory",8421569},
{"Send",10584256},
{"SendEx",10584257},
{"SetArray",8421592},
{"SetInventory",8421570},
{"Shape",8618047},
{"ShapeDir",8618070},
{"Sharp",8618069},
{"Shovable",8618071},
{"Sound",8421570},
{"Sound",8421571},
{"Stealthy",8618096},
{"Strength",9142354},
{"Super",8487139},
{"Synchronize",8421571},
{"Super",8487140},
{"Synchronize",8421572},
{"TAHTASHH",8389409},
{"THMP_thmp",8389405},
{"THWIT",8389384},
{"TICK",8389391},
{"Target",8487108},
{"Target",8487109},
{"Temperature",9142333},
{"Trace",8421573},
{"Trace",8421574},
{"UH_OH",8389382},
{"UNCORK",8389414},
{"UNHH",8389381},
{"UserSignal",8618093},
{"UserState",8618094},
{"VACUUM",8389411},
{"VisualOnly",8618095},
{"Volume",9142346},
{"VolumeAt",8421574},
{"VolumeAt",8421575},
{"W",9437188},
{"WAHOO",8389400},
{"WHACK",8389423},
{"Weight",9142348},
{"WinLevel",8421575},
{"XDir",8487112},
{"XYDir",8421577},
{"WinLevel",8421576},
{"XDir",8487113},
{"XYDir",8421578},
{"Xloc",8486976},
{"YDir",8487114},
{"YDir",8487115},
{"YEEHAW",8389401},
{"Yloc",8486977},
{"_",8421579},
{"_",8421580},
{"a?",8421435},
{"again",8683533},
{"and",8683544},
{"band",8421411},
{"begin",8683532},
{"bit",8683559},
{"bit0",8388609},
728
729
730
731
732
733
734
735
736
737



738
739
740
741
742
743

744
745
746
747
748

749
750
751
752
753
754
755
756
757
758
759

760
761
762
763
764
765
766

767
768
769
770
771
772
773
774
775
776
777
778
779
780

781
782

783
784
785
786

787
730
731
732
733
734
735
736



737
738
739
740
741
742
743
744

745
746
747
748
749

750
751
752
753
754
755
756
757
758
759
760

761
762
763
764
765
766
767

768
769
770
771
772
773
774
775
776
777
778
779
780
781

782
783

784
785
786
787

788
789







-
-
-
+
+
+





-
+




-
+










-
+






-
+













-
+

-
+



-
+

{"bit9",8423401},
{"bnot",8421414},
{"bor",8421412},
{"bxor",8421413},
{"c?",8421429},
{"case",8683542},
{"chain",8421528},
{"clear",8421586},
{"count",8421585},
{"cut",8683745},
{"clear",8421587},
{"count",8421586},
{"cut",8683746},
{"cz?",8421430},
{"dup",8421377},
{"else",8683530},
{"eq",8421420},
{"eq2",8421421},
{"flip",8421584},
{"flip",8421585},
{"for",8683537},
{"ge",8486961},
{"gt",8486959},
{"if",8683529},
{"in",8421581},
{"in",8421582},
{"is",8421427},
{"land",8421416},
{"le",8486962},
{"lnot",8421419},
{"lor",8421417},
{"lsh",8421409},
{"lt",8486960},
{"lxor",8421418},
{"m?",8421431},
{"max",8486944},
{"mbegin",8683727},
{"mbegin",8683728},
{"min",8486943},
{"mod",8486941},
{"n?",8421428},
{"ne",8421422},
{"neg",8421406},
{"next",8683538},
{"nin",8421582},
{"nin",8421583},
{"nip",8421379},
{"o?",8421433},
{"or",8683543},
{"over",8421384},
{"oz?",8421434},
{"pick",8421383},
{"repeat",8683536},
{"ret",8421397},
{"rot",8421381},
{"rsh",8486946},
{"s?",8421432},
{"swap",8421378},
{"then",8683531},
{"tmark",8421580},
{"tmark",8421581},
{"tuck",8421380},
{"uniq",8421587},
{"uniq",8421588},
{"until",8683534},
{"while",8683535},
};
#define N_OP_NAMES 336
#define N_OP_NAMES 337
#endif