//addrs saved in ram at 77-79-7E-81
    public List <ObjectList> getObjectsJungleBook(int levelNo)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      objAddr  = lr.objectsBeginAddr;
        var      objects  = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            byte x        = Globals.romdata[objAddr - objCount * 2 + i];
            byte y        = Globals.romdata[objAddr - objCount * 1 + i];
            byte v        = Globals.romdata[objAddr + objCount * 0 + i];
            byte data     = Globals.romdata[objAddr + objCount * 1 + i];
            int  realx    = x * 32 + 16;
            int  realy    = y * 32 + 16;
            var  dataDict = new Dictionary <string, int>();
            dataDict["data"] = data;
            var obj = new ObjectRec(v, 0, 0, realx, realy, dataDict);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
    public bool setObjectsJungleBook(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      objAddr  = lr.objectsBeginAddr;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var  obj = objects[i];
            byte x   = (byte)((obj.x - 16) / 32);
            byte y   = (byte)((obj.y - 16) / 32);
            Globals.romdata[objAddr + objCount * 0 + i] = (byte)obj.type;
            Globals.romdata[objAddr + objCount * 1 + i] = (byte)obj.additionalData["data"];
            Globals.romdata[objAddr - objCount * 2 + i] = x;
            Globals.romdata[objAddr - objCount * 1 + i] = y;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[objAddr + objCount * 0 + i] = 0xFF;
            Globals.romdata[objAddr + objCount * 1 + i] = 0xFF;
            Globals.romdata[objAddr - objCount * 2 + i] = 0xFF;
            Globals.romdata[objAddr - objCount * 1 + i] = 0xFF;
        }
        return(true);
    }
    public static List <ObjectList> getItemsFromFile(int levelNo)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);

        byte[] data = Utils.loadDataFromFile("items.bin");
        return(getItemsFromArray(data, 0, lr.objCount));
    }
Exemple #4
0
    public static bool setObjectsNemo(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        var screenIndexValues = new int[lr.width * lr.height];

        for (int i = 0; i < objCount; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i * 2 + 0] = (byte)obj.type;
            int xy = ((obj.x / 16) << 4) | ((obj.y / 16) & 0x0F);
            Globals.romdata[addrBase + i * 2 + 1] = (byte)xy;

            int screenIndex = obj.sy * lr.width + obj.sx;
            screenIndexValues[screenIndex] += 1;
        }

        //write how many objects at every screen
        var objScreenAddr = ConfigScript.getPalBytesAddr(); //read screen sx/sy address
        int totalSx       = 0;

        for (int screenIndex = 0; screenIndex < screenIndexValues.Length - 1; screenIndex++)
        {
            totalSx += screenIndexValues[screenIndex];
            if (totalSx >= objCount)
            {
                break;
            }
            Globals.romdata[objScreenAddr + screenIndex + 1] = (byte)totalSx;
        }
        return(true);
    }
Exemple #5
0
    public bool setObjectsCad(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr         = ConfigScript.getLevelRec(levelNo);
        int      levelDhack = (levelNo == 4) ? 1 : 0;
        int      addrBase   = lr.objectsBeginAddr;
        int      objCount   = lr.objCount;
        var      objects    = objLists[0].objects;

        try
        {
            for (int i = 0; i < objects.Count; i++)
            {
                var obj = objects[i];
                Globals.romdata[addrBase + i] = (byte)obj.type;
                Globals.romdata[addrBase - 4 * objCount + levelDhack + i] = (byte)obj.sx;
                Globals.romdata[addrBase - 3 * objCount + levelDhack + i] = (byte)obj.x;
                Globals.romdata[addrBase - 2 * objCount + levelDhack + i] = (byte)obj.sy;
                Globals.romdata[addrBase - objCount + i] = (byte)obj.y;
            }
            for (int i = objects.Count; i < objCount; i++)
            {
                Globals.romdata[addrBase + i] = 0xFF;
                Globals.romdata[addrBase - 4 * objCount + levelDhack + i] = 0xFF;
                Globals.romdata[addrBase - 3 * objCount + levelDhack + i] = 0xFF;
                Globals.romdata[addrBase - 2 * objCount + levelDhack + i] = 0xFF;
                Globals.romdata[addrBase - objCount + levelDhack + i]     = 0xFF;
            }
            return(true);
        }
        catch (System.IndexOutOfRangeException ex)
        {
            return(false);
        }
    }
Exemple #6
0
    public List <ObjectList> getObjectsCad(int levelNo)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        var      objects = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            byte v = Globals.romdata[addr + i];
            if (levelNo != 4)
            {
                byte sx, sy, x, y;
                sx = Globals.romdata[addr - 4 * objCount + i];
                x  = Globals.romdata[addr - 3 * objCount + i];
                sy = Globals.romdata[addr - 2 * objCount + i];
                y  = Globals.romdata[addr - objCount + i];
                var obj = new ObjectRec(v, sx, sy, x, y);
                objects.Add(obj);
            }
            else //C&D LEVEL D EXCEPTION, unaligned pointers
            {
                byte sx  = Globals.romdata[addr - 4 * objCount + 1 + i];
                byte x   = Globals.romdata[addr - 3 * objCount + 1 + i];
                byte sy  = Globals.romdata[addr - 2 * objCount + 1 + i];
                byte y   = Globals.romdata[addr - objCount + i];
                var  obj = new ObjectRec(v, sx, sy, x, y);
                objects.Add(obj);
            }
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #7
0
    public List <ObjectList> getObjects(int levelNo)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      baseAddr = lr.objectsBeginAddr;
        var      objects  = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            byte data = Globals.romdata[baseAddr + objCount * 0 + i];
            byte x    = Globals.romdata[baseAddr + objCount * 1 + i];
            byte sx   = (byte)(x & 0x0F);
            x = (byte)(x & 0xF0);
            byte y  = Globals.romdata[baseAddr + objCount * 2 + i];
            byte sy = (byte)(y & 0x0F);
            y = (byte)(y & 0xF0);
            int v         = Utils.readWordUnsigned(Globals.romdata, baseAddr + objCount * 3 + i * 2);
            int enemyType = enemyNoToEnemyType[v];
            var dataDict  = new Dictionary <string, int>();
            dataDict["data"] = data;
            var obj = new ObjectRec(enemyType, sx, sy, x, y, dataDict);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #8
0
    public bool setObjectsCad2(int levelNo, List <ObjectList> objLists)
    {
        //hack for prizes
        if (levelNo >= LEVEL_REC_COUNT)
        {
            return(setPrizesCad2(levelNo, objLists));
        }

        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i * 3 + 2] = (byte)obj.type;
            Globals.romdata[addrBase + i * 3 + 0] = (byte)((obj.x / 32) | (obj.sx << 4));
            Globals.romdata[addrBase + i * 3 + 1] = (byte)((obj.y / 32) | (obj.sy << 4));
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[addrBase + i * 3 + 2] = 0xFF;
            Globals.romdata[addrBase + i * 3 + 0] = 0xFF;
            Globals.romdata[addrBase + i * 3 + 1] = 0xFF;
        }
        return(true);
    }
Exemple #9
0
    public List <ObjectList> getObjectsCad2(int levelNo)
    {
        //hack for prizes
        if (levelNo >= LEVEL_REC_COUNT)
        {
            return(getPrizesCad2(levelNo));
        }

        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addr     = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            int v   = Globals.romdata[addr + i * 3 + 2];
            int xx  = Globals.romdata[addr + i * 3 + 0];
            int yy  = Globals.romdata[addr + i * 3 + 1];
            int sx  = (xx >> 4);
            int sy  = (yy >> 4);
            int x   = (xx & 0x0F) * 32;
            int y   = (yy & 0x0F) * 32;
            var obj = new ObjectRec(v, sx, sy, x, y);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #10
0
    public static List <ObjectList> getObjectsLM2(int levelNo)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        int      addrSx  = 0x13890;
        int      addrX   = 0x138C4;
        int      addrY   = addr - 1 * objCount;
        var      objects = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            byte v   = Globals.romdata[addr + i];
            byte sx  = Globals.romdata[addrSx + i];
            byte x   = Globals.romdata[addrX + i];
            byte y   = Globals.romdata[addrY + i];
            byte sy  = 0;
            var  obj = new ObjectRec(v, sx, sy, x, y);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #11
0
    public List <ObjectList> getPrizesCad2(int levelNo)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addr     = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = new List <ObjectRec>();

        for (int i = 0; i < objCount; i++)
        {
            int xx  = Globals.romdata[addr + i * 2 + 0];
            int yy  = Globals.romdata[addr + i * 2 + 1];
            int sx  = (xx >> 4);
            int v   = (yy >> 4);
            int sy  = 0;
            int x   = (xx & 0x0F) * 32;
            int y   = (yy & 0x0F) * 32;
            var obj = new ObjectRec(v, sx, sy, x, y);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Items"
            }
        });
    }
Exemple #12
0
    public bool setObjectsDwd(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i] = (byte)obj.type;
            Globals.romdata[addrBase - 4 * objCount + i] = (byte)obj.sx;
            Globals.romdata[addrBase - 3 * objCount + i] = (byte)obj.x;
            Globals.romdata[addrBase - 2 * objCount + i] = (byte)obj.sy;
            Globals.romdata[addrBase - 1 * objCount + i] = (byte)obj.y;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[addrBase + i] = 0xFF;
            Globals.romdata[addrBase - 4 * objCount + i] = 0xFF;
            Globals.romdata[addrBase - 3 * objCount + i] = 0xFF;
            Globals.romdata[addrBase - 2 * objCount + i] = 0xFF;
            Globals.romdata[addrBase - 1 * objCount + i] = 0xFF;
        }
        return(true);
    }
    public List <ObjectList> getObjectsDt(int levelNo)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        var      objects        = new List <ObjectRec>();
        var      objLineOffsets = new byte[lr.height];

        for (int i = 0; i < lr.height; i++)
        {
            objLineOffsets[i] = Globals.romdata[addr + i - lr.height];
        }
        for (int i = 0; i < objCount; i++)
        {
            byte v   = Globals.romdata[addr + i];
            byte sx  = Globals.romdata[addr - 3 * objCount + i - lr.height];
            byte x   = Globals.romdata[addr - 2 * objCount + i - lr.height];
            byte y   = Globals.romdata[addr - objCount + i - lr.height];
            byte sy  = convertObjectIndexToScreenYcoord(objLineOffsets, i);
            var  obj = new ObjectRec(v, sx, sy, x, y);
            objects.Add(obj);
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #14
0
    public bool setObjects(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      baseAddr = lr.objectsBeginAddr;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var  obj          = objects[i];
            byte x            = (byte)((obj.x & 0xF0) | (obj.sx & 0x0F));
            byte y            = (byte)((obj.y & 0xF0) | (obj.sy & 0x0F));
            int  reversedType = enemyNoToEnemyType.FirstOrDefault(n => n.Value == obj.type).Key;
            byte data         = (byte)obj.additionalData["data"];

            Globals.romdata[baseAddr + objCount * 0 + i] = data;
            Globals.romdata[baseAddr + objCount * 1 + i] = x;
            Globals.romdata[baseAddr + objCount * 2 + i] = y;
            Utils.writeWord(Globals.romdata, baseAddr + objCount * 3 + i * 2, reversedType);
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[baseAddr + objCount * 0 + i]         = 0xFF;
            Globals.romdata[baseAddr + objCount * 1 + i]         = 0xFF;
            Globals.romdata[baseAddr + objCount * 2 + i]         = 0xFF;
            Globals.romdata[baseAddr + objCount * 3 + i * 2]     = 0xFF;
            Globals.romdata[baseAddr + objCount * 3 + i * 2 + 1] = 0xFF;
        }
        return(true);
    }
Exemple #15
0
    public static bool setObjectsLM2(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        int addrSx = 0x13890;
        int addrX  = 0x138C4;
        int addrY  = addrBase - 1 * objCount;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i] = (byte)obj.type;
            Globals.romdata[addrY + i]    = (byte)obj.y;
            Globals.romdata[addrX + i]    = (byte)obj.x;
            Globals.romdata[addrSx + i]   = (byte)obj.sx;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[addrBase + i] = 0xFF;
            Globals.romdata[addrY + i]    = 0xFF;
            Globals.romdata[addrX + i]    = 0xFF;
            Globals.romdata[addrSx + i]   = 0xFF;
        }
        return(true);
    }
    public bool setObjects(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      baseAddr = lr.objectsBeginAddr;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[baseAddr + 5 * i + 0] = (byte)obj.type;
            Globals.romdata[baseAddr + 5 * i + 1] = (byte)(obj.x / 2);
            Globals.romdata[baseAddr + 5 * i + 2] = (byte)obj.sx;
            Globals.romdata[baseAddr + 5 * i + 3] = (byte)(obj.y / 2);
            Globals.romdata[baseAddr + 5 * i + 4] = (byte)obj.sy;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[baseAddr + 5 * i + 0] = 0xff;
            Globals.romdata[baseAddr + 5 * i + 1] = 0xff;
            Globals.romdata[baseAddr + 5 * i + 2] = 0xff;
            Globals.romdata[baseAddr + 5 * i + 3] = 0xff;
            Globals.romdata[baseAddr + 5 * i + 4] = 0xff;
        }
        return(true);
    }
    public static bool setObjects(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount;
        int      baseAddr = lr.objectsBeginAddr;
        var      objects  = objLists[0].objects;
        int      objSize  = 6;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj      = objects[i];
            var dict     = obj.additionalData;
            int dirIndex = dict["direction"] | dict["index"];
            int x        = ((obj.sx + 1) << 4) | (obj.x / 16);
            int y        = ((obj.sy + 1) << 4) | (obj.y / 16);

            Globals.romdata[baseAddr + objSize * i + 0] = (byte)dirIndex;
            Globals.romdata[baseAddr + objSize * i + 1] = (byte)obj.type;
            Globals.romdata[baseAddr + objSize * i + 2] = (byte)dict["flags1"];
            Globals.romdata[baseAddr + objSize * i + 3] = (byte)x;
            Globals.romdata[baseAddr + objSize * i + 4] = (byte)dict["flags2"];
            Globals.romdata[baseAddr + objSize * i + 5] = (byte)y;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[baseAddr + objSize * i + 0] = (byte)0xFF;
            Globals.romdata[baseAddr + objSize * i + 1] = (byte)0xFF;
            Globals.romdata[baseAddr + objSize * i + 2] = (byte)0xFF;
            Globals.romdata[baseAddr + objSize * i + 3] = (byte)0xFF;
            Globals.romdata[baseAddr + objSize * i + 4] = (byte)0xFF;
            Globals.romdata[baseAddr + objSize * i + 5] = (byte)0xFF;
        }
        return(true);
    }
    public bool setObjectsDt(int levelNo, List <ObjectList> objLists)
    {
        //todo: add save sy coord to objLineOffsets array
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i] = (byte)obj.type;
            Globals.romdata[addrBase - 3 * objCount + i - lr.height] = (byte)obj.sx;
            Globals.romdata[addrBase - 2 * objCount + i - lr.height] = (byte)obj.x;
            Globals.romdata[addrBase - 1 * objCount + i - lr.height] = (byte)obj.y;
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[addrBase + i] = 0xFF;
            Globals.romdata[addrBase - 3 * objCount + i - lr.height] = 0xFF;
            Globals.romdata[addrBase - 2 * objCount + i - lr.height] = 0xFF;
            Globals.romdata[addrBase - 1 * objCount + i - lr.height] = 0xFF;
        }
        return(true);
    }
Exemple #19
0
    public static ObjectList getItemsFromFile(int levelNo)
    {
        LevelRec lr = getItemsLayout();

        byte[] data = Utils.loadDataFromFile("items.bin");
        return(getItemsFromArray(data, 0, lr.objCount));
    }
Exemple #20
0
    public bool setObjectsDt2(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        var      objects = objLists[0].objects;
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        var      objsAtLine = new int[lr.height];

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            objsAtLine[obj.sy] += 1;
        }

        int curObjLine = 0;

        //start line 0
        Globals.romdata[addr]     = (byte)0xFF;
        Globals.romdata[addr + 1] = (byte)curObjLine;
        addr += 2;

        //pointers to floors
        int floorPtr   = getPtrToFloorsAddr(levelNo);
        int objectsPtr = Utils.readWordUnsignedLE(Globals.romdata, floorPtr);

        int objIndex   = 0;
        int totalCount = objsAtLine[curObjLine];

        while (objIndex < objects.Count)
        {
            if (objIndex >= totalCount)
            {
                //write code of begin ptr
                Globals.romdata[addr]     = (byte)0xFF;
                Globals.romdata[addr + 1] = (byte)(++curObjLine);
                addr       += 2;
                objectsPtr += 2;
                totalCount += objsAtLine[curObjLine];

                //patch ptrs to floors
                floorPtr += 2; //next floor
                Globals.romdata[floorPtr + 0] = (byte)(objectsPtr & 0xFF);
                Globals.romdata[floorPtr + 1] = (byte)(objectsPtr >> 8);
                continue;
            }

            var obj = objects[objIndex];
            int x   = (obj.sx << 5) | (obj.x >> 3);
            Globals.romdata[addr + 0] = (byte)x;
            Globals.romdata[addr + 1] = (byte)obj.y;
            Globals.romdata[addr + 2] = (byte)obj.type;
            addr       += 3;
            objectsPtr += 3;
            objIndex++;
        }
        //write code of end objects
        Globals.romdata[addr]     = 0xFF;
        Globals.romdata[addr + 1] = 0xFF;
        return(true);
    }
    public static List <ObjectList> getItemsFromRom(int levelNo)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      baseAddr = lr.objectsBeginAddr;
        int      objCount = lr.objCount;

        return(getItemsFromArray(Globals.romdata, baseAddr, objCount));
    }
Exemple #22
0
    public static bool setItemsToRom(int levelNo, List <ObjectList> objects)
    {
        LevelRec lr       = getItemsLayout();
        int      baseAddr = lr.objectsBeginAddr;
        int      objCount = lr.objCount;

        return(setItemsToArray(objects, Globals.romdata, baseAddr, objCount));
    }
Exemple #23
0
    public static ObjectList getItemsFromRom(int levelNo)
    {
        LevelRec lr       = getItemsLayout();
        int      baseAddr = lr.objectsBeginAddr;
        int      objCount = lr.objCount;

        return(getItemsFromArray(Globals.romdata, baseAddr, objCount));
    }
    public static bool setEnemiesToRom(int levelNo, List <ObjectList> objects)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      baseAddr = lr.objectsBeginAddr;
        int      objCount = lr.objCount;

        return(setEnemiesToArray(objects, Globals.romdata, baseAddr, objCount));
    }
Exemple #25
0
    public static bool setVictimsToFile(int levelNo, List <ObjectList> objects)
    {
        LevelRec lr       = getVictimsLayout();
        int      baseAddr = 0;
        int      objCount = lr.objCount;

        byte[] data = new byte[objCount * 12];
        setVictimsToArray(objects, data, baseAddr, objCount);
        Utils.saveDataToFile("victims.bin", data);
        return(true);
    }
Exemple #26
0
    public static bool setEnemiesToFile(int levelNo, List <ObjectList> objects)
    {
        const int ENEMY_REC_LEN = 12;
        LevelRec  lr            = getEnemiesLayout();
        int       baseAddr      = 0;
        int       objCount      = lr.objCount;

        byte[] data = new byte[objCount * ENEMY_REC_LEN];
        setEnemiesToArray(objects, data, baseAddr, objCount);
        Utils.saveDataToFile("enemies.bin", data);
        return(true);
    }
Exemple #27
0
    public static bool setItemsToFile(int levelNo, List <ObjectList> objects)
    {
        const int ITEMS_REC_LEN = 6;
        LevelRec  lr            = getItemsLayout();
        int       baseAddr      = 0;
        int       objCount      = lr.objCount;

        byte[] data = new byte[objCount * ITEMS_REC_LEN];
        setItemsToArray(objects, data, baseAddr, objCount);
        Utils.saveDataToFile("items.bin", data);
        return(true);
    }
Exemple #28
0
    public static bool setObjects(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        int      curAddr = addr;
        var      objects = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj      = objects[i];
            int v        = obj.type;
            int baseAddr = curAddr;
            Utils.writeWord(Globals.romdata, baseAddr, v);
            if (v < 0xFF00)
            {
                int fromFloor = obj.additionalData["fromFloor"];
                //Utils.writeWord(Globals.romdata, baseAddr + 2 , 0);
                //Utils.writeWord(Globals.romdata, baseAddr + 4 , 0);
                Utils.writeWord(Globals.romdata, baseAddr + 6, fromFloor);
                Globals.romdata[baseAddr + 12] = (byte)obj.additionalData["data1"];
                Globals.romdata[baseAddr + 13] = (byte)obj.additionalData["data2"];

                /*Globals.romdata[baseAddr + 2] = (byte)obj.additionalData["data3"];
                *  Globals.romdata[baseAddr + 3] = (byte)obj.additionalData["data4"];
                *  Globals.romdata[baseAddr + 4] = (byte)obj.additionalData["data5"];
                *  Globals.romdata[baseAddr + 5] = (byte)obj.additionalData["data6"];*/

                if (fromFloor != 0)
                {
                    Utils.writeWord(Globals.romdata, baseAddr + 2, obj.x);
                    Utils.writeWord(Globals.romdata, baseAddr + 4, obj.y);
                    Utils.writeWord(Globals.romdata, baseAddr + 8, obj.x);
                    Utils.writeWord(Globals.romdata, baseAddr + 10, obj.y);
                }
                else
                {
                    Utils.writeWord(Globals.romdata, baseAddr + 2, obj.x);
                    Utils.writeWord(Globals.romdata, baseAddr + 4, obj.y);
                    Utils.writeWord(Globals.romdata, baseAddr + 8, obj.additionalData["addX"]);
                    Utils.writeWord(Globals.romdata, baseAddr + 10, obj.additionalData["addY"]);
                }
                curAddr += OBJ_SIZE;
            }
            else
            {
                saveCommandObject(objects[i], baseAddr);
                curAddr += commandDict[v] * 2;
            }
        }
        return(true);
    }
Exemple #29
0
    public List <ObjectList> getObjectsDt2(int levelNo)
    {
        LevelRec lr = ConfigScript.getLevelRec(levelNo);
        int      objCount = lr.objCount, addr = lr.objectsBeginAddr;
        var      objects = new List <ObjectRec>();

        int objectsReaded = 0;
        int currentHeight = 0;

        while (objectsReaded < objCount)
        {
            byte command = Globals.romdata[addr];
            if (command == 0xFF)
            {
                currentHeight = Globals.romdata[addr + 1];
                if (currentHeight == 0xFF)
                {
                    break;
                }
                addr += 2;
            }
            else
            {
                byte v     = Globals.romdata[addr + 2];
                byte xbyte = Globals.romdata[addr + 0];
                byte ybyte = Globals.romdata[addr + 1];
                byte sx    = (byte)(xbyte >> 5);
                byte x     = (byte)((xbyte & 0x1F) << 3);
                byte sy    = (byte)currentHeight;
                byte y     = ybyte;
                var  obj   = new ObjectRec(v, sx, sy, x, y);
                objects.Add(obj);
                objectsReaded++;
                addr += 3;
            }
        }
        return(new List <ObjectList> {
            new ObjectList {
                objects = objects, name = "Objects"
            }
        });
    }
Exemple #30
0
    public bool setPrizesCad2(int levelNo, List <ObjectList> objLists)
    {
        LevelRec lr       = ConfigScript.getLevelRec(levelNo);
        int      addrBase = lr.objectsBeginAddr;
        int      objCount = lr.objCount;
        var      objects  = objLists[0].objects;

        for (int i = 0; i < objects.Count; i++)
        {
            var obj = objects[i];
            Globals.romdata[addrBase + i * 2 + 0] = (byte)((obj.x / 32) | (obj.sx << 4));
            Globals.romdata[addrBase + i * 2 + 1] = (byte)((obj.y / 32) | (obj.type << 4));
        }
        for (int i = objects.Count; i < objCount; i++)
        {
            Globals.romdata[addrBase + i * 2 + 0] = 0xFF;
            Globals.romdata[addrBase + i * 2 + 1] = 0xFF;
        }
        return(true);
    }