Free Hero Mesh

Check-in [7a253eb1d0]
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:Change FlushObj to ,FlushObj to make the instruction set more consistent
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 7a253eb1d0bdb1be2fb49018b5ec2709de40b561
User & Date: user on 2020-12-17 03:29:36
Other Links: manifest | tags
Context
2020-12-17
03:39
Implement removing quiz text check-in: 3427b010ff user: user tags: trunk
03:29
Change FlushObj to ,FlushObj to make the instruction set more consistent check-in: 7a253eb1d0 user: user tags: trunk
03:20
Correct writes to standard variables of other objects check-in: a7e5fd6129 user: user tags: trunk
Changes

Modified class.doc from [9a693e5208] to [6e4182cde7].

844
845
846
847
848
849
850



851

852
853
854
855
856
857
858
844
845
846
847
848
849
850
851
852
853

854
855
856
857
858
859
860
861







+
+
+
-
+








FlushClass  ( class -- ) **
  Resets the Arrived, Busy, Departed, Inertia, Moved, and UserSignal flags
  of all objects of the specified class to zero. If the class is -1, then
  all objects are flushed in this way, and during the input phase, it also
  skips the other phases similarly to IgnoreKey if the class is -1.

FlushObj  ( -- ) **
  Resets this object's Arrived, Departed, Inertia, Moved, and UserSignal.

FlushObj  ( obj -- ) **
,FlushObj  ( obj -- ) **
  Resets the Arrived, Busy, Departed, Inertia, Moved, and UserSignal flags
  of the specified object only.

From  ( -- obj )
  The object which send the message to this object. In some cases, this
  will be zero instead of a valid object.

Modified exec.c from [03329d01c7] to [873b6b076a].

1169
1170
1171
1172
1173
1174
1175

1176

1177
1178
1179
1180
1181
1182
1183
1169
1170
1171
1172
1173
1174
1175
1176

1177
1178
1179
1180
1181
1182
1183
1184







+
-
+







    case OP_DONE_E: StackReq(1,0); if(v_bool(Pop())) o->oflags|=OF_DONE; else o->oflags&=~OF_BUSY; break;
    case OP_DONE_EC: StackReq(2,0); SetFlagOf(OF_DONE); break;
    case OP_DROP: StackReq(1,0); Pop(); break;
    case OP_DROP_D: StackReq(2,0); Pop(); Pop(); break;
    case OP_DUP: StackReq(1,2); t1=Pop(); Push(t1); Push(t1); break;
    case OP_EQ: StackReq(2,1); t2=Pop(); t1=Pop(); Push(NVALUE(v_equal(t1,t2)?1:0)); break;
    case OP_FLUSHCLASS: NoIgnore(); StackReq(1,0); t1=Pop(); if(t1.t==TY_CLASS) flush_class(t1.u); else if(t1.t==TY_NUMBER && t1.s==-1) flush_all(); else if(t1.t) Throw("Type mismatch"); break;
    case OP_FLUSHOBJ: NoIgnore(); flush_object(obj); break;
    case OP_FLUSHOBJ: NoIgnore(); StackReq(1,0); i=v_object(Pop()); if(i!=VOIDLINK) flush_object(i); break;
    case OP_FLUSHOBJ_C: NoIgnore(); StackReq(1,0); i=v_object(Pop()); if(i!=VOIDLINK) flush_object(i); break;
    case OP_FOR: NoIgnore(); StackReq(3,1); t3=Pop(); t2=Pop(); t1=Pop(); ptr=v_for(code,ptr,t1,t2,t3); break;
    case OP_FROM: StackReq(0,1); Push(OVALUE(msgvars.from)); break;
    case OP_GE: StackReq(2,1); t2=Pop(); t1=Pop(); Push(NVALUE(v_unsigned_greater(t2,t1)?0:1)); break;
    case OP_GE_C: StackReq(2,1); t2=Pop(); t1=Pop(); Push(NVALUE(v_signed_greater(t2,t1)?0:1)); break;
    case OP_GOTO: ptr=code[ptr]; break;
    case OP_GT: StackReq(2,1); t2=Pop(); t1=Pop(); Push(NVALUE(v_unsigned_greater(t1,t2)?1:0)); break;
    case OP_GT_C: StackReq(2,1); t2=Pop(); t1=Pop(); Push(NVALUE(v_signed_greater(t1,t2)?1:0)); break;

Modified instruc from [ad08ada1fc] to [651dfa2b24].

196
197
198
199
200
201
202
203

204
205
206
207
208
209
210
196
197
198
199
200
201
202

203
204
205
206
207
208
209
210







-
+







BroadcastSum ; Broadcast, but result is sum of return values
BroadcastSumEx
.Create
DelInventory
Delta
.,Destroy
FlushClass
FlushObj
,FlushObj
GetInventory
HeightAt
IgnoreKey
.,IntMove ; move without initializing Inertia
.,JumpTo
,Loc ; same as: Xloc Yloc
LocateMe

Modified instruc.h from [5b4b106152] to [ebbc66b70f].

286
287
288
289
290
291
292

293
294
295
296
297
298
299
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300







+







#define OP_DELTA 32898
#define OP_DESTROY 32899
#define OP_DESTROY_C 34947
#define OP_DESTROY_D 41091
#define OP_DESTROY_CD 43139
#define OP_FLUSHCLASS 32900
#define OP_FLUSHOBJ 32901
#define OP_FLUSHOBJ_C 34949
#define OP_GETINVENTORY 32902
#define OP_HEIGHTAT 32903
#define OP_IGNOREKEY 32904
#define OP_INTMOVE 32905
#define OP_INTMOVE_C 34953
#define OP_INTMOVE_D 41097
#define OP_INTMOVE_CD 43145
429
430
431
432
433
434
435
436

437
438
439
440
441
442
443
430
431
432
433
434
435
436

437
438
439
440
441
442
443
444







-
+







{"EditorHelp",8683639},
{"F",9437192},
{"FAROUT",8389421},
{"FFFFTT",8389399},
{"FLOATED",8389132},
{"FROG",8389383},
{"FlushClass",8421508},
{"FlushObj",8421509},
{"FlushObj",8487045},
{"From",8421482},
{"GLASS",8389379},
{"GLISSANT",8389419},
{"GetInventory",8421510},
{"HAWK",8389425},
{"HEARTBEAT",8389407},
{"HIT",8389134},

Modified mbtofhm.c from [ea176bca7b] to [443bde1bde].

1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16
17
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18










+







#if 0
gcc -s -O2 -o ./mbtofhm -Wno-unused-result mbtofhm.c
exit
#endif

// This program is part of Free Hero Mesh and is public domain.

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define HEROMESH_MAIN
#include "names.h"

#define fatal(...) do{ fprintf(stderr,__VA_ARGS__); exit(1); }while(0)

// Pictures
static unsigned char*pict;
static unsigned short*picalloc;
735
736
737
738
739
740
741
742

743
744
745
746
747
748
749
736
737
738
739
740
741
742

743
744
745
746
747
748
749
750







-
+







      case 129:
        SubOpcode("WinLevel","LocateMe","IgnoreKey","Misc1 Misc2 Misc3 (PopUp 2)",";");
        st=0; break;
      case 130:
        fprintf(fp," FlushClass");
        st=0; break;
      case 131:
        fprintf(fp," FlushObj");
        fprintf(fp," ,FlushObj");
        st=0; break;
      case 132:
        fprintf(fp," SetInventory 5 MaxInventory");
        st=0; break;
      case 133:
        fprintf(fp," DelInventory");
        st=0; break;