--- /dev/null
+/* Project 16 Source Code~\r
+ * Copyright (C) 2012-2016 sparky4 & pngwen & andrius4669 & joncampbell123\r
+ *\r
+ * This file is part of Project 16.\r
+ *\r
+ * Project 16 is free software; you can redistribute it and/or modify\r
+ * it under the terms of the GNU General Public License as published by\r
+ * the Free Software Foundation; either version 3 of the License, or\r
+ * (at your option) any later version.\r
+ *\r
+ * Project 16 is distributed in the hope that it will be useful,\r
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
+ * GNU General Public License for more details.\r
+ *\r
+ * You should have received a copy of the GNU General Public License\r
+ * along with this program. If not, see <http://www.gnu.org/licenses/>, or\r
+ * write to the Free Software Foundation, Inc., 51 Franklin Street,\r
+ * Fifth Floor, Boston, MA 02110-1301 USA.\r
+ *\r
+ */\r
+#include <stdio.h>\r
+#include <conio.h>\r
+#include "lib/types.h"\r
+#include "lib/16text.h"\r
+#include "lib/modex16.h"\r
+\r
+global_game_variables_t gvar;\r
+\r
+void main(int argc, char near *argv[])\r
+{\r
+ int i, xp;\r
+ int j;\r
+ char l[16];\r
+ char c,ct;\r
+ word s, o, t, w;\r
+ word addr = (word) l;\r
+ //byte *pal, *pal2, fond;\r
+ //bitmap_t fontdata;\r
+ page_t page;\r
+ textInit();\r
+\r
+ //print the addresses of the fonts\r
+ printf("ROM FONT Addresses\n");\r
+ for(i=0; i<4; i++) {\r
+ printf("%d: %x:%x\n", i, romFonts[i].seg, romFonts[i].off);\r
+ }\r
+\r
+// printf("*argv[1]=%d\n", *argv[1]);\r
+\r
+ printf("Font type: ");\r
+ gets(&ct);\r
+\r
+ printf("Character: ");\r
+ gets(&c);\r
+\r
+ if(ct!=1)\r
+ switch(ct)\r
+ {\r
+ case 48:\r
+ printf("type 0\n");\r
+ t=0;\r
+ w=14;\r
+ break;\r
+ case 49:\r
+ printf("type 1\n");\r
+ t=1;\r
+ w=8;\r
+ break;\r
+ case 50:\r
+ printf("type 2\n");\r
+ t=2;\r
+ w=8;\r
+ break;\r
+ case 51:\r
+ printf("type 3\n");\r
+ t=3;\r
+ w=16;\r
+ break;\r
+ default:\r
+ printf("type 3\n");\r
+ t=3;\r
+ w=16;\r
+ break;\r
+ }\r
+ else\r
+ {\r
+ printf("type 3\n");\r
+ t=3;\r
+ w=16;\r
+ }\r
+\r
+\r
+ s=romFonts[t].seg;\r
+ o=romFonts[t].off;\r
+\r
+ //load the letter 'A'\r
+ __asm {\r
+ MOV DI, addr\r
+ MOV SI, o\r
+ MOV ES, s\r
+ SUB AH, AH\r
+ MOV AL, c ; the letter\r
+ MOV CX, w\r
+ MUL CX\r
+ ADD SI, AX ;the address of charcter\r
+ L1: MOV AX, ES:SI\r
+ MOV DS:DI, AX\r
+ INC SI\r
+ INC DI\r
+ DEC CX\r
+ JNZ L1\r
+ }\r
+\r
+ //load our palette\r
+ //modexLoadPalFile("data/default.pal", &pal2);\r
+\r
+ /*fontdata.width=8;\r
+ fontdata.height=w;\r
+ fontdata.palette=pal2;\r
+\r
+ fontdata.data=malloc(256);\r
+\r
+ for(i=0; i<w; i++)\r
+ {\r
+ j=1<<8;\r
+ while(j)\r
+ {\r
+ fond=(byte)l[i] & j ? '1':'0';\r
+ fontdata.data=&(fond);\r
+ printf("%02x ", *(fontdata.data));\r
+ j>>=1;\r
+ }\r
+ printf("\n");\r
+ }\r
+\r
+ printf("\n\nok hit a key~\n");\r
+ while(!getch())\r
+ {\r
+ //DrawPBuf(&page, 0, 0, p, 0);\r
+ }*/\r
+\r
+ // save the palette\r
+ /*pal = modexNewPal();\r
+ modexPalSave(pal);\r
+ modexFadeOff(4, pal);\r
+ modexPalBlack();\r
+*/\r
+ VGAmodeX(1, &gvar);\r
+/* modexPalBlack();*/\r
+\r
+ // set up the page, but with 16 pixels on all borders in offscreen mem\r
+ page=modexDefaultPage();\r
+ //page.width += 32;\r
+ //page.height += 32;\r
+ modexShowPage(&page);\r
+ modexClearRegion(&page, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 1);\r
+ // fade in\r
+ //modexFadeOn(4, pal2);\r
+\r
+ //render the letter in ascii art\r
+ for(i=0; i<w; i++)\r
+ {\r
+ j=1<<8;\r
+ xp=0;\r
+ while(j)\r
+ {\r
+ //printf("j=%d\n", j);\r
+ //printf("%c", l[i] & j ? '*':' ');\r
+ //====printf("%02x ", l[i] & j);\r
+ //printf("l[i]=%d ", l[i]);\r
+ //printf("j=%d ", j);\r
+ //printf("%02x\n", l[i] & j);\r
+ //modexPutPixel(xp, i, l[i] & j ? 15:0);\r
+ //modexpixelwr(xp, i, 0, l[i] & j ? 15:0);\r
+ modexputPixel(&page, xp, i, l[i] & j ? 15:0);\r
+ //modexClearRegion(&page, xp*4, i*4, 4, 4, l[i] & j ? 15:0);\r
+//while(!getch());\r
+ xp++;\r
+ j>>=1;\r
+ }\r
+ //====\r
+ //printf("\n");\r
+ }\r
+ //modexDrawSprite(&page, 0, 0, &fontdata);\r
+ while(!getch())\r
+ {\r
+ //DrawPBuf(&page, 0, 0, p, 0);\r
+ }\r
+\r
+ // fade back to text mode\r
+ /*modexFadeOff(4, pal2);\r
+ modexPalBlack();*/\r
+ VGAmodeX(0, &gvar);\r
+ /*modexPalBlack();\r
+ modexFadeOn(4, pal);*/\r
+ //render the letter in ascii art\r
+ for(i=0; i<w; i++)\r
+ {\r
+ j=1<<8;\r
+ while(j)\r
+ {\r
+ printf("%c", l[i] & j ? '*':' ');\r
+ //====printf("%02x ", l[i] & j);\r
+//while(!getch());\r
+ j>>=1;\r
+ }\r
+ printf("\n");\r
+ }\r
+ printf("\ni=%d\n", i);\r
+ printf("j=%d\n", j);\r
+\r
+}\r