From: sparky4 Date: Mon, 3 Apr 2017 20:19:08 +0000 (-0500) Subject: [16_ca needs huge amounts of work and I should remember what needs to be done soon... X-Git-Url: http://4ch.mooo.com/gitweb/?a=commitdiff_plain;h=424d6f05d9aaa0000302df70be10c2598886a030;p=16.git [16_ca needs huge amounts of work and I should remember what needs to be done soon][OpenVGMFile needs to be ported to 16_snd.c]going to port rest of code to borland c some time so we can use the core components of id engine here [going to add 16_us.c eventually but the debug system and CA_ PM_ and MM_ usage is priority now] added animation delay test back wwww [older zcroll renamed to xcroll][zcroll is now the pre menu game loop system with PROPER data usage with CAMMPM][the graphical version of show memory is added and is still buggy as fuck] --- diff --git a/EXMMTEST.LOG b/EXMMTEST.LOG new file mode 100755 index 00000000..c6688f39 --- /dev/null +++ b/EXMMTEST.LOG @@ -0,0 +1,113 @@ +NOVID +======================================load===================================== +====================================load end=================================== +contents of the buffer +[ + + +] + +yay! +======================================read===================================== +====================================read end=================================== +contents of the buffer +[ +{ "backgroundcolor":"#000000", + "height":30, + "layers":[ + { + "data":[1, 2, 3, 4, 0, 3, 3, 3, 3, 3, 3, 3, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 5, 6, 7, 8, 0, 1, 0, 1, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 5, 6, 7, 8, 9, 10, 11, 12, 4, 1, 0, 1, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 10, 11, 12, 13, 14, 15, 16, 0, 1, 1, 1, 5, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16, 0, 0, 4, 0, 0, 0, 0, 0, 8, 8, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 8, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 39, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 1, 2, 3, 4, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 5, 6, 7, 8, 6, 6, 6, 6, 6, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 9, 10, 11, 12, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3, 6, 6, 6, 6, 6, 6, 6, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 3, 3, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 0, 0, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 3, 3, 3, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 0, 0, 0, 0, 0, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 11, 11, 11, 11, 11, 11, 11, 11, 1, 2, 3, 4, 5, 6, 7, 8, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 0, 0, 0, 0, 0, 0, 0, 0, 11, 5, 6, 7, 8, 9, 10, 11, 12, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 9, 10, 11, 12, 13, 14, 15, 16, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 13, 14, 15, 16], + "height":30, + "name":"bg", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":40, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":30, + "name":"fg", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":40, + "x":0, + "y":0 + }, + { + "data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + "height":30, + "name":"top", + "opacity":1, + "type":"tilelayer", + "visible":true, + "width":40, + "x":0, + "y":0 + }, + { + "height":30, + "name":"ob", + "objects":[ + { + "height":16, + "name":"trunk", + "properties": + { + "walkable":"0" + }, + "type":"nonc", + "visible":true, + "width":32, + "x":128, + "y":32 + }, + { + "height":16, + "name":"stump", + "properties": + { + "walkable":"0" + }, + "type":"nonc", + "visible":true, + "width":16, + "x":144, + "y":128 + }], + "opacity":1, + "type":"objectgroup", + "visible":true, + "width":40, + "x":0, + "y":0 + }], + "orientation":"orthogonal", + "properties": + { + + }, + "tileheight":16, + "tilesets":[ + { + "firstgid":1, + "image":"ed.png", + "imageheight":64, + "imagewidth":64, + "margin":0, + "name":"wwww", + "properties": + { + + }, + "spacing":0, + "tileheight":16, + "tilewidth":16 + }, + { + "firstgid":17, + "image":"forest.gif", + "imageh \ No newline at end of file diff --git a/bcexmm.dsk b/bcexmm.dsk index c37ee82b..6238e6eb 100755 Binary files a/bcexmm.dsk and b/bcexmm.dsk differ diff --git a/bcexmm.exe b/bcexmm.exe index a23eaf70..78240e17 100755 Binary files a/bcexmm.exe and b/bcexmm.exe differ diff --git a/bcexmm.mah b/bcexmm.mah new file mode 100755 index 00000000..c229513e --- /dev/null +++ b/bcexmm.mah @@ -0,0 +1,1040 @@ + + Start Stop Length Name Class + + 00000H 03180H 03181H _TEXT CODE + 03181H 04C28H 01AA8H 16_PM_TEXT CODE + 04C29H 052D9H 006B1H KITTEN_TEXT CODE + 052DAH 056EBH 00412H 16_HC_TEXT CODE + 056ECH 05A25H 0033AH EXMMTEST_TEXT CODE + 05A26H 06394H 0096FH 16_CA_TEXT CODE + 06395H 0686EH 004DAH 16_HEAD_TEXT CODE + 0686FH 0856EH 01D00H 16_MM_TEXT CODE + 0856FH 0971CH 011AEH 16_IN_TEXT CODE + 0971DH 0992DH 00211H 16_DBG_TEXT CODE + 0992EH 09E9CH 0056FH 16_TAIL_TEXT CODE + 09E9DH 0A61AH 0077EH 16_VL_1_TEXT CODE + 0A620H 0A620H 00000H _FARDATA FAR_DATA + 0A620H 0A69FH 00080H 16_IN5_DATA FAR_DATA + 0A6A0H 0A71FH 00080H 16_IN6_DATA FAR_DATA + 0A720H 0A79FH 00080H 16_IN7_DATA FAR_DATA + 0A7A0H 0A7C3H 00024H 16_IN8_DATA FAR_DATA + 0A7D0H 0A7D0H 00000H _FARBSS FAR_BSS + 0A7D0H 0A7D0H 00000H _OVERLAY_ OVRINFO + 0A7D0H 0A7D0H 00000H _1STUB_ STUBSEG + 0A7D0H 0C6DFH 01F10H _DATA DATA + 0C6E0H 0C6E1H 00002H _CVTSEG DATA + 0C6E2H 0C6E7H 00006H _SCNSEG DATA + 0C6E8H 0C6E8H 00000H _CONST CONST + 0C6E8H 0C6FFH 00018H _INIT_ INITDATA + 0C700H 0C700H 00000H _INITEND_ INITDATA + 0C700H 0C700H 00000H _EXIT_ EXITDATA + 0C700H 0C700H 00000H _EXITEND_ EXITDATA + 0C700H 11DEDH 056EEH _BSS BSS + 11DEEH 11DEEH 00000H _BSSEND BSSEND + 11DF0H 11E6FH 00080H _STACK STACK + + +Detailed map of segments + + 0000:0000 0295 C=CODE S=_TEXT G=(none) M=c0.ASM ACBP=28 + 0000:0295 002D C=CODE S=_TEXT G=(none) M=ATEXIT ACBP=28 + 0000:02C2 0000 C=CODE S=_TEXT G=(none) M=CTYPE ACBP=28 + 0000:02C2 003D C=CODE S=_TEXT G=(none) M=DOSFATTR ACBP=28 + 0000:02FF 0093 C=CODE S=_TEXT G=(none) M=EXIT ACBP=28 + 0000:0392 0000 C=CODE S=_TEXT G=(none) M=FILES ACBP=28 + 0000:0392 0000 C=CODE S=_TEXT G=(none) M=FILES2 ACBP=28 + 0000:0392 0000 C=CODE S=_TEXT G=(none) M=FMODE ACBP=28 + 0000:0392 0020 C=CODE S=_TEXT G=(none) M=GETVECT ACBP=28 + 0000:03B2 00AE C=CODE S=_TEXT G=(none) M=H_LDIV ACBP=28 + 0000:0460 0021 C=CODE S=_TEXT G=(none) M=H_LLSH ACBP=28 + 0000:0481 0021 C=CODE S=_TEXT G=(none) M=H_LURSH ACBP=28 + 0000:04A2 0060 C=CODE S=_TEXT G=(none) M=H_PADD ACBP=28 + 0000:0502 0028 C=CODE S=_TEXT G=(none) M=H_PSBP ACBP=28 + 0000:052A 004B C=CODE S=_TEXT G=(none) M=IOERROR ACBP=28 + 0000:0575 0011 C=CODE S=_TEXT G=(none) M=ISATTY ACBP=28 + 0000:0586 00A2 C=CODE S=_TEXT G=(none) M=LONGTOA ACBP=28 + 0000:0628 0029 C=CODE S=_TEXT G=(none) M=LSEEK ACBP=28 + 0000:0651 00B6 C=CODE S=_TEXT G=(none) M=MKNAME ACBP=28 + 0000:0707 0021 C=CODE S=_TEXT G=(none) M=N_PCMP ACBP=28 + 0000:0728 002F C=CODE S=_TEXT G=(none) M=READA ACBP=28 + 0000:0757 00BA C=CODE S=_TEXT G=(none) M=SETUPIO ACBP=28 + 0000:0811 0000 C=CODE S=_TEXT G=(none) M=STKLEN ACBP=28 + 0000:0811 002C C=CODE S=_TEXT G=(none) M=TOLOWER ACBP=28 + 0000:083D 0018 C=CODE S=_TEXT G=(none) M=UNLINK ACBP=28 + 0000:0855 04DB C=CODE S=_TEXT G=(none) M=VPRINTER ACBP=28 + 0000:0D30 009F C=CODE S=_TEXT G=(none) M=VRAM ACBP=28 + 0000:0DCF 0000 C=CODE S=_TEXT G=(none) M=WSCROLL ACBP=28 + 0000:0DCF 0034 C=CODE S=_TEXT G=(none) M=_STPCPY ACBP=28 + 0000:0E03 0029 C=CODE S=_TEXT G=(none) M=CLRSCR ACBP=28 + 0000:0E2C 0006 C=CODE S=_TEXT G=(none) M=CORELEFT ACBP=28 + 0000:0E32 014E C=CODE S=_TEXT G=(none) M=CPRINTF ACBP=28 + 0000:0F80 01A5 C=CODE S=_TEXT G=(none) M=CRTINIT ACBP=28 + 0000:1125 001F C=CODE S=_TEXT G=(none) M=CVTFAK ACBP=28 + 0000:1144 0432 C=CODE S=_TEXT G=(none) M=FARHEAP ACBP=28 + 0000:1576 0140 C=CODE S=_TEXT G=(none) M=FBRK ACBP=28 + 0000:16B6 0050 C=CODE S=_TEXT G=(none) M=FCORELFT ACBP=28 + 0000:1706 005E C=CODE S=_TEXT G=(none) M=GETCH ACBP=28 + 0000:1764 0049 C=CODE S=_TEXT G=(none) M=GOTOXY ACBP=28 + 0000:17AD 00AC C=CODE S=_TEXT G=(none) M=GPTEXT ACBP=28 + 0000:1859 0029 C=CODE S=_TEXT G=(none) M=IOCTL ACBP=28 + 0000:1882 0012 C=CODE S=_TEXT G=(none) M=KBHIT ACBP=28 + 0000:1894 009D C=CODE S=_TEXT G=(none) M=MOVETEXT ACBP=28 + 0000:1931 0017 C=CODE S=_TEXT G=(none) M=PUTCH ACBP=28 + 0000:1948 0004 C=CODE S=_TEXT G=(none) M=REALCVT ACBP=28 + 0000:194C 01C7 C=CODE S=_TEXT G=(none) M=SCREEN ACBP=28 + 0000:1B13 018E C=CODE S=_TEXT G=(none) M=SCROLL ACBP=28 + 0000:1CA1 012B C=CODE S=_TEXT G=(none) M=SETARGV ACBP=28 + 0000:1DCC 001C C=CODE S=_TEXT G=(none) M=SETBLOCK ACBP=28 + 0000:1DE8 0058 C=CODE S=_TEXT G=(none) M=SETENVP ACBP=28 + 0000:1E40 002C C=CODE S=_TEXT G=(none) M=WHEREXY ACBP=28 + 0000:1E6C 001D C=CODE S=_TEXT G=(none) M=CHMODA ACBP=28 + 0000:1E89 0028 C=CODE S=_TEXT G=(none) M=CLOSE ACBP=28 + 0000:1EB1 001E C=CODE S=_TEXT G=(none) M=CLOSEA ACBP=28 + 0000:1ECF 00B8 C=CODE S=_TEXT G=(none) M=FCLOSE ACBP=28 + 0000:1F87 00CD C=CODE S=_TEXT G=(none) M=FFLUSH ACBP=28 + 0000:2054 0041 C=CODE S=_TEXT G=(none) M=FLENGTH ACBP=28 + 0000:2095 0042 C=CODE S=_TEXT G=(none) M=FLUSHALL ACBP=28 + 0000:20D7 020C C=CODE S=_TEXT G=(none) M=FOPEN ACBP=28 + 0000:22E3 001C C=CODE S=_TEXT G=(none) M=FPRINTF ACBP=28 + 0000:22FF 01E2 C=CODE S=_TEXT G=(none) M=FSEEK ACBP=28 + 0000:24E1 0070 C=CODE S=_TEXT G=(none) M=GETENV ACBP=28 + 0000:2551 0070 C=CODE S=_TEXT G=(none) M=LTOA1 ACBP=28 + 0000:25C1 0024 C=CODE S=_TEXT G=(none) M=MEMCPY ACBP=28 + 0000:25E5 0022 C=CODE S=_TEXT G=(none) M=MOVEDATA ACBP=28 + 0000:2607 019C C=CODE S=_TEXT G=(none) M=OPEN ACBP=28 + 0000:27A3 004F C=CODE S=_TEXT G=(none) M=OPENA ACBP=28 + 0000:27F2 001B C=CODE S=_TEXT G=(none) M=PRINTF ACBP=28 + 0000:280D 03C8 C=CODE S=_TEXT G=(none) M=PUTC ACBP=28 + 0000:2BD5 00D1 C=CODE S=_TEXT G=(none) M=READ ACBP=28 + 0000:2CA6 0003 C=CODE S=_TEXT G=(none) M=READU ACBP=28 + 0000:2CA9 011D C=CODE S=_TEXT G=(none) M=SETVBUF ACBP=28 + 0000:2DC6 0083 C=CODE S=_TEXT G=(none) M=SPRINTF ACBP=28 + 0000:2E49 003F C=CODE S=_TEXT G=(none) M=STRCAT ACBP=28 + 0000:2E88 0046 C=CODE S=_TEXT G=(none) M=STRDUP ACBP=28 + 0000:2ECE 001F C=CODE S=_TEXT G=(none) M=STRLEN ACBP=28 + 0000:2EED 0151 C=CODE S=_TEXT G=(none) M=WRITE ACBP=28 + 0000:303E 003C C=CODE S=_TEXT G=(none) M=WRITEA ACBP=28 + 0000:307A 0003 C=CODE S=_TEXT G=(none) M=WRITEU ACBP=28 + 0000:307D 003D C=CODE S=_TEXT G=(none) M=XFCLOSE ACBP=28 + 0000:30BA 0038 C=CODE S=_TEXT G=(none) M=XFFLUSH ACBP=28 + 0000:30F2 0028 C=CODE S=_TEXT G=(none) M=FMEMCMP ACBP=28 + 0000:311A 0024 C=CODE S=_TEXT G=(none) M=FMEMCPY ACBP=28 + 0000:313E 0043 C=CODE S=_TEXT G=(none) M=FMEMSET ACBP=28 + 0318:0001 1AA8 C=CODE S=16_PM_TEXT G=(none) M=SRC\LIB\16_PM.C ACBP=28 + 04C2:0009 06B1 C=CODE S=KITTEN_TEXT G=(none) M=SRC\LIB\NYAN\KITTEN.C ACBP=28 + 052D:000A 0412 C=CODE S=16_HC_TEXT G=(none) M=SRC\LIB\16_HC.C ACBP=28 + 056E:000C 033A C=CODE S=EXMMTEST_TEXT G=(none) M=SRC\EXMMTEST.C ACBP=28 + 05A2:0006 096F C=CODE S=16_CA_TEXT G=(none) M=SRC\LIB\16_CA.C ACBP=28 + 0639:0005 04DA C=CODE S=16_HEAD_TEXT G=(none) M=SRC\LIB\16_HEAD.C ACBP=28 + 0686:000F 1D00 C=CODE S=16_MM_TEXT G=(none) M=SRC\LIB\16_MM.C ACBP=28 + 0856:000F 11AE C=CODE S=16_IN_TEXT G=(none) M=SRC\LIB\16_IN.C ACBP=28 + 0971:000D 0211 C=CODE S=16_DBG_TEXT G=(none) M=SRC\LIB\16_DBG.C ACBP=28 + 0992:000E 056F C=CODE S=16_TAIL_TEXT G=(none) M=SRC\LIB\16_TAIL.C ACBP=28 + 09E9:000D 077E C=CODE S=16_VL_1_TEXT G=(none) M=SRC\LIB\16_VL_1.C ACBP=28 + 0A62:0000 0000 C=FAR_DATA S=_FARDATA G=(none) M=c0.ASM ACBP=68 + 0A62:0000 0080 C=FAR_DATA S=16_IN5_DATA G=(none) M=SRC\LIB\16_IN.C ACBP=68 + 0A6A:0000 0080 C=FAR_DATA S=16_IN6_DATA G=(none) M=SRC\LIB\16_IN.C ACBP=68 + 0A72:0000 0080 C=FAR_DATA S=16_IN7_DATA G=(none) M=SRC\LIB\16_IN.C ACBP=68 + 0A7A:0000 0024 C=FAR_DATA S=16_IN8_DATA G=(none) M=SRC\LIB\16_IN.C ACBP=68 + 0A7D:0000 0000 C=FAR_BSS S=_FARBSS G=(none) M=c0.ASM ACBP=68 + 0A7D:0000 0000 C=OVRINFO S=_OVERLAY_ G=(none) M=c0.ASM ACBP=68 + 0A7D:0000 0000 C=STUBSEG S=_1STUB_ G=(none) M=c0.ASM ACBP=68 + 0A7D:0000 0093 C=DATA S=_DATA G=DGROUP M=c0.ASM ACBP=68 + 0A7D:0094 054F C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_PM.C ACBP=48 + 0A7D:05E4 0045 C=DATA S=_DATA G=DGROUP M=SRC\LIB\NYAN\KITTEN.C ACBP=48 + 0A7D:062A 0016 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_HC.C ACBP=48 + 0A7D:0640 02BD C=DATA S=_DATA G=DGROUP M=SRC\EXMMTEST.C ACBP=48 + 0A7D:08FE 0117 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_CA.C ACBP=48 + 0A7D:0A16 0011 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_HEAD.C ACBP=48 + 0A7D:0A28 0A64 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_MM.C ACBP=48 + 0A7D:148C 04A7 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_IN.C ACBP=48 + 0A7D:1934 0066 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_DBG.C ACBP=48 + 0A7D:199A 0155 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_TAIL.C ACBP=48 + 0A7D:1AF0 0018 C=DATA S=_DATA G=DGROUP M=SRC\LIB\16_VL_1.C ACBP=48 + 0A7D:1B08 0002 C=DATA S=_DATA G=DGROUP M=ATEXIT ACBP=48 + 0A7D:1B0A 0101 C=DATA S=_DATA G=DGROUP M=CTYPE ACBP=48 + 0A7D:1C0C 0000 C=DATA S=_DATA G=DGROUP M=DOSFATTR ACBP=48 + 0A7D:1C0C 000C C=DATA S=_DATA G=DGROUP M=EXIT ACBP=48 + 0A7D:1C18 0190 C=DATA S=_DATA G=DGROUP M=FILES ACBP=48 + 0A7D:1DA8 002A C=DATA S=_DATA G=DGROUP M=FILES2 ACBP=48 + 0A7D:1DD2 0004 C=DATA S=_DATA G=DGROUP M=FMODE ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=GETVECT ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=H_LDIV ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=H_LLSH ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=H_LURSH ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=H_PADD ACBP=48 + 0A7D:1DD6 0000 C=DATA S=_DATA G=DGROUP M=H_PSBP ACBP=48 + 0A7D:1DD6 005B C=DATA S=_DATA G=DGROUP M=IOERROR ACBP=48 + 0A7D:1E32 0000 C=DATA S=_DATA G=DGROUP M=ISATTY ACBP=48 + 0A7D:1E32 0000 C=DATA S=_DATA G=DGROUP M=LONGTOA ACBP=48 + 0A7D:1E32 0000 C=DATA S=_DATA G=DGROUP M=LSEEK ACBP=48 + 0A7D:1E32 0009 C=DATA S=_DATA G=DGROUP M=MKNAME ACBP=48 + 0A7D:1E3C 0000 C=DATA S=_DATA G=DGROUP M=N_PCMP ACBP=48 + 0A7D:1E3C 0000 C=DATA S=_DATA G=DGROUP M=READA ACBP=48 + 0A7D:1E3C 0000 C=DATA S=_DATA G=DGROUP M=SETUPIO ACBP=48 + 0A7D:1E3C 0002 C=DATA S=_DATA G=DGROUP M=STKLEN ACBP=48 + 0A7D:1E3E 0000 C=DATA S=_DATA G=DGROUP M=TOLOWER ACBP=48 + 0A7D:1E3E 0000 C=DATA S=_DATA G=DGROUP M=UNLINK ACBP=48 + 0A7D:1E3E 0067 C=DATA S=_DATA G=DGROUP M=VPRINTER ACBP=48 + 0A7D:1EA6 0000 C=DATA S=_DATA G=DGROUP M=VRAM ACBP=48 + 0A7D:1EA6 0002 C=DATA S=_DATA G=DGROUP M=WSCROLL ACBP=48 + 0A7D:1EA8 0000 C=DATA S=_DATA G=DGROUP M=_STPCPY ACBP=48 + 0A7D:1EA8 0000 C=DATA S=_DATA G=DGROUP M=CLRSCR ACBP=48 + 0A7D:1EA8 0000 C=DATA S=_DATA G=DGROUP M=CORELEFT ACBP=48 + 0A7D:1EA8 0000 C=DATA S=_DATA G=DGROUP M=CPRINTF ACBP=48 + 0A7D:1EA8 0018 C=DATA S=_DATA G=DGROUP M=CRTINIT ACBP=48 + 0A7D:1EC0 0031 C=DATA S=_DATA G=DGROUP M=CVTFAK ACBP=48 + 0A7D:1EF2 0000 C=DATA S=_DATA G=DGROUP M=FARHEAP ACBP=48 + 0A7D:1EF2 0002 C=DATA S=_DATA G=DGROUP M=FBRK ACBP=48 + 0A7D:1EF4 0000 C=DATA S=_DATA G=DGROUP M=FCORELFT ACBP=48 + 0A7D:1EF4 0000 C=DATA S=_DATA G=DGROUP M=GETCH ACBP=48 + 0A7D:1EF4 0000 C=DATA S=_DATA G=DGROUP M=GOTOXY ACBP=48 + 0A7D:1EF4 0000 C=DATA S=_DATA G=DGROUP M=GPTEXT ACBP=48 + 0A7D:1EF4 0000 C=DATA S=_DATA G=DGROUP M=IOCTL ACBP=48 + 0A7D:1EF4 0002 C=DATA S=_DATA G=DGROUP M=KBHIT ACBP=48 + 0A7D:1EF6 0000 C=DATA S=_DATA G=DGROUP M=MOVETEXT ACBP=48 + 0A7D:1EF6 0000 C=DATA S=_DATA G=DGROUP M=PUTCH ACBP=48 + 0A7D:1EF6 0000 C=DATA S=_DATA G=DGROUP M=REALCVT ACBP=48 + 0A7D:1EF6 0000 C=DATA S=_DATA G=DGROUP M=SCREEN ACBP=48 + 0A7D:1EF6 0000 C=DATA S=_DATA G=DGROUP M=SCROLL ACBP=48 + 0A7D:1EF6 0010 C=DATA S=_DATA G=DGROUP M=SETARGV ACBP=48 + 0A7D:1F06 0000 C=DATA S=_DATA G=DGROUP M=SETBLOCK ACBP=48 + 0A7D:1F06 0004 C=DATA S=_DATA G=DGROUP M=SETENVP ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=WHEREXY ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=CHMODA ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=CLOSE ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=CLOSEA ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FCLOSE ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FFLUSH ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FLENGTH ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FLUSHALL ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FOPEN ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FPRINTF ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=FSEEK ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=GETENV ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=LTOA1 ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=MEMCPY ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=MOVEDATA ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=OPEN ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=OPENA ACBP=48 + 0A7D:1F0A 0000 C=DATA S=_DATA G=DGROUP M=PRINTF ACBP=48 + 0A7D:1F0A 0001 C=DATA S=_DATA G=DGROUP M=PUTC ACBP=48 + 0A7D:1F0C 0000 C=DATA S=_DATA G=DGROUP M=READ ACBP=48 + 0A7D:1F0C 0000 C=DATA S=_DATA G=DGROUP M=READU ACBP=48 + 0A7D:1F0C 0004 C=DATA S=_DATA G=DGROUP M=SETVBUF ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=SPRINTF ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=STRCAT ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=STRDUP ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=STRLEN ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=WRITE ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=WRITEA ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=WRITEU ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=XFCLOSE ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=XFFLUSH ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=FMEMCMP ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=FMEMCPY ACBP=48 + 0A7D:1F10 0000 C=DATA S=_DATA G=DGROUP M=FMEMSET ACBP=48 + 0A7D:1F10 0000 C=DATA S=_CVTSEG G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F10 0002 C=DATA S=_CVTSEG G=DGROUP M=CVTFAK ACBP=48 + 0A7D:1F12 0000 C=DATA S=_CVTSEG G=DGROUP M=REALCVT ACBP=48 + 0A7D:1F12 0000 C=DATA S=_SCNSEG G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F12 0006 C=DATA S=_SCNSEG G=DGROUP M=CVTFAK ACBP=48 + 0A7D:1F18 0000 C=CONST S=_CONST G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F18 0000 C=INITDATA S=_INIT_ G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F18 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETUPIO ACBP=48 + 0A7D:1F1E 0006 C=INITDATA S=_INIT_ G=DGROUP M=CRTINIT ACBP=48 + 0A7D:1F24 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETARGV ACBP=48 + 0A7D:1F2A 0006 C=INITDATA S=_INIT_ G=DGROUP M=SETENVP ACBP=48 + 0A7D:1F30 0000 C=INITDATA S=_INITEND_ G=DGROUP M=c0.ASM ACBP=28 + 0A7D:1F30 0000 C=EXITDATA S=_EXIT_ G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F30 0000 C=EXITDATA S=_EXITEND_ G=DGROUP M=c0.ASM ACBP=28 + 0A7D:1F30 0000 C=BSS S=_BSS G=DGROUP M=c0.ASM ACBP=48 + 0A7D:1F30 0016 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_PM.C ACBP=48 + 0A7D:1F46 0004 C=BSS S=_BSS G=DGROUP M=SRC\LIB\NYAN\KITTEN.C ACBP=48 + 0A7D:1F4A 0000 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_HC.C ACBP=48 + 0A7D:1F4A 50D5 C=BSS S=_BSS G=DGROUP M=SRC\EXMMTEST.C ACBP=48 + 0A7D:7020 000C C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_CA.C ACBP=48 + 0A7D:702C 0000 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_HEAD.C ACBP=48 + 0A7D:702C 000C C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_MM.C ACBP=48 + 0A7D:7038 0124 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_IN.C ACBP=48 + 0A7D:715C 000E C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_DBG.C ACBP=48 + 0A7D:716A 0423 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_TAIL.C ACBP=48 + 0A7D:758E 0000 C=BSS S=_BSS G=DGROUP M=SRC\LIB\16_VL_1.C ACBP=48 + 0A7D:758E 0080 C=BSS S=_BSS G=DGROUP M=ATEXIT ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=DOSFATTR ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=GETVECT ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=IOERROR ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=ISATTY ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=LONGTOA ACBP=48 + 0A7D:760E 0000 C=BSS S=_BSS G=DGROUP M=LSEEK ACBP=48 + 0A7D:760E 000D C=BSS S=_BSS G=DGROUP M=MKNAME ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=READA ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=SETUPIO ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=UNLINK ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=VPRINTER ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=VRAM ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=CORELEFT ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=CRTINIT ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=GETCH ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=IOCTL ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=KBHIT ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=SETBLOCK ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=CHMODA ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=CLOSEA ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=FLENGTH ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=GETENV ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=MEMCPY ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=MOVEDATA ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=OPEN ACBP=48 + 0A7D:761C 0000 C=BSS S=_BSS G=DGROUP M=OPENA ACBP=48 + 0A7D:761C 0001 C=BSS S=_BSS G=DGROUP M=PUTC ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=READ ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=STRCAT ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=STRLEN ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=WRITEA ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=FMEMCMP ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=FMEMCPY ACBP=48 + 0A7D:761E 0000 C=BSS S=_BSS G=DGROUP M=FMEMSET ACBP=48 + 0A7D:761E 0000 C=BSSEND S=_BSSEND G=DGROUP M=c0.ASM ACBP=28 + 11DF:0000 0080 C=STACK S=_STACK G=(none) M=c0.ASM ACBP=74 + + Address Publics by Name + + 0A7D:0000 idle DATASEG@ + 0000:0291 idle DGROUP@ + 0000:03B5 F_LDIV@ + 0000:03C4 idle F_LMOD@ + 0000:03BC idle F_LUDIV@ + 0000:03CC idle F_LUMOD@ + 0000:0463 F_LXLSH@ + 0000:0484 F_LXURSH@ + 0000:04A5 idle F_PADD@ + 0000:0505 idle F_PSBP@ + 0000:04D4 idle F_PSUB@ + 04C2:0009 idle KITTENGETS + 0000:03B5 idle LDIV@ + 0000:03C4 idle LMOD@ + 0000:03BC idle LUDIV@ + 0000:03CC idle LUMOD@ + 0000:0463 idle LXLSH@ + 0000:0484 idle LXURSH@ + 0000:03B2 idle N_LDIV@ + 0000:03C1 idle N_LMOD@ + 0000:03B9 idle N_LUDIV@ + 0000:03C9 idle N_LUMOD@ + 0000:0460 N_LXLSH@ + 0000:0481 idle N_LXURSH@ + 0000:04A2 N_PADD@ + 0000:0707 N_PCMP@ + 0000:0502 N_PSBP@ + 0000:04D1 idle N_PSUB@ + 0000:04A5 idle PADD@ + 0000:0505 idle PSBP@ + 0000:04D4 idle PSUB@ + 0000:027A _abort + 0A7D:7030 idle _aftersort + 0000:0295 idle _atexit + 0A7D:7034 idle _beforesort + 0992:0500 idle _booleantest + 0992:042D idle _boolean_to_binary + 0A7D:703C idle _btnstate + 05A2:042D idle _CAL_CarmackExpand + 05A2:032D idle _CAL_HuffExpand + 05A2:02BC idle _CAL_OptimizeNodes + 05A2:0722 idle _CAL_SetupMapFile + 04C2:0286 idle _catread + 05A2:0857 idle _CA_ClearAllMarks + 05A2:0822 idle _CA_ClearMarks + 05A2:0031 _CA_CloseDebug + 05A2:07F5 idle _CA_DownLevel + 05A2:0046 _CA_FarRead + 05A2:00C0 idle _CA_FarWrite + 05A2:0225 _CA_LoadFile + 05A2:0006 _CA_OpenDebug + 05A2:013A _CA_ReadFile + 05A2:057D idle _CA_RLEWCompress + 05A2:066F idle _CA_RLEWexpand + 05A2:08DB idle _CA_SetAllPurge + 05A2:0884 idle _CA_SetGrPurge + 05A2:07A6 _CA_Shutdown + 05A2:075A _CA_Startup + 05A2:07CB idle _CA_UpLevel + 05A2:01B7 idle _CA_WriteFile + 0992:025B idle _ClearMemory + 0000:1E89 _close + 0000:0E03 _clrscr + 0000:0E2C _coreleft + 0000:0F64 idle _cprintf + 0A7D:193C idle _dbg_delayanimation + 0A7D:7166 idle _dbg_mapdata + 0A7D:193A idle _dbg_maptext + 0A7D:1938 _dbg_nointest + 0A7D:1936 _dbg_testcontrolnoisy + 0A7D:1934 _dbg_testkeyin + 04C2:0597 idle _db_fetch + 04C2:05FF idle _db_insert + 0992:00BC _DebugMemory_ + 0639:0499 _dirchar + 0A7D:1EB7 _directvideo + 0A7D:7028 idle _drawcachebox + 0A7D:1F06 _environ + 0A7D:007F _errno + 0000:0357 _exit + 0000:16B6 _farcoreleft + 0000:1284 _farfree + 0000:1398 _farmalloc + 0000:14FC idle _farrealloc + 0000:1ECF _fclose + 0000:1F87 _fflush + 0000:2054 _filelength + 0639:0005 idle _filesize + 0A7D:7020 idle _finishcachebox + 0000:2095 _flushall + 0000:22AE _fopen + 0000:22E3 _fprintf + 0000:2829 idle _fputc + 0000:29BE idle _fputchar + 0000:1284 _free + 0000:2381 _fseek + 0000:2401 _ftell + 0000:1706 _getch + 0000:1722 idle _getche + 0000:24E1 _getenv + 0000:17AD _gettext + 0000:0392 _getvect + 04C2:0540 idle _get_line + 0A7D:738D idle _global_temp_status_text + 0A7D:718D idle _global_temp_status_text2 + 0000:1764 _gotoxy + 052D:0407 idle _HC_CloseDebug + 052D:01B5 idle _HC_coreleft + 052D:000A _HC_farcoreleft + 052D:030A idle _HC_farcoreleft_ + 052D:0245 idle _HC_LargestFarFreeBlock + 052D:00F9 idle _HC_LargestFreeBlock + 052D:03DC idle _HC_OpenDebug + 0856:0268 idle _INL_GetJoyDelta + 0856:000F idle _INL_KeyService + 0856:0182 idle _INL_Mouse + 0856:0FD7 _IN_Ack + 0856:0F51 idle _IN_CheckAck + 0856:1122 _IN_ClearKey + 0856:08D2 idle _IN_ClearKeysDown + 0856:07D3 idle _IN_Default + 0856:1199 idle _IN_GetCurCode + 0856:01CB idle _IN_GetJoyAbs + 0856:042A idle _IN_GetJoyButtonsDB + 0856:1195 idle _IN_GetLastScan + 0856:0E53 idle _IN_GetScanName + 0856:0FFA idle _IN_IsUserInput + 0856:10D3 idle _IN_JoyButtons + 0856:119D idle _IN_KbdLED + 0856:10F0 idle _IN_KeyDown + 0856:10AA idle _IN_MouseButtons + 0856:1144 idle _IN_qb + 0856:09F2 idle _IN_ReadControl + 0856:0922 idle _IN_ReadCursor + 0856:0E44 idle _IN_SetControlType + 0856:08C0 idle _IN_SetKeyHook + 0856:05BC idle _IN_SetupJoy + 0856:087B _IN_Shutdown + 0856:0EE8 idle _IN_StartAck + 0856:06EE _IN_Startup + 0856:1061 idle _IN_UserInput + 0856:0ECB idle _IN_WaitForASCII + 0856:0EAD idle _IN_WaitForKey + 0000:1859 _ioctl + 0000:0575 _isatty + 0000:2551 idle _itoa + 0000:1882 _kbhit + 04C2:033E idle _kittenclose + 04C2:005C idle _kittenopen + 0000:0628 _lseek + 0000:2599 idle _ltoa + 056E:002E _main + 0000:138E _malloc + 0000:25C1 _memcpy + 0686:000F _MML_CheckForEMS + 0686:00B5 _MML_CheckForXMS + 0686:035F idle _MML_ClearBlock + 0686:00E1 idle _MML_UseSpace + 0686:1CDC _MM_BombOnError + 0686:143C _MM_DumpData + 0686:18AF _MM_EMSerr + 0686:09C9 _MM_FreePtr + 0686:06AA _MM_GetPtr + 0686:16BB _MM_Report_ + 0686:0B81 _MM_SetLock + 0686:0ACC _MM_SetPurge + 0686:0DE3 _MM_ShowMemory + 0686:1294 idle _MM_ShowMemoryVidVer + 0686:0670 _MM_Shutdown + 0686:0C3B _MM_SortMem + 0686:03D4 _MM_Startup + 0686:1623 _MM_TotalFree + 0686:15A9 _MM_UnusedMemory + 0992:0568 _modexPalOverscan + 0000:25E5 _movedata + 0000:1894 _movetext + 04C2:0345 idle _mystrtoul + 0992:0498 idle _nibbletest + 0992:03C2 idle _nibble_to_binary + 0000:2634 _open + 0318:0AF8 idle _PML_ClosePageFile + 0318:1054 idle _PML_GetAPageBuffer + 0318:0B53 idle _PML_GetEMSAddress + 0318:11D0 idle _PML_GetPageFromXMS + 0318:0D03 idle _PML_GiveLRUPage + 0318:0DBF idle _PML_GiveLRUXMSPage + 0318:127E idle _PML_LoadPage + 0318:0001 idle _PML_MapEMS + 0318:085B idle _PML_OpenPageFile + 0318:0E51 idle _PML_PutPageInXMS + 0318:07B1 idle _PML_ReadFromFile + 0318:0201 idle _PML_ShutdownEMS + 0318:0768 idle _PML_ShutdownMainMem + 0318:0465 idle _PML_ShutdownXMS + 0318:0096 idle _PML_StartupEMS + 0318:068D idle _PML_StartupMainMem + 0318:0289 idle _PML_StartupXMS + 0318:0F43 idle _PML_TransferPageSpace + 0318:0394 idle _PML_XMSCopy + 0318:051E _PM_CheckMainMem + 0318:12E3 _PM_GetPage + 0318:0C95 _PM_GetPageAddress + 0318:17B4 idle _PM_NextFrame + 0318:1461 idle _PM_Preload + 0318:18B4 idle _PM_Reset + 0318:04B6 _PM_SetMainMemPurge + 0318:1425 idle _PM_SetPageLock + 0318:1A60 _PM_Shutdown + 0318:194E _PM_Startup + 0000:27F2 _printf + 0639:022B idle _printmeminfoline + 04C2:03E1 idle _processEscChars + 0000:1931 _putch + 0000:1803 _puttext + 0992:0280 _Quit + 0000:2CA6 _read + 0000:14F5 idle _realloc + 0639:006C idle _remove_ext + 0639:01D4 idle _rotateL + 0639:017D idle _rotateR + 0000:1DCC _setblock + 0000:2CA9 _setvbuf + 0000:03A1 _setvect + 0971:000D idle _ShapeTest_ + 0992:0080 idle _Shutdown16 + 0000:2E06 _sprintf + 0992:000E idle _Startup16 + 0000:2E49 _strcat + 0000:2E88 _strdup + 0000:2ECE _strlen + 0992:00AF idle _TL_VidInit + 0000:0811 _tolower + 0000:257C _ultoa + 0000:1746 idle _ungetch + 0000:083D _unlink + 0A7D:7024 idle _updatecachebox + 0639:03C6 _US_CheckParm + 09E9:075C idle _VGAMAPMASK + 056E:000C idle _VGAmodeX + 09E9:077D idle _VGAREADMAP + 09E9:076A idle _VGAWRITEMODE + 09E9:0601 idle _VL_Bar + 09E9:025E _VL_FadeIn + 09E9:00F0 idle _VL_FadeOut + 09E9:000D idle _VL_FillPalette + 09E9:0056 idle _VL_GetColor + 09E9:00C4 idle _VL_GetPalette + 09E9:046E _VL_Hlin + 09E9:0407 _VL_Plot + 09E9:003B idle _VL_SetColor + 09E9:0080 idle _VL_SetPalette + 09E9:0378 idle _VL_TestPaletteSet + 09E9:057D idle _VL_Vlin + 09E9:0744 idle _VL_WaitVBL + 0000:2E28 idle _vsprintf + 0000:1E4A idle _wherex + 0000:1E59 idle _wherey + 0992:0357 idle _word_to_binary + 0000:307A _write + 0A7D:702C idle _XMSaddr + 0A7D:1F42 _XMSDriver + 0A7D:1F40 _XMSVer + 0686:1CEC idle _xms_call + 0000:1000 idle __AHINCR + 0000:000C idle __AHSHIFT + 0A7D:1EF6 __argc + 0A7D:1EF8 __argv + 0A7D:1B08 __atexitcnt + 0A7D:758E __atexittbl + 0000:15EC __brk + 0A7D:008B __brklvl + 0A7D:006B __C0argc + 0A7D:006D __C0argv + 0000:1046 idle __c0crtinit + 0A7D:0071 __C0environ + 0A7D:1EF5 __cChar + 0000:0378 idle __cexit + 0A7D:1EF4 __cFlag + 0000:016A __checknull + 0000:1E6C __chmod + 0000:0157 __cleanup + 0000:1EB1 __close + 0000:0E32 __CPUTN + 0000:1063 idle __crtinit + 0A7D:1B0A __ctype + 0000:0000 Abs __cvtfak + 0000:0386 idle __c_exit + 0A7D:1DD6 __doserrno + 0000:0563 __DOSERROR + 0A7D:1DD8 idle __dosErrorToSV + 0000:02C2 __dos_getfileattr + 0000:02E2 idle __dos_setfileattr + 0A7D:0075 __envLng + 0A7D:0077 __envseg + 0A7D:0079 __envSize + 0000:0366 __exit + 0A7D:1C0C __exitbuf + 0A7D:1C10 __exitfopen + 0A7D:1C14 idle __exitopen + 0000:30F2 __fmemcmp + 0000:311A __fmemcpy + 0000:3162 __fmemset + 0A7D:1DD2 __fmode + 0000:280D idle __fputc + 0000:29D2 __FPUTN + 0000:313E idle __fsetmem + 0000:2264 idle __GETFP + 0A7D:0087 __heapbase + 0A7D:008F __heaptop + 0A7D:005B idle __Int0Vector + 0A7D:005F idle __Int4Vector + 0A7D:0063 idle __Int5Vector + 0A7D:0067 idle __Int6Vector + 0000:052A __IOERROR + 0A7D:05E4 idle __kitten_catalog + 0000:0586 __LONGTOA + 0000:0651 __MKNAME + 0000:0293 idle __MMODEL + 0A7D:1DA8 __nfile + 0000:171F idle __Ngetche + 0A7D:1DD4 __notUmask + 0000:1743 idle __Nungetch + 0000:27A3 __open + 0A7D:1DAA __openfd + 0000:2193 idle __OPENFP + 0A7D:007D __osmajor + 0A7D:007E idle __osminor + 0A7D:007D idle __osversion + 0A7D:007B __psp + 0000:0728 __read + 0000:1948 __REALCVT + 0A7D:1F10 __RealCvtVector + 0000:01C0 __restorezero + 0000:162B __sbrk + 0A7D:1F12 idle __ScanTodVector + 0000:1A82 __SCREENIO + 0000:1B35 __SCROLL + 0000:0000 Abs __setargv__ + 0000:0000 idle __setenvp__ + 0000:0757 __setupio + 0A7D:0081 idle __StartTime + 0A7D:1E3C __stklen + 0000:0DCF __stpcpy + 0A7D:1C18 __streams + 0000:016B __terminate + 0000:06AE idle __TMPNAM + 0000:0000 idle __turboCrt + 0000:0608 __UTOA + 0000:1ABE __VALIDATEXY + 0A7D:007D idle __version + 0A7D:1EA8 __video + 0000:0FBB __VideoInt + 0000:086D __VPRINTER + 0000:0D30 __VPTR + 0000:0D55 __VRAM + 0000:1E40 __wherexy + 0000:303E __write + 0A7D:1EA6 __wscroll + 0000:307D __xfclose + 0000:30BA __xfflush + 0A7D:0085 idle ___brklvl + 0000:1144 idle ___first + 0000:1146 idle ___last + 0000:2BD5 ___read + 0000:1148 idle ___rover + 0000:2EED ___write + + Address Publics by Value + + 0000:0000 Abs __setargv__ + 0000:0000 idle __turboCrt + 0000:0000 Abs __cvtfak + 0000:0000 idle __setenvp__ + 0000:000C idle __AHSHIFT + 0000:0157 __cleanup + 0000:016A __checknull + 0000:016B __terminate + 0000:01C0 __restorezero + 0000:027A _abort + 0000:0291 idle DGROUP@ + 0000:0293 idle __MMODEL + 0000:0295 idle _atexit + 0000:02C2 __dos_getfileattr + 0000:02E2 idle __dos_setfileattr + 0000:0357 _exit + 0000:0366 __exit + 0000:0378 idle __cexit + 0000:0386 idle __c_exit + 0000:0392 _getvect + 0000:03A1 _setvect + 0000:03B2 idle N_LDIV@ + 0000:03B5 F_LDIV@ + 0000:03B5 idle LDIV@ + 0000:03B9 idle N_LUDIV@ + 0000:03BC idle F_LUDIV@ + 0000:03BC idle LUDIV@ + 0000:03C1 idle N_LMOD@ + 0000:03C4 idle F_LMOD@ + 0000:03C4 idle LMOD@ + 0000:03C9 idle N_LUMOD@ + 0000:03CC idle LUMOD@ + 0000:03CC idle F_LUMOD@ + 0000:0460 N_LXLSH@ + 0000:0463 F_LXLSH@ + 0000:0463 idle LXLSH@ + 0000:0481 idle N_LXURSH@ + 0000:0484 F_LXURSH@ + 0000:0484 idle LXURSH@ + 0000:04A2 N_PADD@ + 0000:04A5 idle F_PADD@ + 0000:04A5 idle PADD@ + 0000:04D1 idle N_PSUB@ + 0000:04D4 idle F_PSUB@ + 0000:04D4 idle PSUB@ + 0000:0502 N_PSBP@ + 0000:0505 idle PSBP@ + 0000:0505 idle F_PSBP@ + 0000:052A __IOERROR + 0000:0563 __DOSERROR + 0000:0575 _isatty + 0000:0586 __LONGTOA + 0000:0608 __UTOA + 0000:0628 _lseek + 0000:0651 __MKNAME + 0000:06AE idle __TMPNAM + 0000:0707 N_PCMP@ + 0000:0728 __read + 0000:0757 __setupio + 0000:0811 _tolower + 0000:083D _unlink + 0000:086D __VPRINTER + 0000:0D30 __VPTR + 0000:0D55 __VRAM + 0000:0DCF __stpcpy + 0000:0E03 _clrscr + 0000:0E2C _coreleft + 0000:0E32 __CPUTN + 0000:0F64 idle _cprintf + 0000:0FBB __VideoInt + 0000:1000 idle __AHINCR + 0000:1046 idle __c0crtinit + 0000:1063 idle __crtinit + 0000:1144 idle ___first + 0000:1146 idle ___last + 0000:1148 idle ___rover + 0000:1284 _free + 0000:1284 _farfree + 0000:138E _malloc + 0000:1398 _farmalloc + 0000:14F5 idle _realloc + 0000:14FC idle _farrealloc + 0000:15EC __brk + 0000:162B __sbrk + 0000:16B6 _farcoreleft + 0000:1706 _getch + 0000:171F idle __Ngetche + 0000:1722 idle _getche + 0000:1743 idle __Nungetch + 0000:1746 idle _ungetch + 0000:1764 _gotoxy + 0000:17AD _gettext + 0000:1803 _puttext + 0000:1859 _ioctl + 0000:1882 _kbhit + 0000:1894 _movetext + 0000:1931 _putch + 0000:1948 __REALCVT + 0000:1A82 __SCREENIO + 0000:1ABE __VALIDATEXY + 0000:1B35 __SCROLL + 0000:1DCC _setblock + 0000:1E40 __wherexy + 0000:1E4A idle _wherex + 0000:1E59 idle _wherey + 0000:1E6C __chmod + 0000:1E89 _close + 0000:1EB1 __close + 0000:1ECF _fclose + 0000:1F87 _fflush + 0000:2054 _filelength + 0000:2095 _flushall + 0000:2193 idle __OPENFP + 0000:2264 idle __GETFP + 0000:22AE _fopen + 0000:22E3 _fprintf + 0000:2381 _fseek + 0000:2401 _ftell + 0000:24E1 _getenv + 0000:2551 idle _itoa + 0000:257C _ultoa + 0000:2599 idle _ltoa + 0000:25C1 _memcpy + 0000:25E5 _movedata + 0000:2634 _open + 0000:27A3 __open + 0000:27F2 _printf + 0000:280D idle __fputc + 0000:2829 idle _fputc + 0000:29BE idle _fputchar + 0000:29D2 __FPUTN + 0000:2BD5 ___read + 0000:2CA6 _read + 0000:2CA9 _setvbuf + 0000:2E06 _sprintf + 0000:2E28 idle _vsprintf + 0000:2E49 _strcat + 0000:2E88 _strdup + 0000:2ECE _strlen + 0000:2EED ___write + 0000:303E __write + 0000:307A _write + 0000:307D __xfclose + 0000:30BA __xfflush + 0000:30F2 __fmemcmp + 0000:311A __fmemcpy + 0000:313E idle __fsetmem + 0000:3162 __fmemset + 0318:0001 idle _PML_MapEMS + 0318:0096 idle _PML_StartupEMS + 0318:0201 idle _PML_ShutdownEMS + 0318:0289 idle _PML_StartupXMS + 0318:0394 idle _PML_XMSCopy + 0318:0465 idle _PML_ShutdownXMS + 0318:04B6 _PM_SetMainMemPurge + 0318:051E _PM_CheckMainMem + 0318:068D idle _PML_StartupMainMem + 0318:0768 idle _PML_ShutdownMainMem + 0318:07B1 idle _PML_ReadFromFile + 0318:085B idle _PML_OpenPageFile + 0318:0AF8 idle _PML_ClosePageFile + 0318:0B53 idle _PML_GetEMSAddress + 0318:0C95 _PM_GetPageAddress + 0318:0D03 idle _PML_GiveLRUPage + 0318:0DBF idle _PML_GiveLRUXMSPage + 0318:0E51 idle _PML_PutPageInXMS + 0318:0F43 idle _PML_TransferPageSpace + 0318:1054 idle _PML_GetAPageBuffer + 0318:11D0 idle _PML_GetPageFromXMS + 0318:127E idle _PML_LoadPage + 0318:12E3 _PM_GetPage + 0318:1425 idle _PM_SetPageLock + 0318:1461 idle _PM_Preload + 0318:17B4 idle _PM_NextFrame + 0318:18B4 idle _PM_Reset + 0318:194E _PM_Startup + 0318:1A60 _PM_Shutdown + 04C2:0009 idle KITTENGETS + 04C2:005C idle _kittenopen + 04C2:0286 idle _catread + 04C2:033E idle _kittenclose + 04C2:0345 idle _mystrtoul + 04C2:03E1 idle _processEscChars + 04C2:0540 idle _get_line + 04C2:0597 idle _db_fetch + 04C2:05FF idle _db_insert + 052D:000A _HC_farcoreleft + 052D:00F9 idle _HC_LargestFreeBlock + 052D:01B5 idle _HC_coreleft + 052D:0245 idle _HC_LargestFarFreeBlock + 052D:030A idle _HC_farcoreleft_ + 052D:03DC idle _HC_OpenDebug + 052D:0407 idle _HC_CloseDebug + 056E:000C idle _VGAmodeX + 056E:002E _main + 05A2:0006 _CA_OpenDebug + 05A2:0031 _CA_CloseDebug + 05A2:0046 _CA_FarRead + 05A2:00C0 idle _CA_FarWrite + 05A2:013A _CA_ReadFile + 05A2:01B7 idle _CA_WriteFile + 05A2:0225 _CA_LoadFile + 05A2:02BC idle _CAL_OptimizeNodes + 05A2:032D idle _CAL_HuffExpand + 05A2:042D idle _CAL_CarmackExpand + 05A2:057D idle _CA_RLEWCompress + 05A2:066F idle _CA_RLEWexpand + 05A2:0722 idle _CAL_SetupMapFile + 05A2:075A _CA_Startup + 05A2:07A6 _CA_Shutdown + 05A2:07CB idle _CA_UpLevel + 05A2:07F5 idle _CA_DownLevel + 05A2:0822 idle _CA_ClearMarks + 05A2:0857 idle _CA_ClearAllMarks + 05A2:0884 idle _CA_SetGrPurge + 05A2:08DB idle _CA_SetAllPurge + 0639:0005 idle _filesize + 0639:006C idle _remove_ext + 0639:017D idle _rotateR + 0639:01D4 idle _rotateL + 0639:022B idle _printmeminfoline + 0639:03C6 _US_CheckParm + 0639:0499 _dirchar + 0686:000F _MML_CheckForEMS + 0686:00B5 _MML_CheckForXMS + 0686:00E1 idle _MML_UseSpace + 0686:035F idle _MML_ClearBlock + 0686:03D4 _MM_Startup + 0686:0670 _MM_Shutdown + 0686:06AA _MM_GetPtr + 0686:09C9 _MM_FreePtr + 0686:0ACC _MM_SetPurge + 0686:0B81 _MM_SetLock + 0686:0C3B _MM_SortMem + 0686:0DE3 _MM_ShowMemory + 0686:1294 idle _MM_ShowMemoryVidVer + 0686:143C _MM_DumpData + 0686:15A9 _MM_UnusedMemory + 0686:1623 _MM_TotalFree + 0686:16BB _MM_Report_ + 0686:18AF _MM_EMSerr + 0686:1CDC _MM_BombOnError + 0686:1CEC idle _xms_call + 0856:000F idle _INL_KeyService + 0856:0182 idle _INL_Mouse + 0856:01CB idle _IN_GetJoyAbs + 0856:0268 idle _INL_GetJoyDelta + 0856:042A idle _IN_GetJoyButtonsDB + 0856:05BC idle _IN_SetupJoy + 0856:06EE _IN_Startup + 0856:07D3 idle _IN_Default + 0856:087B _IN_Shutdown + 0856:08C0 idle _IN_SetKeyHook + 0856:08D2 idle _IN_ClearKeysDown + 0856:0922 idle _IN_ReadCursor + 0856:09F2 idle _IN_ReadControl + 0856:0E44 idle _IN_SetControlType + 0856:0E53 idle _IN_GetScanName + 0856:0EAD idle _IN_WaitForKey + 0856:0ECB idle _IN_WaitForASCII + 0856:0EE8 idle _IN_StartAck + 0856:0F51 idle _IN_CheckAck + 0856:0FD7 _IN_Ack + 0856:0FFA idle _IN_IsUserInput + 0856:1061 idle _IN_UserInput + 0856:10AA idle _IN_MouseButtons + 0856:10D3 idle _IN_JoyButtons + 0856:10F0 idle _IN_KeyDown + 0856:1122 _IN_ClearKey + 0856:1144 idle _IN_qb + 0856:1195 idle _IN_GetLastScan + 0856:1199 idle _IN_GetCurCode + 0856:119D idle _IN_KbdLED + 0971:000D idle _ShapeTest_ + 0992:000E idle _Startup16 + 0992:0080 idle _Shutdown16 + 0992:00AF idle _TL_VidInit + 0992:00BC _DebugMemory_ + 0992:025B idle _ClearMemory + 0992:0280 _Quit + 0992:0357 idle _word_to_binary + 0992:03C2 idle _nibble_to_binary + 0992:042D idle _boolean_to_binary + 0992:0498 idle _nibbletest + 0992:0500 idle _booleantest + 0992:0568 _modexPalOverscan + 09E9:000D idle _VL_FillPalette + 09E9:003B idle _VL_SetColor + 09E9:0056 idle _VL_GetColor + 09E9:0080 idle _VL_SetPalette + 09E9:00C4 idle _VL_GetPalette + 09E9:00F0 idle _VL_FadeOut + 09E9:025E _VL_FadeIn + 09E9:0378 idle _VL_TestPaletteSet + 09E9:0407 _VL_Plot + 09E9:046E _VL_Hlin + 09E9:057D idle _VL_Vlin + 09E9:0601 idle _VL_Bar + 09E9:0744 idle _VL_WaitVBL + 09E9:075C idle _VGAMAPMASK + 09E9:076A idle _VGAWRITEMODE + 09E9:077D idle _VGAREADMAP + 0A7D:0000 idle DATASEG@ + 0A7D:005B idle __Int0Vector + 0A7D:005F idle __Int4Vector + 0A7D:0063 idle __Int5Vector + 0A7D:0067 idle __Int6Vector + 0A7D:006B __C0argc + 0A7D:006D __C0argv + 0A7D:0071 __C0environ + 0A7D:0075 __envLng + 0A7D:0077 __envseg + 0A7D:0079 __envSize + 0A7D:007B __psp + 0A7D:007D idle __osversion + 0A7D:007D __osmajor + 0A7D:007D idle __version + 0A7D:007E idle __osminor + 0A7D:007F _errno + 0A7D:0081 idle __StartTime + 0A7D:0085 idle ___brklvl + 0A7D:0087 __heapbase + 0A7D:008B __brklvl + 0A7D:008F __heaptop + 0A7D:05E4 idle __kitten_catalog + 0A7D:1934 _dbg_testkeyin + 0A7D:1936 _dbg_testcontrolnoisy + 0A7D:1938 _dbg_nointest + 0A7D:193A idle _dbg_maptext + 0A7D:193C idle _dbg_delayanimation + 0A7D:1B08 __atexitcnt + 0A7D:1B0A __ctype + 0A7D:1C0C __exitbuf + 0A7D:1C10 __exitfopen + 0A7D:1C14 idle __exitopen + 0A7D:1C18 __streams + 0A7D:1DA8 __nfile + 0A7D:1DAA __openfd + 0A7D:1DD2 __fmode + 0A7D:1DD4 __notUmask + 0A7D:1DD6 __doserrno + 0A7D:1DD8 idle __dosErrorToSV + 0A7D:1E3C __stklen + 0A7D:1EA6 __wscroll + 0A7D:1EA8 __video + 0A7D:1EB7 _directvideo + 0A7D:1EF4 __cFlag + 0A7D:1EF5 __cChar + 0A7D:1EF6 __argc + 0A7D:1EF8 __argv + 0A7D:1F06 _environ + 0A7D:1F10 __RealCvtVector + 0A7D:1F12 idle __ScanTodVector + 0A7D:1F40 _XMSVer + 0A7D:1F42 _XMSDriver + 0A7D:7020 idle _finishcachebox + 0A7D:7024 idle _updatecachebox + 0A7D:7028 idle _drawcachebox + 0A7D:702C idle _XMSaddr + 0A7D:7030 idle _aftersort + 0A7D:7034 idle _beforesort + 0A7D:703C idle _btnstate + 0A7D:7166 idle _dbg_mapdata + 0A7D:718D idle _global_temp_status_text2 + 0A7D:738D idle _global_temp_status_text + 0A7D:758E __atexittbl + +Program entry point at 0000:0000 + diff --git a/bcexmm.prj b/bcexmm.prj index 252a14ff..5b6c7b53 100755 Binary files a/bcexmm.prj and b/bcexmm.prj differ diff --git a/makefile b/makefile index 3e73a7cb..69486b5b 100755 --- a/makefile +++ b/makefile @@ -134,7 +134,7 @@ LIBFLAGS=$(WLIBQ) -b -n # VGMSNDOBJ = vgmSnd.$(OBJ) 16_snd.$(OBJ) #OLDLIBOBJS=bitmap.$(OBJ) 16render.$(OBJ) -GFXLIBOBJS = 16_vl.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS) +GFXLIBOBJS = 16_vl.$(OBJ) 16_vl_1.$(OBJ) 16_vlpal.$(OBJ) 16text.$(OBJ) bakapee.$(OBJ) scroll16.$(OBJ) 16_vrs.$(OBJ) 16_spri.$(OBJ) $(OLDLIBOBJS) 16LIBOBJS = 16_mm.$(OBJ) 16_pm.$(OBJ) 16_ca.$(OBJ) 16_tail.$(OBJ) 16_head.$(OBJ) 16_enti.$(OBJ) 16_dbg.$(OBJ) 16_in.$(OBJ) kitten.$(OBJ) 16_hc.$(OBJ) 16_wcpu.$(OBJ) 16_timer.$(OBJ) jsmn.$(OBJ) 16_map.$(OBJ) 16text.$(OBJ) DOSLIBOBJ = adlib.$(OBJ) 8254.$(OBJ) 8259.$(OBJ) dos.$(OBJ) cpu.$(OBJ) !ifeq DEBUGSERIAL 1 @@ -276,7 +276,7 @@ pcxtest2.exe: pcxtest2.$(OBJ) gfx.lib $(DOSLIB) #planrpcx.exe: planrpcx.$(OBJ) gfx.lib maptest.exe: maptest.$(OBJ) 16_map.$(OBJ) 16_head.$(OBJ) gfx.lib $(DOSLIB) $(16LIB) fmemtest.exe: fmemtest.$(OBJ) -exmmtest.exe: exmmtest.$(OBJ) $(16LIB) $(DOSLIB) +exmmtest.exe: exmmtest.$(OBJ) $(16LIB) gfx.lib $(DOSLIB) vgmtest.exe: vgmtest.$(OBJ) vgmsnd.lib $(16LIB) $(DOSLIB) gfx.lib db.exe: db.$(OBJ) wcpu.exe: wcpu.$(OBJ) $(16LIB) $(DOSLIB) @@ -345,6 +345,7 @@ joytest.exe: $(COPYCOMMAND) $(DOSLIB_JOYSTICK:$(to_os_path))$(DIRSEP)$(DOSLIB_MEMMODE)$(DIRSEP)test.exe joytest.exe 16_vl.$(OBJ): $(SRCLIB)/16_vl.c $(SRCLIB)/16_vl.h +16_vl_1.$(OBJ): $(SRCLIB)/16_vl_1.c $(SRCLIB)/16_vl.h 16_vlpal.$(OBJ): $(SRCLIB)/16_vlpa_.c $(SRCLIB)/16_vlpal.c $(SRCLIB)/16_vlpal.h bakapee.$(OBJ):$(SRCLIB)/bakapee.c $(SRCLIB)/bakapee.h 16render.$(OBJ):$(SRCLIB)/16render.c $(SRCLIB)/16render.h diff --git a/src/exmmtest.c b/src/exmmtest.c index 3c440c17..945aa954 100755 --- a/src/exmmtest.c +++ b/src/exmmtest.c @@ -45,6 +45,9 @@ //#define EXMMVERBOSE__ // #define PRINTBBDUMP #define BUFFDUMP +#define NOVID + +#define KEYP IN_Shutdown(&gvar); printf("\n\npress any key to continue!\n"); getch(); IN_Startup(&gvar); #define BBUFNAME bigbuffer//gvar.ca.tinf[0] #define INITBBUF static memptr BBUFNAME; @@ -60,11 +63,12 @@ #endif //////////////////////////////////////////////////////////////////////////// - +#ifdef __BORLANDC__ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv) { printf("VGAmodeX dummy:\n %Fp %Fp %Fp\n", &vq, &cmem, gv); } +#endif //printf("* %Fp\t", *BBUF); //printf("* %04x\t", *BBUF); @@ -101,8 +105,7 @@ void segatesuto() // // } // printf("]\n"); -// printf("press any key to continue!\n"); -// getch(); +// KEYP } #endif @@ -110,6 +113,10 @@ void main(int argc, char *argv[]) { byte w; +#ifndef NOVID + boolean done; + ScanCode scan; +#endif static global_game_variables_t gvar; #ifdef INITBBUF INITBBUF @@ -139,7 +146,7 @@ main(int argc, char *argv[]) dbg_debugca=1; #endif #ifdef PRINTBBDUMP -//0000PRINTBB; printf("press any key to continue!\n"); getch(); +//0000PRINTBB; KEYP #endif if(argv[1]){ bakapee1 = argv[1]; if(argv[2]) bakapee2 = argv[2]; } @@ -148,6 +155,12 @@ main(int argc, char *argv[]) bakapee1 = "data/koishi~.pcx"; bakapee2 = "data/test.map"; } +#ifndef NOVID + Startup16(&gvar); + + // save the palette + modexPalSave(&gvar.video.dpal); modexFadeOff(4, &gvar.video.dpal); //modexPalBlack(); +#else //NOVID //printf("main()=%Fp start MM\n", *argv[0]); MM_Startup(&gvar); //printf("ok\n"); #ifdef __16_PM__ @@ -156,12 +169,13 @@ main(int argc, char *argv[]) { #endif PM_Startup(&gvar); PM_CheckMainMem(&gvar); PM_UnlockMainMem(&gvar); -//0000 printf("PM Started\n"); printf("press any key to continue!\n"); getch(); +//0000 printf("PM Started\n"); KEYP #ifdef __DEBUG_PM__ } #endif #endif +#endif //NOVID #ifdef __DEBUG_MM__ dbg_debugmm=0; #endif @@ -169,7 +183,7 @@ main(int argc, char *argv[]) // printf(" done!\n"); #ifdef PRINTBBDUMP //0000 -PRINTBB; printf("\n\npress any key to continue!\n"); getch(); +PRINTBB; KEYP #endif #ifdef __DEBUG_MM__ dbg_debugmm=1; @@ -203,33 +217,63 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch(); #ifdef PRINTBBDUMP PRINTBB; #endif + //endif // BUFFDUMP //printf("dark purple = purgable\n"); //printf("medium blue = non purgable\n"); //printf("red = locked\n"); - // printf("press any key to continue!\n"); + // KEYP // DebugMemory_(&gvar, 1); if(baka) printf("\nyay!\n"); else printf("\npoo!\n"); #ifdef BUFFDUMPPAUSE - printf("press any key to continue!\n"); getch(); + KEYP #endif #ifdef FILEREAD } #endif #ifndef BUFFDUMPPAUSE - printf("press any key to continue!\n"); getch(); + KEYP #endif #endif //filereadload -/*#ifdef __WATCOMC__ - IN_Startup(&gvar); - ShapeTest_(&gvar); - IN_Shutdown(&gvar); -#endif*/ +#ifdef __WATCOMC__ +#ifndef NOVID + VGAmodeX(1, 0, &gvar); + modexPalUpdate0(&gvar.video.palette); +// ShapeTest_(&gvar); + for (done = false;!done;) + { + while (!(scan = gvar.in.inst->LastScan)) + {} + // SD_Poll(); + + IN_ClearKey(scan); + switch (scan) + { + case sc_Space: + MM_ShowMemoryVidVer(&gvar); + break; + case sc_O: + modexPalUpdate0(&gvar.video.palette); modexpdump(&gvar.video.page); + break; + case sc_P: + modexpdump(&gvar.video.page[0]); + break; + case sc_V: + VL_PatternDraw(&gvar.video, 0, 1, 1); + break; + default: + //case sc_Escape: + done = true; + break; + } + } +#endif +#endif DebugMemory_(&gvar, 1); MM_DumpData(&gvar); @@ -237,6 +281,9 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch(); //printf("bakapee1=%s\n", bakapee1); //printf("bakapee2=%s\n", bakapee2); MM_FreePtr(BBUFPTR, &gvar); +#ifndef NOVID + Shutdown16(&gvar); +#else #ifdef __16_PM__ #ifdef __DEBUG_PM__ if(dbg_debugpm>0) @@ -245,6 +292,8 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch(); #endif CA_Shutdown(&gvar); MM_Shutdown(&gvar); +#endif //NOVID + IN_Shutdown(&gvar); free(bakapee1); free(bakapee2); printf("========================================\n"); printf("near= %Fp ", gvar.mm.nearheap); @@ -299,6 +348,7 @@ PRINTBB; printf("\n\npress any key to continue!\n"); getch(); #endif printf("\n"); #endif + printf("old_mode=%u VL_Started=%u", gvar.video.old_mode, gvar.video.VL_Started); //printf("based core left: %lu\n", (dword)_basedcoreleft()); //printf("huge core left: %lu\n", (dword)_hugecoreleft()); } diff --git a/src/lib/16_in.c b/src/lib/16_in.c index f4d90dbb..a3e3fabd 100755 --- a/src/lib/16_in.c +++ b/src/lib/16_in.c @@ -503,7 +503,7 @@ IN_GetJoyButtonsDB(word joy) // /////////////////////////////////////////////////////////////////////////// static void -INL_StartKbd(global_game_variables_t *gvar) +INL_StartKbd() { INL_KeyHook = NULL; // Clear key hook @@ -680,7 +680,7 @@ IN_Startup(global_game_variables_t *gvar) } } - INL_StartKbd(gvar); + INL_StartKbd(); gvar->in.MousePresent = checkmouse? INL_StartMouse() : false; for (i = 0;i < MaxJoys;i++) @@ -1183,8 +1183,13 @@ boolean IN_CheckAck (global_game_variables_t *gvar) // // see if something has been pressed // - if (inst.LastScan) - return true; + if(!gvar->in.IN_Started) + getch(); + else + { + if (inst.LastScan) + return true; + } buttons = IN_JoyButtons () << 4; if (gvar->in.MousePresent) diff --git a/src/lib/16_mm.c b/src/lib/16_mm.c index fb308db6..f5f0770e 100755 --- a/src/lib/16_mm.c +++ b/src/lib/16_mm.c @@ -1150,7 +1150,7 @@ void MM_SetLock(memptr *baseptr, boolean locked, global_game_variables_t *gvar) void MM_SortMem(global_game_variables_t *gvar) { mmblocktype far *scan,far *last,far *next; - unsigned start,length,source,dest;//++++,oldborder; + unsigned start,length,source,dest,oldborder; //++++int playing; // @@ -1173,8 +1173,8 @@ void MM_SortMem(global_game_variables_t *gvar) SD_StopSound();*/ -// oldborder = bordercolor; -// VW_ColorBorder (15); + oldborder = gvar->video.bordercolor; + gvar->video.bordercolor = modexPalOverscan(15); if(beforesort) beforesort(); @@ -1267,7 +1267,6 @@ void MM_ShowMemory(global_game_variables_t *gvar) //dword wwww; byte scratch[160],scratch0[4096],str[16];//[[[[scratch1[160], //byte d = '#'; -//[[[[ VW_SetDefaultColors(); //[[[[ VW_SetLineWidth(40); //++++mh temp = bufferofs; //++++mh bufferofs = 0; @@ -1409,6 +1408,46 @@ void MM_ShowMemory(global_game_variables_t *gvar) //++++mh bufferofs = temp; } +void MM_ShowMemoryVidVer(global_game_variables_t *gvar) +{ + mmblocktype far *scan; + unsigned color,temp,x,y; + long end;//,owner; + //char scratch[80],str[10]; + + temp = gvar->video.ofs.bufferofs; + gvar->video.ofs.bufferofs = gvar->video.ofs.displayofs; + scan = gvar->mm.mmhead; + + end = -1; + + while (scan) + { + if (scan->attributes & PURGEBITS) + color = 5; // dark purple = purgable + else + color = 9; // medium blue = non purgable + if (scan->attributes & LOCKBIT) + color = 12; // red = locked + if (scan->start<=end) + Quit (gvar, "MM_ShowMemory: Memory block order currupted!"); + end = scan->length-1; + y = scan->start/320; + x = scan->start%320; + VL_Hlin(x,x+end,y,color, &gvar->video.ofs); + VL_Plot(x,y,15, &gvar->video.ofs); + if (scan->next && scan->next->start > end+1) + VL_Hlin(x+end+1,x+(scan->next->start-scan->start),y,0, &gvar->video.ofs); // black = free + + scan = scan->next; + } + + VL_FadeIn(0,255,&gvar->video.palette,10, &gvar->video); + IN_Ack(gvar); + + gvar->video.ofs.bufferofs = temp; +} + //========================================================================== /* diff --git a/src/lib/16_mm.h b/src/lib/16_mm.h index 36825c90..bd529c03 100755 --- a/src/lib/16_mm.h +++ b/src/lib/16_mm.h @@ -25,8 +25,6 @@ #include "src/lib/16_head.h" #include "src/lib/16_hc.h" #include "src/lib/16_tail.h" -//++++mh #include "src/lib/16_in.h" - #ifdef __DEBUG__ // 1 == Debug/Dev ; 0 == Production/final #define OUT_OF_MEM_MSG "MM_GetPtr: Out of memory!\nYou were short :%lu bytes\n" @@ -198,6 +196,7 @@ void MM_SetPurge(memptr *baseptr, int purge, global_game_variables_t *gvar); void MM_SetLock(memptr *baseptr, boolean locked, global_game_variables_t *gvar); void MM_SortMem(global_game_variables_t *gvar); void MM_ShowMemory(global_game_variables_t *gvar); +void MM_ShowMemoryVidVer(global_game_variables_t *gvar); void MM_DumpData(global_game_variables_t *gvar); dword MM_UnusedMemory(global_game_variables_t *gvar); dword MM_TotalFree(global_game_variables_t *gvar); diff --git a/src/lib/16_tail.c b/src/lib/16_tail.c index 3b1cb42c..daa9fadc 100755 --- a/src/lib/16_tail.c +++ b/src/lib/16_tail.c @@ -25,7 +25,6 @@ #include "src/lib/16_tail.h" #include "src/lib/16text.h" - /* ========================== = @@ -40,38 +39,9 @@ void Startup16(global_game_variables_t *gvar) { #ifdef __WATCOMC__ start_timer(gvar); - - // DOSLIB: check our environment - probe_dos(); - - // DOSLIB: what CPU are we using? - // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. - // So this code by itself shouldn't care too much what CPU it's running on. Except that other - // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for - // the CPU to carry out tasks. --J.C. - cpu_probe(); - - // DOSLIB: check for VGA - if (!probe_vga()) { - printf("VGA probe failed\n"); - return; - } - // hardware must be VGA or higher! - if (!(vga_state.vga_flags & VGA_IS_VGA)) { - printf("This program requires VGA or higher graphics hardware\n"); - return; - } - - if (_DEBUG_INIT() == 0) { -#ifdef DEBUGSERIAL - //printf("WARNING: Failed to initialize DEBUG output\n"); -#endif - } - _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log - _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); - - textInit(); #endif + gvar->video.VL_Started=0; + TL_VidInit(gvar); gvar->mm.mmstarted=0; gvar->pm.PMStarted=0; MM_Startup(gvar); @@ -115,7 +85,51 @@ void Shutdown16(global_game_variables_t *gvar) CA_Shutdown(gvar); MM_Shutdown(gvar); #ifdef __WATCOMC__ - VGAmodeX(0, 1, gvar); + if(gvar->video.VL_Started) + VGAmodeX(0, 1, gvar); +#endif +} + +void TL_VidInit(global_game_variables_t *gvar) +{ +#ifdef __WATCOMC__ + // DOSLIB: check our environment + probe_dos(); + + // DOSLIB: what CPU are we using? + // NTS: I can see from the makefile Sparky4 intends this to run on 8088 by the -0 switch in CFLAGS. + // So this code by itself shouldn't care too much what CPU it's running on. Except that other + // parts of this project (DOSLIB itself) rely on CPU detection to know what is appropriate for + // the CPU to carry out tasks. --J.C. + cpu_probe(); + + // DOSLIB: check for VGA + if (!probe_vga()) { + printf("VGA probe failed\n"); + return; + } + // hardware must be VGA or higher! + if (!(vga_state.vga_flags & VGA_IS_VGA)) { + printf("This program requires VGA or higher graphics hardware\n"); + return; + } + + if (_DEBUG_INIT() == 0) { +#ifdef DEBUGSERIAL + //printf("WARNING: Failed to initialize DEBUG output\n"); +#endif + } + _DEBUG("Serial debug output started\n"); // NTS: All serial output must end messages with newline, or DOSBox-X will not emit text to log + _DEBUGF("Serial debug output printf test %u %u %u\n",1U,2U,3U); + + textInit(); + + // get old video mode + //in.h.ah = 0xf; + //int86(0x10, &in, &out); + gvar->video.old_mode = vgaGetMode();//out.h.al; +#else + gvar->video.old_mode = 3; #endif } @@ -489,3 +503,13 @@ void booleantest() printf(" sizeof(boolean)=%s\n", boolean_to_binary(sizeof(boolean))); printf("end of boolean test\n"); } + +#ifdef __BORLANDC__ +word modexPalOverscan(word col) +{ + //modexWaitBorder(); + outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ + outp(PAL_DATA_REG, col); + return col; +} +#endif diff --git a/src/lib/16_tail.h b/src/lib/16_tail.h index 4de636c6..dc43c895 100755 --- a/src/lib/16_tail.h +++ b/src/lib/16_tail.h @@ -96,10 +96,16 @@ if(gvar.in.inst->Keyboard[sc_PgUp]){ \ rotateL(gvar.video.palette, sizeof(gvar.video.palette)/sizeof(gvar.video.palette[0])); \ VL_UpdatePaletteWrite(&gvar.video.palette, 0); IN_UserInput(1, &gvar); }*/ +#ifdef __BORLANDC__ +#define PAL_WRITE_REG 0x03C8 /* Color register, write address */ +#define PAL_DATA_REG 0x03C9 /* Color register, data port */ +word modexPalOverscan(word col); +#endif -void DebugMemory_(global_game_variables_t *gvar, boolean q); void Shutdown16(global_game_variables_t *gvar); void Startup16(global_game_variables_t *gvar); +void TL_VidInit(global_game_variables_t *gvar); +void DebugMemory_(global_game_variables_t *gvar, boolean q); void ClearMemory (global_game_variables_t *gvar); void Quit (global_game_variables_t *gvar, char *error); void turboXT(byte bakapee); diff --git a/src/lib/16_tdef.h b/src/lib/16_tdef.h index 2c2d0f72..a3ac0ae4 100755 --- a/src/lib/16_tdef.h +++ b/src/lib/16_tdef.h @@ -354,13 +354,16 @@ typedef struct } kurokku_t; //===================================// -#define PALSIZE 768 +#define PALSIZE 768 #define NUMCHUNKS 416 //keen +#define MAXSCANLINES 240 // size of ylookup table + //video typedef struct { unsigned int offscreen_ofs; unsigned int pattern_ofs; + unsigned bufferofs, ylookup[MAXSCANLINES], linewidth,displayofs; } ofs_t; //unfinished typedef struct @@ -376,8 +379,10 @@ typedef struct typedef struct { + boolean VL_Started; char old_mode; //old video mode before game! byte palette[PALSIZE], dpal[PALSIZE]; //palette array + byte far palette1[256][3],far palette2[256][3]; page_t page[MAXPAGE]; //can be used as a pointer to root page[0] word vmem_remain; //remaining video memory byte num_of_pages; //number of actual pages @@ -392,6 +397,10 @@ typedef struct ofs_t ofs; //offset vars used for doslib word vh; //video combined height //0000word startclk; float clk, tickclk; //timer + //wolf3d vars + boolean screenfaded; + word bordercolor; + boolean fastpalette; } video_t; //from scroll16 @@ -642,17 +651,16 @@ typedef struct //TODO: USE THIS!!!! //========================================================================== //actual global game varables! -/*typedef enum { - ENGI_QUIT, - ENGI_RUN, - ENGI_MENU, - ENGI_PAUSE -} engi_stat_t;*/ -//ENGI_INPUT, +/*typedef struct { + boolean clearmem; +} vidsw_t; + +typedef struct { + vidsw_t vsw; +} sw_t;*/ typedef struct { -//---- engi_stat_t engi_stat; video_t video; // video settings variable ca_t ca; // ca stuff pm_t pm; // pm stuff @@ -662,6 +670,7 @@ typedef struct in_info_t in; // 16_in info player_t player[MaxPlayers]; // player vars map_view_t mv[4]; +// sw_t sw; } global_game_variables_t; #ifdef __WATCOMC__ diff --git a/src/lib/16_vl.c b/src/lib/16_vl.c index 82e81375..833a75a6 100755 --- a/src/lib/16_vl.c +++ b/src/lib/16_vl.c @@ -43,16 +43,18 @@ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv) { case 0: // deinit the video // change to the video mode we were in before we switched to mode 13h - modexLeave(); - in.h.ah = 0x00; - in.h.al = gv->video.old_mode; - int86(0x10, &in, &out); + if(gv->video.VL_Started) + { + modexLeave(); + in.h.ah = 0x00; + in.h.al = gv->video.old_mode; + int86(0x10, &in, &out); + } + gv->video.VL_Started=0; break; default: // init the video - // get old video mode - //in.h.ah = 0xf; - //int86(0x10, &in, &out); - gv->video.old_mode = vgaGetMode();//out.h.al; + if(gv->video.VL_Started) + return; // enter mode modexEnter(vq, cmem, gv); break; @@ -163,6 +165,8 @@ void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv) } break; } + VL_SetLineWidth (cm.offset, &gv->video.ofs); + gv->video.VL_Started=1; } void @@ -171,6 +175,39 @@ modexLeave() { vgaSetMode(TEXT_MODE); } +/* +==================== += += VL_SetLineWidth += += Line witdh is in WORDS, 40 words is normal width for vgaplanegr += +==================== +*/ + +void VL_SetLineWidth (unsigned width, ofs_t *ofs) +{ + int i,offset; + +// +// set wide virtual screen +// + outport (CRTC_INDEX,CRTC_OFFSET+width*256); + +// +// set up lookup tables +// + ofs->linewidth = width*2; + + offset = 0; + + for (i=0;iylookup[i]=offset; + offset += ofs->linewidth; + } +} + page_t modexDefaultPage(page_t *p) { @@ -416,8 +453,7 @@ modexClearRegion(page_t *page, int x, int y, int w, int h, byte color) word poffset = pageOff + y*(page->stridew) + xoff; // starting offset word scanCount=w>>2; // number of iterations per row (excluding right clip) word nextRow = page->stridew-scanCount-1; // loc of next row - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; // clips for rectangles not on 4s - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + LRCLIPDEF byte left = lclip[x&0x03]; byte right = rclip[(x+w)&0x03]; @@ -498,8 +534,7 @@ modexCopyPageRegion(page_t *dest, page_t *src, word scans = vga_state.vga_stride+8; //++++0000 the quick and dirty fix of the major issue with p16 video display wwww word nextSrcRow = src->stridew - scans - 1; word nextDestRow = dest->stridew - scans - 1; - byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; // clips for rectangles not on 4s - byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + LRCLIPDEF byte left = lclip[sx&0x03]; byte right = rclip[(sx+width)&0x03]; @@ -580,6 +615,7 @@ modexCopyPageRegion(page_t *dest, page_t *src, } } +//check 16_vl_1.c /* fade and flash */ void @@ -782,14 +818,16 @@ modexPalUpdate0(byte *p) } } -void +word modexPalOverscan(word col) { //modexWaitBorder(); vga_wait_for_vsync(); outp(PAL_WRITE_REG, 0); /* start at the beginning of palette */ outp(PAL_DATA_REG, col); + return col; } +//check 16_vl_1.c void modexputPixel(page_t *page, int x, int y, byte color) { @@ -858,7 +896,7 @@ void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, wor } } -void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, const byte *str) +void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, boolean sw, const byte *str) { word s, o, w; word x_draw; @@ -867,38 +905,46 @@ void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word addrr; byte c; - if(tlsw){ x-=page->tlx; y-=page->tly; } - x_draw = x/4; - addrq = (page->stridew) * y + (word)(x_draw) + - ((word)page->data); - addrr = addrq; - s=romFonts[t].seg; - o=romFonts[t].off; - w=romFonts[t].charSize; - romFontsData.chw=0; - - for(; *str != '\0'; str++) + switch(sw) { - c = (*str); - if(c=='\n') - { - x = x_draw; - romFontsData.chw = 0; - addrq += (page->stridew) * 8; + case 0: + printf("%s\n", str); + break; + case 1: + if(tlsw){ x-=page->tlx; y-=page->tly; } + x_draw = x/4; + addrq = (page->stridew) * y + (word)(x_draw) + + ((word)page->data); addrr = addrq; - y += 8; - continue; - } + s=romFonts[t].seg; + o=romFonts[t].off; + w=romFonts[t].charSize; + romFontsData.chw=0; - // load the character into romFontsData.l - // no need for inline assembly! - // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C. - _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/); - modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr); - x_draw += 8; /* track X for edge of screen */ - addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */ + for(; *str != '\0'; str++) + { + c = (*str); + if(c=='\n') + { + x = x_draw; + romFontsData.chw = 0; + addrq += (page->stridew) * 8; + addrr = addrq; + y += 8; + continue; + } + + // load the character into romFontsData.l + // no need for inline assembly! + // NTS: It might even be faster to just let the modexDrawChar point directly at ROM font than to copy per char! --J.C. + _fmemcpy(romFontsData.l,MK_FP(s,o+(w*c))/*ROM font location*/,w/*char size*/); + modexDrawChar(page, x_draw/*for mode X planar use*/, t, col, bgcol, addrr); + x_draw += 8; /* track X for edge of screen */ + addrr += 2; /* move 8 pixels over (2 x 4 planar pixels per byte) */ + } + //printf("print xy:%dx%d tlxy:%dx%d\n", x, y, page->tlx, page->tly); + break; } - //printf("print xy:%dx%d tlxy:%dx%d\n", x, y, page->tlx, page->tly); } void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str) @@ -1103,6 +1149,8 @@ modexWaitBorder_end() } +//=========================================================================== + // // printings of video memory information // diff --git a/src/lib/16_vl.h b/src/lib/16_vl.h index cec79507..c3c44c7c 100755 --- a/src/lib/16_vl.h +++ b/src/lib/16_vl.h @@ -58,6 +58,14 @@ #define PLANE(x) (1 << ((x) & 3)) #define SELECT_ALL_PLANES() outpw(0x03c4, 0xff02) +// clips for rectangles not on 4s +#define LRCLIPDEF \ + byte lclip[] = {0x0f, 0x0e, 0x0c, 0x08}; \ + byte rclip[] = {0x00, 0x01, 0x03, 0x07}; + +#define VCLIPDEF \ + byte pclip[] = {1,2,4,8}; + typedef union { byte red; @@ -73,12 +81,54 @@ extern byte far* VGA; /* The VGA Memory */ #define VGA_256_COLOR_MODE 0x13 #define TEXT_MODE 0x03 -#define AC_INDEX 0x03c0 #define SC_INDEX 0x03c4 +#define SC_RESET 0 +#define SC_CLOCK 1 +#define SC_MAPMASK 2 +#define SC_CHARMAP 3 +#define SC_MEMMODE 4 + +#define CRTC_INDEX 0x3D4 +#define CRTC_H_TOTAL 0 +#define CRTC_H_DISPEND 1 +#define CRTC_H_BLANK 2 +#define CRTC_H_ENDBLANK 3 +#define CRTC_H_RETRACE 4 +#define CRTC_H_ENDRETRACE 5 +#define CRTC_V_TOTAL 6 +#define CRTC_OVERFLOW 7 +#define CRTC_ROWSCAN 8 +#define CRTC_MAXSCANLINE 9 +#define CRTC_CURSORSTART 10 +#define CRTC_CURSOREND 11 +#define CRTC_STARTHIGH 12 +#define CRTC_STARTLOW 13 +#define CRTC_CURSORHIGH 14 +#define CRTC_CURSORLOW 15 +#define CRTC_V_RETRACE 16 +#define CRTC_V_ENDRETRACE 17 +#define CRTC_V_DISPEND 18 +#define CRTC_OFFSET 19 +#define CRTC_UNDERLINE 20 +#define CRTC_V_BLANK 21 +#define CRTC_V_ENDBLANK 22 +#define CRTC_MODE 23 +#define CRTC_LINECOMPARE 24 + +#define GC_INDEX 0x03ce +#define GC_SETRESET 0 +#define GC_ENABLESETRESET 1 +#define GC_COLORCOMPARE 2 +#define GC_DATAROTATE 3 +#define GC_READMAP 4 +#define GC_MODE 5 +#define GC_MISCELLANEOUS 6 +#define GC_COLORDONTCARE 7 +#define GC_BITMASK 8 + +#define AC_INDEX 0x03c0 #define SC_DATA 0x03c5 -#define CRTC_INDEX 0x03d4 #define CRTC_DATA 0x03d5 -#define GC_INDEX 0x03ce #define MISC_OUTPUT 0x03c2 #define HIGH_ADDRESS 0x0C #define LOW_ADDRESS 0x0D @@ -94,12 +144,33 @@ extern byte far* VGA; /* The VGA Memory */ #define PAL_DATA_REG 0x03C9 /* Color register, data port */ #define PAL_SIZE (256 * 3) +//=========================================================================== + +#define SCREENSEG 0xa000 + +//#define SCREENWIDTH 80 // default screen width in bytes +//#define MAXSCANLINES 240 // size of ylookup table + +//#define CHARWIDTH 2 +//#define TILEWIDTH 4 + +//=========================================================================== + +// +// VGA hardware routines +// + +void VGAMAPMASK(byte x); +void VGAWRITEMODE(byte x); +void VGAREADMAP(byte x); + /* -============================ Functions =============================- */ /* mode switching, page, and plane functions */ void VGAmodeX(sword vq, boolean cmem, global_game_variables_t *gv); void modexEnter(sword vq, boolean cmem, global_game_variables_t *gv); byte vgaGetMode(); void modexLeave(); +void VL_SetLineWidth (unsigned width, ofs_t *ofs); void modexsetBaseXMode(); page_t modexDefaultPage(page_t *p); page_t modexNextPage(page_t *p); @@ -116,6 +187,7 @@ void modexClearRegion(page_t *page, int x, int y, int w, int h, byte color); void modexCopyPageRegion(page_t *dest, page_t *src, word sx, word sy, word dx, word dy, word width, word height); /* Palette fade and flash effects */ +void VL_FadeIn (int start, int end, byte far *palette, int steps, video_t *v); void modexFadeOn(word fade, byte *palette); void modexFadeOff(word fade, byte *palette); void modexFlashOn(word fade, byte *palette); @@ -129,6 +201,7 @@ void VL_LoadPalFile(const char *filename, byte *palette); void VL_LoadPalFilewithoffset(const char *filename, byte *palette, word o); void VL_UpdatePaletteWrite(byte *palette, word o); void modexSavePalFile(char *filename, byte *palette); +#define MenuFadeIn() VL_FadeIn(0,255,&gamepal,10) /* fixed palette functions */ void modexPalBlack(); @@ -137,7 +210,11 @@ void modexPalWhite(); /* utility functions */ void modexPalUpdate(byte *p); void modexPalUpdate0(byte *p); -void modexPalOverscan(word col); +word modexPalOverscan(word col); +void VL_Plot (int x, int y, int color, ofs_t *ofs); +void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color, ofs_t *ofs); +void VL_Vlin (int x, int y, int height, int color, ofs_t *ofs); +void VL_Bar (int x, int y, int width, int height, int color, ofs_t *ofs); void modexputPixel(page_t *page, int x, int y, byte color); byte modexgetPixel(page_t *page, int x, int y); @@ -168,7 +245,7 @@ static inline byte modexreadPixel(page_t *page, int x, int y, word addr) #endif void modexDrawChar(page_t *page, int x/*for planar selection only*/, word t, word col, word bgcol, word addr); -void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, const byte *str); +void modexprint(page_t *page, sword x, sword y, word t, boolean tlsw, word col, word bgcol, boolean sw, const byte *str); void modexprintbig(page_t *page, word x, word y, word t, word col, word bgcol, const byte *str); void modexpdump(page_t *pee); void modexcls(page_t *page, byte color, byte *Where); @@ -176,6 +253,7 @@ void VL_PatternDraw(video_t *video, word pn, boolean sw, boolean allsw); void modexWaitBorder(); void modexWaitBorder_start(); void modexWaitBorder_end(); +void VL_WaitVBL(word num); void VL_PrintmodexmemInfo(video_t *v); #endif diff --git a/src/lib/16_vl_1.c b/src/lib/16_vl_1.c new file mode 100755 index 00000000..a6928b27 --- /dev/null +++ b/src/lib/16_vl_1.c @@ -0,0 +1,580 @@ +/* Project 16 Source Code~ + * Copyright (C) 2012-2017 sparky4 & pngwen & andrius4669 & joncampbell123 & yakui-lover + * + * This file is part of Project 16. + * + * Project 16 is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Project 16 is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see , or + * write to the Free Software Foundation, Inc., 51 Franklin Street, + * Fifth Floor, Boston, MA 02110-1301 USA. + * + */ + +#include +#include +#include +#include "src/lib/16_vl.h" + +/* +============================================================================= + + PALETTE OPS + + To avoid snow, do a WaitVBL BEFORE calling these + +============================================================================= +*/ + + +/* +================= += += VL_FillPalette += +================= +*/ + +void VL_FillPalette (int red, int green, int blue) +{ + int i; + + outportb (PAL_WRITE_REG,0); + for (i=0;i<256;i++) + { + outportb (PAL_DATA_REG,red); + outportb (PAL_DATA_REG,green); + outportb (PAL_DATA_REG,blue); + } +} + +//=========================================================================== + +/* +================= += += VL_SetColor += +================= +*/ + +void VL_SetColor (int color, int red, int green, int blue) +{ + outportb (PAL_WRITE_REG,color); + outportb (PAL_DATA_REG,red); + outportb (PAL_DATA_REG,green); + outportb (PAL_DATA_REG,blue); +} + +//=========================================================================== + +/* +================= += += VL_GetColor += +================= +*/ + +void VL_GetColor (int color, int *red, int *green, int *blue) +{ + outportb (PAL_READ_REG,color); + *red = inportb (PAL_DATA_REG); + *green = inportb (PAL_DATA_REG); + *blue = inportb (PAL_DATA_REG); +} + +//=========================================================================== + +/* +================= += += VL_SetPalette += += If fast palette setting has been tested for, it is used += (some cards don't like outsb palette setting) += +================= +*/ + +void VL_SetPalette (byte far *palette, video_t *v) +{ +// int i; + boolean fastpalette; + fastpalette=v->fastpalette; + +// outportb (PAL_WRITE_REG,0); +// for (i=0;i<768;i++) +// outportb(PAL_DATA_REG,*palette++); + + __asm { + mov dx,PAL_WRITE_REG + mov al,0 + out dx,al + mov dx,PAL_DATA_REG + lds si,[palette] + + test [ss:fastpalette],1 + jz slowset +// +// set palette fast for cards that can take it +// + //mov cx,768 + //rep outsb + //jmp done + +// +// set palette slowly for some video cards +// +#ifdef __BORLANDC__ + } +#endif +slowset: +#ifdef __BORLANDC__ + __asm { +#endif + mov cx,256 +#ifdef __BORLANDC__ + } +#endif +setloop: +#ifdef __BORLANDC__ + __asm { +#endif + lodsb + out dx,al + lodsb + out dx,al + lodsb + out dx,al + loop setloop +#ifdef __BORLANDC__ + } +#endif +done: +#ifdef __BORLANDC__ + __asm { +#endif + mov ax,ss + mov ds,ax + } + v->fastpalette=fastpalette; +} + + +//=========================================================================== + +/* +================= += += VL_GetPalette += += This does not use the port string instructions, += due to some incompatabilities += +================= +*/ + +void VL_GetPalette (byte far *palette) +{ + int i; + + outportb (PAL_READ_REG,0); + for (i=0;i<768;i++) + *palette++ = inportb(PAL_DATA_REG); +} + + +//=========================================================================== + +/* +================= += += VL_FadeOut += += Fades the current palette to the given color in the given number of steps += +================= +*/ + +void VL_FadeOut (int start, int end, int red, int green, int blue, int steps, video_t *v) +{ + int i,j,orig,delta; + byte far *origptr, far *newptr; + + VL_WaitVBL(1); + VL_GetPalette (&v->palette1[0][0]); + _fmemcpy (v->palette2,v->palette1,PALSIZE); + +// +// fade through intermediate frames +// + for (i=0;ipalette1[start][0]; + newptr = &v->palette2[start][0]; + for (j=start;j<=end;j++) + { + orig = *origptr++; + delta = red-orig; + *newptr++ = orig + delta * i / steps; + orig = *origptr++; + delta = green-orig; + *newptr++ = orig + delta * i / steps; + orig = *origptr++; + delta = blue-orig; + *newptr++ = orig + delta * i / steps; + } + + VL_WaitVBL(1); + VL_SetPalette (&v->palette2[0][0], v); + } + +// +// final color +// + VL_FillPalette (red,green,blue); + + v->screenfaded = true; +} + + +/* +================= += += VL_FadeIn += +================= +*/ + +void VL_FadeIn (int start, int end, byte far *palette, int steps, video_t *v) +{ + int i,j,delta; + + VL_WaitVBL(1); + VL_GetPalette (&v->palette1[0][0]); + _fmemcpy (&v->palette2[0][0],&v->palette1[0][0],sizeof(v->palette1)); + + start *= 3; + end = end*3+2; + +// +// fade through intermediate frames +// + for (i=0;ipalette1[0][j]; + v->palette2[0][j] = v->palette1[0][j] + delta * i / steps; + } + + VL_WaitVBL(1); + VL_SetPalette (&v->palette2[0][0], v); + } + +// +// final color +// + VL_SetPalette (palette, v); + v->screenfaded = false; +} + + + +/* +================= += += VL_TestPaletteSet += += Sets the palette with outsb, then reads it in and compares += If it compares ok, fastpalette is set to true. += +================= +*/ + +void VL_TestPaletteSet (video_t *v) +{ + int i; + + for (i=0;i<768;i++) + v->palette1[0][i] = i; + + v->fastpalette = true; + VL_SetPalette (&v->palette1[0][0], v); + VL_GetPalette (&v->palette2[0][0]); + if (_fmemcmp (&v->palette1[0][0],&v->palette2[0][0],768)) + v->fastpalette = false; +} + + +/* +============================================================================= + + PIXEL OPS + +============================================================================= +*/ + +//byte rightmasks[4] = {1,3,7,15}; + +/* +================= += += VL_Plot += +================= +*/ + +void VL_Plot (int x, int y, int color, ofs_t *ofs) +{ + byte mask; + VCLIPDEF + + mask = pclip[x&3]; + VGAMAPMASK(mask); + *(byte far *)MK_FP(SCREENSEG,ofs->bufferofs+(ofs->ylookup[y]+(x>>2))) = color; + VGAMAPMASK(15); +} + + +/* +================= += += VL_Hlin += +================= +*/ + +void VL_Hlin (unsigned x, unsigned y, unsigned width, unsigned color, ofs_t *ofs) +{ + unsigned xbyte; + byte far *dest; + byte leftmask,rightmask; + int midbytes; + + LRCLIPDEF + + xbyte = x>>2; + leftmask = lclip[x&3]; + rightmask = rclip[(x+width-1)&3]; + midbytes = ((x+width+3)>>2) - xbyte - 2; + + dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+xbyte); + + if (midbytes<0) + { + // all in one byte + VGAMAPMASK(leftmask&rightmask); + *dest = color; + VGAMAPMASK(15); + return; + } + + VGAMAPMASK(leftmask); + *dest++ = color; + + VGAMAPMASK(15); + _fmemset (dest,color,midbytes); + dest+=midbytes; + + VGAMAPMASK(rightmask); + *dest = color; + + VGAMAPMASK(15); +} + + +/* +================= += += VL_Vlin += +================= +*/ + +void VL_Vlin (int x, int y, int height, int color, ofs_t *ofs) +{ + byte far *dest,mask; + VCLIPDEF + + mask = pclip[x&3]; + VGAMAPMASK(mask); + + dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+(x>>2)); + + while (height--) + { + *dest = color; + dest += ofs->linewidth; + } + + VGAMAPMASK(15); +} + + +/* +================= += += VL_Bar += +================= +*/ + +void VL_Bar (int x, int y, int width, int height, int color, ofs_t *ofs) +{ + byte far *dest; + byte leftmask,rightmask; + int midbytes,linedelta; + + LRCLIPDEF + + leftmask = lclip[x&3]; + rightmask = rclip[(x+width-1)&3]; + midbytes = ((x+width+3)>>2) - (x>>2) - 2; + linedelta = ofs->linewidth-(midbytes+1); + + dest = MK_FP(SCREENSEG,ofs->bufferofs+ofs->ylookup[y]+(x>>2)); + + if (midbytes<0) + { + // all in one byte + VGAMAPMASK(leftmask&rightmask); + while (height--) + { + *dest = color; + dest += ofs->linewidth; + } + VGAMAPMASK(15); + return; + } + + while (height--) + { + VGAMAPMASK(leftmask); + *dest++ = color; + + VGAMAPMASK(15); + _fmemset (dest,color,midbytes); + dest+=midbytes; + + VGAMAPMASK(rightmask); + *dest = color; + + dest+=linedelta; + } + + VGAMAPMASK(15); +} + + +/* +============== + + VL_WaitVBL ******** NEW ********* + + Wait for the vertical retrace (returns before the actual vertical sync) + +============== +*/ + +void VL_WaitVBL(word num) +{ +//PROC VL_WaitVBL num:WORD +//PUBLIC VL_WaitVBL +#ifdef __WATCOMC__ + __asm { +#endif + wait: +#ifdef __BORLANDC__ + __asm { +#endif + + mov dx,STATUS_REGISTER_1 + + mov cx,[num] + // + // wait for a display signal to make sure the raster isn't in the middle + // of a sync + // +#ifdef __BORLANDC__ + } +#endif + waitnosync: +#ifdef __BORLANDC__ + __asm { +#endif + in al,dx + test al,8 + jnz waitnosync + + +#ifdef __BORLANDC__ + } +#endif + waitsync: +#ifdef __BORLANDC__ + __asm { +#endif + in al,dx + test al,8 + jz waitsync + + loop waitnosync + + ret + } +} + +//=========================================================================== + +void VGAMAPMASK(byte x) +{ + __asm { +// cli + mov dx,SC_INDEX + mov al,SC_MAPMASK + mov ah,x + out dx,ax +// sti + } +} + +void VGAWRITEMODE(byte x) +{ + __asm { +// cli + mov dx,GC_INDEX + mov al,GC_MODE + out dx,al + inc dx + in al,dx + and al,252 + or al,x + out dx,al +// sti + } +} + +void VGAREADMAP(byte x) +{ + __asm { +// cli + mov dx,GC_INDEX + mov al,GC_READMAP + mov ah,x + out dx,ax +// sti + } +} + +//=========================================================================== diff --git a/src/lib/bakapee.c b/src/lib/bakapee.c index 9af09403..bab3eba7 100755 --- a/src/lib/bakapee.c +++ b/src/lib/bakapee.c @@ -283,7 +283,7 @@ void ding(page_t *page, bakapee_t *pee, word q) // pee->coor = rand()%256; // modexcls(page, pee->coor, VGA); colorz(page, pee); - modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, "bakapi"); + modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi"); break; case 7: if(pee->coor <= pee->hgq) @@ -294,7 +294,7 @@ void ding(page_t *page, bakapee_t *pee, word q) break; case 8: colorz(page, pee); - modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, "bakapi"); + modexprint(page, page->sw/2, page->sh/2, 1, 0, 47, 0, 1, "bakapi"); break; case 9: if(pee->coor <= pee->hgq) diff --git a/src/lib/hb/democ3.c b/src/lib/hb/democ3.c new file mode 100755 index 00000000..43f581c7 --- /dev/null +++ b/src/lib/hb/democ3.c @@ -0,0 +1,82 @@ +/* +===================== += += DemoLoop += +===================== +*/ + +static char *ParmStrings[] = {"easy","normal","hard",""}; + +void DemoLoop (void) +{ + int i,level; + +// +// check for launch from ted +// + if (tedlevel) + { + NewGame(); + gamestate.mapon = tedlevelnum; + restartgame = gd_Normal; + for (i = 1;i < _argc;i++) + { + if ( (level = US_CheckParm(_argv[i],ParmStrings)) == -1) + continue; + + restartgame = gd_Easy+level; + break; + } + GameLoop(); + TEDDeath(); + } + + +// +// main game cycle +// + displayofs = bufferofs = 0; + VW_Bar (0,0,320,200,0); + + while (1) + { + CA_CacheGrChunk (TITLEPIC); + bufferofs = SCREEN2START; + displayofs = SCREEN1START; + VWB_DrawPic (0,0,TITLEPIC); + MM_SetPurge (&grsegs[TITLEPIC],3); + UNMARKGRCHUNK(TITLEPIC); + FizzleFade (bufferofs,displayofs,320,200,true); + + if (!IN_UserInput(TickBase*3,false)) + { + CA_CacheGrChunk (CREDITSPIC); + VWB_DrawPic (0,0,CREDITSPIC); + MM_SetPurge (&grsegs[CREDITSPIC],3); + UNMARKGRCHUNK(CREDITSPIC); + FizzleFade (bufferofs,displayofs,320,200,true); + + } + + if (!IN_UserInput(TickBase*3,false)) + { +highscores: + DrawHighScores (); + FizzleFade (bufferofs,displayofs,320,200,true); + IN_UserInput(TickBase*3,false); + } + + if (IN_IsUserInput()) + { + US_ControlPanel (); + + if (restartgame || loadedgame) + { + GameLoop (); + goto highscores; + } + } + + } +} diff --git a/src/lib/hb/democ6.c b/src/lib/hb/democ6.c new file mode 100755 index 00000000..dcad4bed --- /dev/null +++ b/src/lib/hb/democ6.c @@ -0,0 +1,59 @@ +/* +===================== += += DemoLoop += +===================== +*/ + +static char *ParmStrings[] = {"easy","normal","hard",""}; + +void DemoLoop (void) +{ + +///////////////////////////////////////////////////////////////////////////// +// main game cycle +///////////////////////////////////////////////////////////////////////////// + + displayofs = bufferofs = 0; + VW_Bar (0,0,320,200,0); + VW_SetScreen(0,0); + +// +// Read in all the graphic images needed for the title sequence +// + VW_WaitVBL(1); + IN_ReadControl(0,&control); + +// set EASYMODE +// + if (stricmp(_argv[2], "1") == 0) + EASYMODEON = true; + else + EASYMODEON = false; + +// restore game +// + if (stricmp(_argv[3], "1") == 0) + { + VW_FadeOut(); + bufferofs = displayofs = 0; + VW_Bar(0,0,320,200,0); + if (GE_LoadGame()) + { + loadedgame = true; + playstate = ex_loadedgame; + Keyboard[sc_Enter] = true; + VW_Bar(0,0,320,200,0); + ColoredPalette(); + } + VW_Bar(0,0,320,200,0); + VW_FadeIn(); + } + + // Play a game + // + restartgame = gd_Normal; + NewGame(); + GameLoop(); +} diff --git a/src/lib/scroll16.c b/src/lib/scroll16.c index 0cbb7397..6f90915b 100755 --- a/src/lib/scroll16.c +++ b/src/lib/scroll16.c @@ -589,7 +589,7 @@ mapDrawTile(tiles_t *t, word i, page_t *page, word x, word y) //modexDrawBmpRegion (page, x, y, rx, ry, t->tileWidth, t->tileHeight, (t->data)); #endif #ifdef __DEBUG_MAP__ - if(dbg_maptext){ sprintf(global_temp_status_text2, "%u", i); modexprint(page, x, y, 1, 0, 1, 2, global_temp_status_text2); } + if(dbg_maptext){ sprintf(global_temp_status_text2, "%u", i); modexprint(page, x, y, 1, 0, 1, 2, 1, global_temp_status_text2); } #endif break; } @@ -604,7 +604,7 @@ if(dbg_pagedelayrendermap) if(!y) y+=TILEWH; else y-=TILEWH; poopoffset%=player[0].enti.speed; //printf("y: %d\n", poopoffset); #ifdef __DEBUG_RF__ -if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); modexprint(mv[0].page, player[0].enti.x, player[0].enti.y-28-(poopoffset*8) , 1, 0, PALMAPDRAWW, 1, global_temp_status_text); } +if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); modexprint(mv[0].page, player[0].enti.x, player[0].enti.y-28-(poopoffset*8) , 1, 0, PALMAPDRAWW, 1, 1, global_temp_status_text); } #endif /* the position within the map array */ i=ty * mv->map->width + tx; @@ -613,7 +613,7 @@ if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dx); mo mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, mv->dx, y); for(z=1;z<=2;z++) if(mv->map->layerdata[z].data[i]){ - sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2); + sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2); //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, mv->dx, y); } } @@ -644,7 +644,7 @@ if(dbg_pagedelayrendermap){ sprintf(global_temp_status_text, "%-3u", mv->dy); mo mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, x, mv->dy); for(z=1;z<=2;z++) if(mv->map->layerdata[z].data[i]){ - sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2); + sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2); //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, x, mv->dy); } } @@ -666,7 +666,7 @@ void mapDrawWRow(map_view_t *mv, int tx, int ty, word y) mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, mv->dx, y); for(z=1;z<=2;z++) if(mv->map->layerdata[z].data[i]){ - sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2); + sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, mv->dx, y, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2); //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, mv->dx, y); } } @@ -688,7 +688,7 @@ void mapDrawWCol(map_view_t *mv, int tx, int ty, word x) mapDrawTile(mv->map->tiles, mv->map->layerdata[0].data[i], mv->page, x, mv->dy); for(z=1;z<=2;z++) if(mv->map->layerdata[z].data[i]){ - sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, global_temp_status_text2); + sprintf(global_temp_status_text2, "%u", mv->map->layerdata[z].data[i]); modexprint(mv->page, x, mv->dy, 1, 0, PALMAPDRAWW, z+2, 1, global_temp_status_text2); //mapDrawTile(mv->map->tiles, mv->map->layerdata[z].data[i], mv->page, x, mv->dy); } } @@ -722,7 +722,7 @@ void shinku(global_game_variables_t *gv) gv->video.page[/*!*/(gv->video.p)].dx, gv->video.page[/*!*/(gv->video.p)].dy, 96, 16); - modexprint(&(gv->video.page[/*!*/(gv->video.p)]), x, y, type, 1, col, bgcol, global_temp_status_text); + modexprint(&(gv->video.page[/*!*/(gv->video.p)]), x, y, type, 1, col, 1, bgcol, global_temp_status_text); //0000printf("dx=%u dy=%u\n", gv->video.page[/*!*/(gv->video.p)].dx, gv->video.page[/*!*/(gv->video.p)].dy); } gv->kurokku.tiku=0;