OSDN Git Service

going to work on bg draw today!
authorsparky4 <sparky4@cock.li>
Fri, 27 Jan 2017 14:48:48 +0000 (08:48 -0600)
committersparky4 <sparky4@cock.li>
Fri, 27 Jan 2017 14:48:48 +0000 (08:48 -0600)
12 files changed:
16/glist.c [new file with mode: 0755]
DEBUG.16W [deleted file]
HEAP.16W [deleted file]
MMDUMP.16W [deleted file]
src/0.c
src/lib/16_sprit.c
src/lib/16_tdef.h
src/lib/16_vl.c
src/lib/bakapee.c
src/lib/doslib
src/lib/scroll16.c
src/lib/scroll16.h

diff --git a/16/glist.c b/16/glist.c
new file mode 100755 (executable)
index 0000000..a29e500
--- /dev/null
@@ -0,0 +1,343 @@
+/****************************************************
+ * William Crenshaw
+ * 10/27/2014
+ * GList.cc
+ *
+ * Generic list program
+ ****************************************************/
+
+#include <iostream>
+using namespace std;
+
+const int MAX_SIZE = 35;
+
+template <class T>
+class List
+{
+       private:
+               // list node definition
+               struct Node
+               {
+                       T data;
+                       Node *link;
+               };
+
+               Node *head;     // the head of the list
+               Node *tail;     // the tail of the list
+               Node *curr;     // the current position in the list
+               int num_items;  // the number of items in the list
+
+       public:
+               // constructor
+               // remember that an empty list has a "size" of -1 and its "position" is at -1
+               List()
+               {
+                       head = NULL;
+                       tail = NULL;
+                       curr = NULL;
+                       num_items = 0;
+               }
+
+               // copy constructor
+               // clones the list l and sets the last element as the current
+               List(const List& l)
+               {
+                       *this = l;
+               }
+
+               // copy constructor
+               // clones the list l and sets the last element as the current
+               void operator=(const List& l)
+               {
+                       head = NULL;
+                       tail = NULL;
+                       curr = NULL;
+                       num_items = 0;
+
+                       Node *n = l.head;
+
+                       while(n != NULL)
+                       {
+                               InsertAfter(n->data);
+                               n = n->link;
+                       }
+               }
+
+               // navigates to the beginning of the list
+               void First()
+               {
+                       curr = head;
+               }
+
+               // navigates to the end of the list
+               // the end of the list is at the last valid item in the list
+               void Last()
+               {
+                       curr = tail;
+               }
+
+               // navigates to the specified element (0-index)
+               // this should not be possible for an empty list
+               // this should not be possible for invalid positions
+               void SetPos(int pos)
+               {
+                       if(!IsEmpty() && pos >= 0 && pos < GetSize())
+                       {
+                               curr = head;
+                               while(pos > 0)
+                               {
+                                       curr = curr->link;
+                                       pos--;
+                               }
+                       }
+               }
+
+               // navigates to the previous element
+               // this should not be possible for an empty list
+               // there should be no wrap-around
+               void Prev()
+               {
+                       if(curr != head)
+                       {
+                               Node *n = head;
+
+                               while(n->link != curr)
+                                       n = n->link;
+
+                               curr = n;
+                       }
+               }
+
+               // navigates to the next element
+               // this should not be possible for an empty list
+               // there should be no wrap-around
+               void Next()
+               {
+                       if(!IsEmpty() && curr != tail)
+                               curr = curr->link;
+               }
+
+               // returns the location of the current element (or -1)
+               int GetPos()
+               {
+                       if(IsEmpty())
+                               return -1;
+
+                       int pos = 0;
+                       Node *n = head;
+
+                       while(n != curr)
+                       {
+                               n = n->link;
+                               pos++;
+                       }
+
+                       return pos;
+               }
+
+               // returns the value of the current element (or -1)
+               T GetValue()
+               {
+                       if(!IsEmpty())
+                               return curr->data;
+
+                       return -1;
+               }
+
+               // returns the size of the list
+               // size does not imply capacity
+               int GetSize()
+               {
+                       return num_items;
+               }
+
+               // inserts an item before the current element
+               // the new element becomes the current
+               // this should not be possible for a full list
+               void InsertBefore(T data)
+               {
+                       if(!IsFull())
+                       {
+                               if(IsEmpty())
+                                       InsertAfter(data);
+                               else
+                               {
+                                       Node* n = new Node;
+                                       n->data = data;
+                                       n->link = NULL;
+
+                                       if(curr == head)
+                                       {
+                                               n->link = head;
+                                               head = n;
+                                               curr = n;
+                                               num_items++;
+                                       }
+                                       else
+                                       {
+                                               Prev();
+                                               InsertAfter(data);
+                                       }
+                               }
+                       }
+               }
+
+               // inserts an item after the current element
+               // the new element becomes the current
+               // this should not be possible for a full list
+               void InsertAfter(T data)
+               {
+                       if(!IsFull())
+                       {
+                               Node* n = new Node;
+                               n->data = data;
+                               n->link = NULL;
+
+                               if(IsEmpty())
+                               {
+                                       head = n;
+                                       tail = n;
+                               }
+                               else
+                               {
+                                       if(curr == tail)
+                                       {
+                                               curr->link = n;
+                                               tail = n;
+                                       }
+                                       else
+                                       {
+                                               n->link = curr->link;
+                                               curr->link = n;
+                                       }
+                               }
+
+                               curr = n;
+                               num_items++;
+                       }
+               }
+
+               // removes the current element (collapsing the list)
+               // this should not be possible for an empty list
+               void Remove()
+               {
+                       if(!IsEmpty())
+                       {
+                               if(num_items == 1)
+                               {
+                                       head = NULL;
+                                       tail = NULL;
+                                       curr = NULL;
+                               }
+                               else
+                               {
+                                       if(curr == head)
+                                       {
+                                               head = head->link;
+                                               curr = head;
+                                       }
+                                       else if(curr == tail)
+                                       {
+                                               Prev();
+                                               tail = curr;
+                                               tail->link = NULL;
+                                       }
+                                       else
+                                       {
+                                               Prev();
+                                               curr->link = curr->link->link;
+                                               Next();
+                                       }
+                               }
+
+                               num_items--;
+                       }
+               }
+
+               // replaces the value of the current element with the specified value
+               // this should not be possible for an empty list
+               void Replace(int data)
+               {
+                       if(!IsEmpty())
+                               curr->data = data;
+               }
+
+               // returns if the list is empty
+               bool IsEmpty()
+               {
+                       return (num_items == 0);
+               }
+
+               // returns if the list is full
+               bool IsFull()
+               {
+                       return (num_items == MAX_SIZE);
+               }
+
+               // returns the concatenation of two lists
+               // l should not be modified
+               // l should be concatenated to the end of *this
+               // the returned list should not exceed MAX_SIZE elements
+               // the last element of the new list is the current
+               List operator+(const List& l) const
+               {
+                       List newList = *this;
+
+                       Node *n = l.head;
+
+                       while(n != NULL)
+                       {
+                               newList.InsertAfter(n->data);
+                               n = n->link;
+                       }
+
+                       return newList;
+               }
+
+               // returns if two lists are equal (by value)
+               bool operator==(const List& l) const
+               {
+                       if(num_items != l.num_items)
+                               return false;
+
+                       Node *n = head;
+                       Node *p = l.head;
+
+                       while(n != NULL)
+                       {
+                               if(n->data != p->data)
+                                       return false;
+
+                               n = n->link;
+                               p = p->link;
+                       }
+
+                       return true;
+               }
+
+               // returns if two lists are not equal (by value)
+               bool operator!=(const List& l) const
+               {
+                       return !(*this == l);
+               }
+
+               // returns a string representation of the entire list (e.g., 1 2 3 4 5)
+               // the string "NULL" should be returned for an empty list
+               friend ostream& operator<<(ostream& out, const List &l)
+               {
+                       if(l.num_items == 0)
+                               out << "NULL";
+                       else
+                       {
+                               Node* n = l.head;
+
+                               while(n != NULL)
+                               {
+                                       out << n->data;// << " ";
+                                       n = n->link;
+                               }
+                       }
+
+                       return out;
+               }
+};
diff --git a/DEBUG.16W b/DEBUG.16W
deleted file mode 100755 (executable)
index 927f74d..0000000
--- a/DEBUG.16W
+++ /dev/null
@@ -1,210 +0,0 @@
-\e[0mSeg:0      Size:9973       Owner:0x0\r
-\e[41;31m+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\e[0m\e[42;32m0000\r
-\e[0m\e[0mSeg:27ba       Size:36 Owner:0x0\r
-\e[41;31m+\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:27de       Size:256        Owner:0x1984\r
-\e[44;34m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:28de       Size:256        Owner:0x1776\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:29de       Size:256        Owner:0x1778\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2ade       Size:256        Owner:0x177a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2bde       Size:256        Owner:0x177c\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2cde       Size:256        Owner:0x177e\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2dde       Size:256        Owner:0x1780\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2ede       Size:256        Owner:0x1782\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:2fde       Size:256        Owner:0x1784\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:30de       Size:256        Owner:0x1786\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:31de       Size:256        Owner:0x1788\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:32de       Size:256        Owner:0x178a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:33de       Size:256        Owner:0x178c\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:34de       Size:256        Owner:0x178e\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:35de       Size:256        Owner:0x1790\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:36de       Size:256        Owner:0x1792\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:37de       Size:256        Owner:0x1794\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:38de       Size:256        Owner:0x1796\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:39de       Size:256        Owner:0x1798\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3ade       Size:256        Owner:0x179a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3bde       Size:256        Owner:0x179c\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3cde       Size:256        Owner:0x179e\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3dde       Size:256        Owner:0x17a0\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3ede       Size:256        Owner:0x17a2\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:3fde       Size:256        Owner:0x17a4\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:40de       Size:256        Owner:0x17a6\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:41de       Size:256        Owner:0x17a8\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:42de       Size:256        Owner:0x17aa\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:43de       Size:256        Owner:0x17ac\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:44de       Size:256        Owner:0x17ae\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:45de       Size:256        Owner:0x17b0\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:46de       Size:256        Owner:0x17b2\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:47de       Size:256        Owner:0x17b4\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:48de       Size:256        Owner:0x17b6\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:49de       Size:256        Owner:0x17b8\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4ade       Size:256        Owner:0x17ba\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4bde       Size:256        Owner:0x17bc\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4cde       Size:256        Owner:0x17be\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4dde       Size:256        Owner:0x17c0\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4ede       Size:256        Owner:0x17c2\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:4fde       Size:256        Owner:0x17c4\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:50de       Size:256        Owner:0x17c6\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:51de       Size:256        Owner:0x17c8\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:52de       Size:256        Owner:0x17ca\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:53de       Size:256        Owner:0x17cc\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:54de       Size:256        Owner:0x17ce\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:55de       Size:256        Owner:0x17d0\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:56de       Size:256        Owner:0x17d2\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:57de       Size:256        Owner:0x17d4\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:58de       Size:256        Owner:0x17d6\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:59de       Size:256        Owner:0x17d8\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5ade       Size:256        Owner:0x17da\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5bde       Size:256        Owner:0x17dc\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5cde       Size:256        Owner:0x17de\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5dde       Size:256        Owner:0x17e0\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5ede       Size:256        Owner:0x17e2\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:5fde       Size:256        Owner:0x17e4\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:60de       Size:256        Owner:0x17e6\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:61de       Size:256        Owner:0x17e8\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:62de       Size:256        Owner:0x17ea\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:63de       Size:256        Owner:0x17ec\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:64de       Size:256        Owner:0x17ee\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:65de       Size:256        Owner:0x17f0\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:66de       Size:256        Owner:0x17f2\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:67de       Size:256        Owner:0x17f4\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:68de       Size:256        Owner:0x17f6\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:69de       Size:256        Owner:0x17f8\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6ade       Size:256        Owner:0x17fa\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6bde       Size:256        Owner:0x17fc\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6cde       Size:256        Owner:0x17fe\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6dde       Size:256        Owner:0x1800\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6ede       Size:256        Owner:0x1802\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:6fde       Size:256        Owner:0x1804\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:70de       Size:256        Owner:0x1806\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:71de       Size:256        Owner:0x1808\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:72de       Size:256        Owner:0x180a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:73de       Size:256        Owner:0x180c\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:74de       Size:256        Owner:0x180e\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:75de       Size:256        Owner:0x1810\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:76de       Size:256        Owner:0x1812\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:77de       Size:256        Owner:0x1814\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:78de       Size:256        Owner:0x1816\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:79de       Size:256        Owner:0x1818\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7ade       Size:256        Owner:0x181a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7bde       Size:256        Owner:0x181c\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7cde       Size:256        Owner:0x181e\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7dde       Size:256        Owner:0x1820\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7ede       Size:256        Owner:0x1822\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:7fde       Size:256        Owner:0x1824\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:80de       Size:256        Owner:0x1826\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:81de       Size:256        Owner:0x1828\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:82de       Size:256        Owner:0x182a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:83de       Size:256        Owner:0x182c\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:84de       Size:256        Owner:0x182e\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:85de       Size:256        Owner:0x1830\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:86de       Size:256        Owner:0x1832\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:87de       Size:256        Owner:0x1834\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:88de       Size:256        Owner:0x1836\r
-\e[45;35m+++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:89de       Size:256        Owner:0x1838\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:8ade       Size:256        Owner:0x183a\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:8bde       Size:256        Owner:0x183c\r
-\e[45;35m++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:8cde       Size:401        Owner:0xef0c\r
-\e[44;34m++++++\e[0m\e[42;32m\r
-\e[0m\e[0mSeg:b7de       Size:18465      Owner:0x0\r
-\e[41;31m++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\e[0m
\ No newline at end of file
diff --git a/HEAP.16W b/HEAP.16W
deleted file mode 100755 (executable)
index 21a34df..0000000
--- a/HEAP.16W
+++ /dev/null
@@ -1,69 +0,0 @@
-\r
-       == default ==\r
-\r
-  FREE block at 27dc0016 of size 68\r
-  USED block at 27dc005a of size 50\r
-  USED block at 27dc008c of size 50\r
-  USED block at 27dc00be of size 50\r
-  USED block at 27dc00f0 of size 50\r
-  USED block at 27dc0122 of size 50\r
-  USED block at 27dc0154 of size 50\r
-  USED block at 27dc0186 of size 50\r
-  USED block at 27dc01b8 of size 50\r
-  USED block at 27dc01ea of size 50\r
-  USED block at 27dc021c of size 50\r
-  USED block at 27dc024e of size 50\r
-  USED block at 27dc0280 of size 50\r
-  FREE block at 27dc02b2 of size 14\r
-  USED block at 27dc02c0 of size 20\r
-  USED block at 27dc02d4 of size 136\r
-  FREE block at 27dc035c of size 7328\r
-OK - end of heap\r
-\r
-       == near ==\r
-\r
-  USED block at 17dbefa6 of size 12\r
-  USED block at 17dbefb2 of size 330\r
-  USED block at 17dbf0fc of size 52\r
-  USED block at 17dbf130 of size 20\r
-  USED block at 17dbf144 of size 20\r
-  USED block at 17dbf158 of size 20\r
-  USED block at 17dbf16c of size 20\r
-  USED block at 17dbf180 of size 20\r
-  USED block at 17dbf194 of size 3688\r
-OK - end of heap\r
-\r
-       == far ==\r
-\r
-  USED block at 27dc0016 of size 68\r
-  USED block at 27dc005a of size 50\r
-  USED block at 27dc008c of size 50\r
-  USED block at 27dc00be of size 50\r
-  USED block at 27dc00f0 of size 50\r
-  USED block at 27dc0122 of size 50\r
-  USED block at 27dc0154 of size 50\r
-  USED block at 27dc0186 of size 50\r
-  USED block at 27dc01b8 of size 50\r
-  USED block at 27dc01ea of size 50\r
-  USED block at 27dc021c of size 50\r
-  USED block at 27dc024e of size 50\r
-  USED block at 27dc0280 of size 50\r
-  USED block at 27dc02b2 of size 14\r
-  USED block at 27dc02c0 of size 20\r
-  USED block at 27dc02d4 of size 136\r
-  USED block at 27dc035c of size 7328\r
-OK - end of heap\r
-\r
-Memory Type         Total      Used       Free\r
-----------------  --------   --------   --------\r
-Default                   8166         756       7410\r
-Near              4182         494       3688\r
-Far               8166         756       7410\r
-----------------  --------   --------   --------\r
-coreleft = 3686\r
-farcoreleft = 35502\r
-GetFreeSize = 31836\r
-GetNearFreeSize = 3688\r
-GetFarFreeSize = 31836\r
-memavl = 3686\r
-stackavail = 31557\r
diff --git a/MMDUMP.16W b/MMDUMP.16W
deleted file mode 100755 (executable)
index 9793e6e..0000000
Binary files a/MMDUMP.16W and /dev/null differ
diff --git a/src/0.c b/src/0.c
index a79f455..2d55bcd 100755 (executable)
--- a/src/0.c
+++ b/src/0.c
@@ -31,7 +31,7 @@ int main(int argc,char **argv)
        boolean anim=1,noanim=0,zerostoppause=1;\r
 \r
        bakapee1=malloc(64);\r
-       bakapee2=malloc(1024);\r
+       bakapee2=malloc(64);\r
 \r
        if (argc < 2) {\r
                //fprintf(stderr,"drawvrl <VRL file> <palette file>\n palette file optional\n");\r
index 8cac659..d9ecad9 100755 (executable)
@@ -99,18 +99,29 @@ void print_anim_ids(struct sprite *spri)
 void animate_spri(entity_t *enti, video_t *video)\r
 {\r
 #define INC_PER_FRAME if(enti->q&1) enti->persist_aniframe++; if(enti->persist_aniframe>4) enti->persist_aniframe = 1;\r
-       const unsigned int offscreen_ofs = video->page[0].pagesize+video->page[1].pagesize;//(vga_state.vga_stride * vga_state.vga_height);\r
-       const unsigned int pattern_ofs = 0x10000UL - (uint16_t)video->page[2].data;//(vga_state.vga_stride * vga_state.vga_height);\r
+       const unsigned int offscreen_ofs =      video->page[0].pagesize+video->page[1].pagesize;//(vga_state.vga_stride * vga_state.vga_height);\r
+       const unsigned int pattern_ofs =        0x10000UL - (uint16_t)video->page[2].data;//(vga_state.vga_stride * vga_state.vga_height);\r
+       unsigned int copy_ofs =                 offscreen_ofs;\r
+       unsigned int display_ofs =              0x0000;\r
        unsigned int i,o,o2; int j;\r
        int x,y,rx,ry,w,h;\r
 \r
-       VGA_RAM_PTR omemptr;\r
+       VGA_RAM_PTR omemptr = (VGA_RAM_PTR)video->page[0].data;// save original mem ptr\r
+       x=enti->spri->x;\r
+       y=enti->spri->y;\r
 \r
        // Depending on delay, update indices\r
 //#define FRAME1 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 48, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR);\r
 //#define FRAME2 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
 //#define FRAME3 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 0, player[pn].enti.dire, 24, 32,       PLAYERBMPDATAPTR);\r
 //#define FRAME4 modexDrawSpriteRegion(pip[(pip->video->p)].page, x, y, 24, player[pn].enti.dire, 24, 32,      PLAYERBMPDATAPTR); stand\r
+\r
+       /* copy active display (0) to offscreen buffer (0x4000) */\r
+       vga_state.vga_draw_stride_limit = vga_state.vga_draw_stride = vga_state.vga_stride;\r
+       vga_setup_wm1_block_copy();\r
+       vga_wm1_mem_block_copy(copy_ofs,        display_ofs,    vga_state.vga_stride * vga_state.vga_height);\r
+       vga_restore_rm0wm0();\r
+\r
        switch(enti->spri->delay)\r
        {\r
                // Delay = 0 means that sprite should loop. Nothing to change here\r
@@ -138,9 +149,6 @@ void animate_spri(entity_t *enti, video_t *video)
        // Events go here\r
 \r
 \r
-       omemptr = (VGA_RAM_PTR)video->page[0].data;// save original mem ptr\r
-       x=enti->spri->x;\r
-       y=enti->spri->y;\r
 \r
        // Draw sprite\r
        j = get_vrl_by_id(enti->spri->spritesheet, enti->spri->curr_spri_id, enti->spri->sprite_vrl_cont);\r
index 004b5d1..206598c 100755 (executable)
@@ -99,25 +99,18 @@ typedef struct{
        sword tilemidposscreeny;        /* middle tile y position */    /* needed for scroll system to work accordingly */\r
        sword tileplayerposscreenx;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
        sword tileplayerposscreeny;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
-} ti_t;\r
+} tileinfo_t;\r
 \r
 typedef struct {\r
        nibble/*word*/ id;      /* the Identification number of the page~ For layering~ */\r
        byte far* data; /* the data for the page */\r
+       tileinfo_t      ti;\r
        word dx;                /* col we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the left size */\r
        word dy;                /* row we are viewing on virtual screen (on page[0]) */ /* off screen buffer on the top size */\r
        word sw;                /* screen width */      /* resolution */\r
        word sh;                /* screen heigth */     /* resolution */\r
-               word tw;                /* screen width in tiles */\r
-               word th;                /* screen height in tiles */\r
        word width;             /* virtual width of the page */\r
        word height;    /* virtual height of the page */\r
-               word tilesw;            /* virtual screen width in tiles */\r
-               word tilesh;            /* virtual screen height in tiles */\r
-               sword tilemidposscreenx;        /* middle tile x position */    /* needed for scroll system to work accordingly */\r
-               sword tilemidposscreeny;        /* middle tile y position */    /* needed for scroll system to work accordingly */\r
-               sword tileplayerposscreenx;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
-               sword tileplayerposscreeny;     /* player position on screen */ /* needed for scroll and map system to work accordingly */\r
        word stridew;                   /* width/4 */   /* VGA */\r
        word pagesize;                  /* page size */\r
        word pi;                                /* increment page by this much to preserve location */\r
@@ -126,7 +119,7 @@ typedef struct {
        sword delta;                    // How much should we shift the page for smooth scrolling\r
 } page_t;\r
 \r
-//new structs\r
+//newer structs\r
 typedef        struct\r
 {\r
        int x; //entity exact position on the viewable map\r
@@ -285,6 +278,36 @@ typedef struct
        byte grneeded[NUMCHUNKS];\r
 } video_t;\r
 \r
+//from scroll16\r
+//==========================================================================\r
+typedef struct\r
+{\r
+       map_t *map;\r
+       page_t *page;\r
+       int tx,ty; //appears to be the top left tile position on the viewable screen map\r
+       word dxThresh,dyThresh; //Threshold for physical tile switch\r
+       video_t *video; //pointer to game variables of the video\r
+       nibble __near *p;       // pointer to video's render page num\r
+       nibble __near *sp;      // pointer to video's show page num\r
+       int dx, dy;     // draw row and col var\r
+//newer vars!\r
+       int delta, d;\r
+} map_view_t;\r
+/* Map is presumed to:\r
+ * 1. Have all the required layers and tilesets within itself\r
+ * 2. Have a 'fence' around accessible blocks to simplify boundary logic\r
+ * 3. Have a persistent map and tile size among the layers\r
+ * Map view is presumed to:\r
+ * 1. Calculate, store and update a panning info, which includes, but not limited to:\r
+ *     combined layer information, actual map representation (reflecting real state of the game),\r
+ *     pixel shift for smooth tile scrolling.\r
+ * 2. Provide ways to draw a visible part of map. For simplicity with smooth scrolling,\r
+ *     additional row/column is always drawn at the each side of the map. This implies that 'fence'\r
+ *     should have a sprite too. Map is drawn left-to-right, top-to-bottom.\r
+ */\r
+\r
+//==========================================================================\r
+\r
 //from 16_mm\r
 //==========================================================================\r
 \r
index 59ce49a..31a76ce 100755 (executable)
@@ -162,12 +162,12 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv)
                break;\r
        }\r
 \r
-//     gv->video.page[0].tw = gv->video.page[0].sw/TILEWH;\r
-//     gv->video.page[0].th = gv->video.page[0].sh/TILEWH;\r
+//     gv->video.page[0].ti.tw = gv->video.page[0].sw/TILEWH;\r
+//     gv->video.page[0].ti.th = gv->video.page[0].sh/TILEWH;\r
 \r
        //TODO MAKE FLEXIBLE~\r
-//     gv->video.page[0].tilemidposscreenx = gv->video.page[0].tilesw;\r
-//     gv->video.page[0].tilemidposscreeny = (gv->video.page[0].tilesh/2)+1;\r
+//     gv->video.page[0].ti.tilemidposscreenx = gv->video.page[0].ti.tilesw;\r
+//     gv->video.page[0].ti.tilemidposscreeny = (gv->video.page[0].ti.tilesh/2)+1;\r
 }\r
 \r
 void\r
@@ -191,12 +191,12 @@ modexDefaultPage(page_t *p)
        page.sh = p->sh;\r
        page.width = p->sw+TILEWHD;\r
        page.height = p->sh+TILEWHD;\r
-       page.tw = page.sw/TILEWH;\r
-       page.th = page.sh/TILEWH;\r
-       page.tilesw=page.width/TILEWH;\r
-       page.tilesh=page.height/TILEWH;\r
-       page.tilemidposscreenx = page.tw/2;\r
-       page.tilemidposscreeny = (page.th/2)+1;\r
+       page.ti.tw = page.sw/TILEWH;\r
+       page.ti.th = page.sh/TILEWH;\r
+       page.ti.tilesw=page.width/TILEWH;\r
+       page.ti.tilesh=page.height/TILEWH;\r
+       page.ti.tilemidposscreenx = page.ti.tw/2;\r
+       page.ti.tilemidposscreeny = (page.ti.th/2)+1;\r
        page.stridew=page.width/4;\r
        page.pagesize = (word)(page.stridew)*page.height;\r
        page.pi=page.width*4;\r
@@ -219,10 +219,10 @@ modexNextPage(page_t *p) {
        result.sh = p->sh;\r
        result.width = p->width;\r
        result.height = p->height;\r
-       result.tw = p->tw;\r
-       result.th = p->th;\r
-       result.tilesw = p->tilesw;\r
-       result.tilesh = p->tilesh;\r
+       result.ti.tw = p->ti.tw;\r
+       result.ti.th = p->ti.th;\r
+       result.ti.tilesw = p->ti.tilesw;\r
+       result.ti.tilesh = p->ti.tilesh;\r
        result.stridew=p->stridew;\r
        result.pagesize = p->pagesize;\r
        result.pi=result.width*4;\r
@@ -244,10 +244,10 @@ modexNextPageFlexibleSize(page_t *p, word x, word y)
        result.sh = y;\r
        result.width = x;\r
        result.height = y;\r
-       result.tw = result.sw/TILEWH;\r
-       result.th = result.sh/TILEWH;\r
-       result.tilesw=result.width/TILEWH;\r
-       result.tilesh=result.height/TILEWH;\r
+       result.ti.tw = result.sw/TILEWH;\r
+       result.ti.th = result.sh/TILEWH;\r
+       result.ti.tilesw=result.width/TILEWH;\r
+       result.ti.tilesh=result.height/TILEWH;\r
        result.id = p->id+1;\r
        result.stridew=result.width/4;//p->sw/4;\r
        result.pagesize = (word)(result.stridew)*result.height;\r
@@ -1256,7 +1256,7 @@ void modexcls(page_t *page, byte color, byte *Where)
        /* set map mask to all 4 planes */\r
        outpw(SC_INDEX, 0xff02);\r
        //_fmemset(VGA, color, 16000);\r
-       _fmemset(Where, color, page->width*(page->height)/4);\r
+       _fmemset(Where, color, page->stridew*page->height);\r
 }\r
 \r
 //\r
@@ -1330,8 +1330,8 @@ void VL_PrintmodexmemInfo(video_t *v)
 //     printf("========================================\n");\r
        printf("VL_PrintmodexmemInfo:\n");\r
 //     printf("========================================\n");\r
-       printf("  Virtual Screen: %dx", v->page[0].width);      printf("%d      ", v->page[0].height);  printf("Tile: %dx", v->page[0].tilesw);         printf("%d", v->page[0].tilesh);        printf("=((Virtual Screen)/16)\n");\r
-       printf("        Screen: %dx", v->page[0].sw);           printf("%d      ", v->page[0].sh);              printf("Tile: %dx", v->page[0].tw);                     printf("%d", v->page[0].th);            printf("=((Screen)/16)\n");\r
+       printf("  Virtual Screen: %dx", v->page[0].width);      printf("%d      ", v->page[0].height);  printf("Tile: %dx", v->page[0].ti.tilesw);              printf("%d", v->page[0].ti.tilesh);     printf("=((Virtual Screen)/16)\n");\r
+       printf("        Screen: %dx", v->page[0].sw);           printf("%d      ", v->page[0].sh);              printf("Tile: %dx", v->page[0].ti.tw);                  printf("%d", v->page[0].ti.th);         printf("=((Screen)/16)\n");\r
 \r
        printf("  Free Video Memory: %u\n", v->vmem_remain);\r
        printf("  page");\r
index 917784f..0b2c6d0 100755 (executable)
@@ -280,8 +280,10 @@ void ding(page_t *page, bakapee_t *pee, word q)
                        colortest(page, pee);\r
                break;\r
                case 6:\r
-                       pee->coor = rand()%256;\r
-                       modexcls(page, pee->coor, VGA);\r
+//                     pee->coor = rand()%256;\r
+//                     modexcls(page, pee->coor, VGA);\r
+                       colorz(page, pee);\r
+                       modexprint(page, page->sw/2, page->sh/2, 1, 47, 0, "bakapi");\r
                break;\r
                case 7:\r
                        if(pee->coor <= pee->hgq)\r
index 8281064..e6fba71 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 82810640576d089bbc4b382b3318a41679ff2817
+Subproject commit e6fba71d59fad9b5e5bce6115f38dfb61c299a32
index d6d7875..4ad596f 100755 (executable)
@@ -36,7 +36,7 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                break;\r
                //right movement\r
                case 3:\r
-                       if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->tw < pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
+                       if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->ti.tw < pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->ti.tilemidposscreenx &&\r
                        !(pip[0].map->data[(player[pn].enti.tx)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx+1 == TRIGGX && player[pn].enti.ty == TRIGGY))  //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
@@ -73,7 +73,7 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                break;\r
                //left movement\r
                case 1:\r
-                       if(pip[0].tx > 0 && pip[0].tx+pip[0].page->tw <= pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->tilemidposscreenx &&\r
+                       if(pip[0].tx > 0 && pip[0].tx+pip[0].page->ti.tw <= pip[0].map->width && player[pn].enti.tx == pip[0].tx+pip[0].page->ti.tilemidposscreenx &&\r
                        !(pip[0].map->data[(player[pn].enti.tx-2)+(pip[0].map->width*(player[pn].enti.ty-1))] == 0))//!(player[pn].enti.tx-1 == TRIGGX && player[pn].enti.ty == TRIGGY))        //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
@@ -110,7 +110,7 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                break;\r
                //down movement\r
                case 4:\r
-                       if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->th < pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
+                       if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->ti.th < pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->ti.tilemidposscreeny &&\r
                        !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty+1 == TRIGGY))  //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
@@ -147,7 +147,7 @@ void ZC_walk(map_view_t *pip, player_t *player, word pn)
                break;\r
                //up movement\r
                case 0:\r
-                       if(pip[0].ty > 0 && pip[0].ty+pip[0].page->th <= pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->tilemidposscreeny &&\r
+                       if(pip[0].ty > 0 && pip[0].ty+pip[0].page->ti.th <= pip[0].map->height && player[pn].enti.ty == pip[0].ty+pip[0].page->ti.tilemidposscreeny &&\r
                        !(pip[0].map->data[(player[pn].enti.tx-1)+(pip[0].map->width*(player[pn].enti.ty-2))] == 0))//!(player[pn].enti.tx == TRIGGX && player[pn].enti.ty-1 == TRIGGY))        //collision detection!\r
                        {\r
                                player[pn].walktype=2;\r
@@ -194,7 +194,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
        {\r
                //right movement\r
                case 3:\r
-                       if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->tw < pip[0].page->tilesw)\r
+                       if(pip[0].tx >= 0 && pip[0].tx+pip[0].page->ti.tw < pip[0].page->ti.tilesw)\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -207,7 +207,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //left movement\r
                case 1:\r
-                       if(pip[0].tx > 0 && pip[0].tx+pip[0].page->tw <= pip[0].page->tilesw)\r
+                       if(pip[0].tx > 0 && pip[0].tx+pip[0].page->ti.tw <= pip[0].page->ti.tilesw)\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -220,7 +220,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //down movement\r
                case 4:\r
-                       if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->th < pip[0].page->tilesh)\r
+                       if(pip[0].ty >= 0 && pip[0].ty+pip[0].page->ti.th < pip[0].page->ti.tilesh)\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -233,7 +233,7 @@ void ZC_panPageManual(map_view_t *pip, player_t *player, word pn)
 \r
                //up movement\r
                case 0:\r
-                       if(pip[0].ty > 0 && pip[0].ty+pip[0].page->th <= pip[0].page->tilesh)\r
+                       if(pip[0].ty > 0 && pip[0].ty+pip[0].page->ti.th <= pip[0].page->ti.tilesh)\r
                        {\r
                                if(player[pn].enti.q<=player[pn].enti.spt)\r
                                {\r
@@ -436,10 +436,10 @@ void near mapScrollRight(map_view_t *mv, player_t *player, word id, word plid)
        if(player[plid].enti.q==4)\r
 #endif\r
                if(id==0)\r
-                       mapDrawCol(&mv[0], mv[0].tx + mv[0].page->tw, mv[0].ty-1, x, player, DRAWCOLNUM);\r
+                       mapDrawCol(&mv[0], mv[0].tx + mv[0].page->ti.tw, mv[0].ty-1, x, player, DRAWCOLNUM);\r
 //             else\r
 //                     if(!pageflipflop && !pageploop)\r
-//                             modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->th+2));\r
+//                             modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2));\r
        mv[0].video->r=1;\r
 }\r
 \r
@@ -473,7 +473,7 @@ void near mapScrollLeft(map_view_t *mv, player_t *player, word id, word plid)
                        mapDrawCol(&mv[0], mv[0].tx - 1, mv[0].ty-1, x, player, DRAWCOLNUM);\r
 //             else\r
 //                     if(!pageflipflop && !pageploop)\r
-//                             modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->th+2));\r
+//                             modexCopyPageRegion(mv[id].page, mv[0].page, x, 0, x, 0, mv[id].map->tiles->tileWidth, mv[id].map->tiles->tileHeight*(mv[0].page->ti.th+2));\r
        mv[0].video->r=1;\r
 }\r
 \r
@@ -507,7 +507,7 @@ void near mapScrollUp(map_view_t *mv, player_t *player, word id, word plid)
                        mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty-1, y, player, DRAWCOLNUM);\r
 //             else\r
 //                     if(!pageflipflop && !pageploop)\r
-//                             modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->tw+2), mv[id].map->tiles->tileHeight);\r
+//                             modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight);\r
        mv[0].video->r=1;\r
 }\r
 \r
@@ -538,10 +538,10 @@ void near mapScrollDown(map_view_t *mv, player_t *player, word id, word plid)
        if(player[plid].enti.q==4)\r
 #endif\r
                if(id==0)\r
-                       mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty+mv[0].page->th, y, player, DRAWCOLNUM);\r
+                       mapDrawRow(&mv[0], mv[0].tx - 1, mv[0].ty+mv[0].page->ti.th, y, player, DRAWCOLNUM);\r
 //             else\r
 //                     if(!pageflipflop && !pageploop)\r
-//                             modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->tw+2), mv[id].map->tiles->tileHeight);\r
+//                             modexCopyPageRegion(mv[id].page, mv[0].page, 0, y, 0, y, mv[id].map->tiles->tileWidth*(mv[0].page->ti.tw+2), mv[id].map->tiles->tileHeight);\r
        mv[0].video->r=1;\r
 }\r
 \r
@@ -620,8 +620,8 @@ void near ScrollDown(map_view_t *mv, player_t *player, word id, word plid)
 //default player position on the viewable map\r
 void playerXYpos(int x, int y, player_t *player, map_view_t *pip, nibble pn)\r
 {\r
-       player[pn].enti.tx = x + pip[0].tx + pip[0].page->tilemidposscreenx;\r
-       player[pn].enti.ty = y + pip[0].ty + pip[0].page->tilemidposscreeny;\r
+       player[pn].enti.tx = x + pip[0].tx + pip[0].page->ti.tilemidposscreenx;\r
+       player[pn].enti.ty = y + pip[0].ty + pip[0].page->ti.tilemidposscreeny;\r
 }\r
 //===========================================================================\r
 \r
@@ -1129,7 +1129,7 @@ boolean ZC_walk2(entity_t *enti, map_view_t *map_v)
 \r
 void player_walk(player_t *player, map_view_t *map_v){\r
        int dx=16, dy=16;\r
-       if(ZC_walk2(&(player->enti), map_v) && boundary_check(map_v->tx, map_v->ty, dx, dy, map_v->map->width - 2*map_v->page->tilesw, map_v->map->height - 2*map_v->page->tilesh))\r
+       if(ZC_walk2(&(player->enti), map_v) && boundary_check(map_v->tx, map_v->ty, dx, dy, map_v->map->width - 2*map_v->page->ti.tilesw, map_v->map->height - 2*map_v->page->ti.tilesh))\r
        {\r
                mapScroll(map_v, player);\r
                // (Un)load stuff?\r
index fdfd58a..dc81f87 100755 (executable)
 //#define DRAWCOLNUM player[plid].enti.q\r
 //#define DRAWROLNUM player[plid].enti.q\r
 \r
-typedef struct {\r
-       map_t *map;\r
-       page_t *page;\r
-       int tx; //appears to be the top left tile position on the viewable screen map\r
-       int ty; //appears to be the top left tile position on the viewable screen map\r
-       word dxThresh; //Threshold for physical tile switch\r
-       word dyThresh; //Threshold for physical tile switch\r
-       video_t *video; //pointer to game variables of the video\r
-       nibble __near *p;       // pointer to video's render page num\r
-       nibble __near *sp;      // pointer to video's show page num\r
-       int dx, dy;     // draw row and col var\r
-//newer vars!\r
-       int delta, d;\r
-} map_view_t;\r
-/* Map is presumed to:\r
- * 1. Have all the required layers and tilesets within itself\r
- * 2. Have a 'fence' around accessible blocks to simplify boundary logic\r
- * 3. Have a persistent map and tile size among the layers\r
- * Map view is presumed to:\r
- * 1. Calculate, store and update a panning info, which includes, but not limited to:\r
- *     combined layer information, actual map representation (reflecting real state of the game),\r
- *     pixel shift for smooth tile scrolling.\r
- * 2. Provide ways to draw a visible part of map. For simplicity with smooth scrolling,\r
- *     additional row/column is always drawn at the each side of the map. This implies that 'fence'\r
- *     should have a sprite too. Map is drawn left-to-right, top-to-bottom.\r
- */\r
-\r
 //for null map!\r
 #define MAPW   40\r
 #define MAPH   30\r