Free Hero Mesh

Check-in [dcebadcbcd]
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:Correct the implementation of the BizarroSwap instruction.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | trunk
Files: files | file ages | folders
SHA1: dcebadcbcd6ca1d71594ae8d5c9a3f3cbf713fc2
User & Date: user on 2025-08-17 21:59:28.043
Other Links: manifest | tags
Context
2025-08-17
21:59
Correct the implementation of the BizarroSwap instruction. Leaf check-in: dcebadcbcd user: user tags: trunk
2025-07-26
00:59
Correct the loading of the third list of filter chains in multidependent picture lumps. check-in: 23f2a4e55d user: user tags: trunk
Changes
Modified exec.c from [191a372e4a] to [c8bc133a86].
1819
1820
1821
1822
1823
1824
1825
1826
1827


1828
1829
1830

1831
1832
1833
1834
1835
1836
1837
1819
1820
1821
1822
1823
1824
1825


1826
1827
1828
1829

1830
1831
1832
1833
1834
1835
1836
1837







-
-
+
+


-
+







    n=bizplayfield[x.u+y.u*64-65];
    while(n!=VOIDLINK) {
      c|=b&classes[objects[n]->class]->collisionLayers;
      b|=classes[objects[n]->class]->collisionLayers;
      n=objects[n]->up;
    }
    if(c) return c;
    n=playfield[x.u+y.u*64-65];
    while(n!=VOIDLINK) objects[n]->oflags|=OF_BIZARRO,n=objects[n]->up;
    m=n=playfield[x.u+y.u*64-65];
    while(m!=VOIDLINK) objects[m]->oflags|=OF_BIZARRO,m=objects[m]->up;
    m=playfield[x.u+y.u*64-65]=bizplayfield[x.u+y.u*64-65];
    bizplayfield[x.u+y.u*64-65]=n;
    while(m!=VOIDLINK) objects[n]->oflags&=~OF_BIZARRO,m=objects[m]->up;
    while(m!=VOIDLINK) objects[m]->oflags&=~OF_BIZARRO,m=objects[m]->up;
    return 0;
  } else {
    m=v_object(x);
    n=v_object(y);
    if(m==VOIDLINK || n==VOIDLINK || m==n) return 0x100;
    if(objects[m]->x!=objects[n]->x || objects[m]->y!=objects[n]->y) return 0x100;
    if((objects[m]->oflags|objects[n]->oflags)&OF_DESTROYED) return 0x100;