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

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  ( 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.








>
>
>
|







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 -- ) **
  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
    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(); 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;







>
|







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_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
BroadcastSum ; Broadcast, but result is sum of return values
BroadcastSumEx
.Create
DelInventory
Delta
.,Destroy
FlushClass
FlushObj
GetInventory
HeightAt
IgnoreKey
.,IntMove ; move without initializing Inertia
.,JumpTo
,Loc ; same as: Xloc Yloc
LocateMe







|







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
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
#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_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







>







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
{"EditorHelp",8683639},
{"F",9437192},
{"FAROUT",8389421},
{"FFFFTT",8389399},
{"FLOATED",8389132},
{"FROG",8389383},
{"FlushClass",8421508},
{"FlushObj",8421509},
{"From",8421482},
{"GLASS",8389379},
{"GLISSANT",8389419},
{"GetInventory",8421510},
{"HAWK",8389425},
{"HEARTBEAT",8389407},
{"HIT",8389134},







|







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",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
#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>

#include "names.h"

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

// Pictures
static unsigned char*pict;
static unsigned short*picalloc;










>







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
      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");
        st=0; break;
      case 132:
        fprintf(fp," SetInventory 5 MaxInventory");
        st=0; break;
      case 133:
        fprintf(fp," DelInventory");
        st=0; break;







|







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");
        st=0; break;
      case 132:
        fprintf(fp," SetInventory 5 MaxInventory");
        st=0; break;
      case 133:
        fprintf(fp," DelInventory");
        st=0; break;