]> 4ch.mooo.com Git - 16.git/commitdiff
new file: 16.bat
authorsparky4 <sparky4@4ch.maidlab.jp>
Fri, 30 Nov 2012 08:24:58 +0000 (02:24 -0600)
committersparky4 <sparky4@compy4.4ch.irc.su>
Fri, 30 Nov 2012 08:28:07 +0000 (02:28 -0600)
new file:   CORE16.EXE
new file:   CORE16.SYM
new file:   core16.lk1
new file:   core16.map
new file:   doc/16.16
new file:   doc/16story.txt
new file:   doc/ojoww.cpp
new file:   doc/project.txt
new file:   doc/wwww.txt
new file:   proj16.bfproject
new file:   proj16.mk
new file:   proj16.mk1
new file:   proj16.tgt
new file:   proj16.wpj
new file:   remake.bat
new file:   src/eng_ai.cpp
new file:   src/eng_ai.h
new file:   src/eng_comm.cpp
new file:   src/eng_comm.h
new file:   src/eng_core.cpp
new file:   src/eng_core.h
new file:   src/eng_gfx.cpp
new file:   src/eng_gfx.h
new file:   src/eng_snd.cpp
new file:   src/eng_snd.h
new file:   src/engine.h
new file:   src/lib/dos_comm.c
new file:   src/lib/dos_comm.h
new file:   src/lib/dos_gfx.cpp
new file:   src/lib/dos_gfx.h
new file:   src/lib/dos_opl2.cpp
new file:   src/lib/lib_com.cpp
new file:   src/lib/lib_com.h
new file:   src/lib/opl2.h
new file:   src/main.cpp
new file:   src/timer.cpp
new file:   src/timer.h

40 files changed:
.gitignore [new file with mode: 0644]
16.bat [new file with mode: 0644]
CORE16.EXE [new file with mode: 0644]
CORE16.SYM [new file with mode: 0644]
core16.lk1 [new file with mode: 0644]
core16.map [new file with mode: 0644]
doc/16.16 [new file with mode: 0644]
doc/16story.txt [new file with mode: 0644]
doc/ojoww.cpp [new file with mode: 0644]
doc/project.txt [new file with mode: 0644]
doc/wwww.txt [new file with mode: 0644]
l [new file with mode: 0644]
proj16.bfproject [new file with mode: 0644]
proj16.mk [new file with mode: 0644]
proj16.mk1 [new file with mode: 0644]
proj16.tgt [new file with mode: 0644]
proj16.wpj [new file with mode: 0644]
remake.bat [new file with mode: 0644]
src/eng_ai.cpp [new file with mode: 0644]
src/eng_ai.h [new file with mode: 0644]
src/eng_comm.cpp [new file with mode: 0644]
src/eng_comm.h [new file with mode: 0644]
src/eng_core.cpp [new file with mode: 0644]
src/eng_core.h [new file with mode: 0644]
src/eng_gfx.cpp [new file with mode: 0644]
src/eng_gfx.h [new file with mode: 0644]
src/eng_snd.cpp [new file with mode: 0644]
src/eng_snd.h [new file with mode: 0644]
src/engine.h [new file with mode: 0644]
src/lib/dos_comm.c [new file with mode: 0644]
src/lib/dos_comm.h [new file with mode: 0644]
src/lib/dos_gfx.cpp [new file with mode: 0644]
src/lib/dos_gfx.h [new file with mode: 0644]
src/lib/dos_opl2.cpp [new file with mode: 0644]
src/lib/lib_com.cpp [new file with mode: 0644]
src/lib/lib_com.h [new file with mode: 0644]
src/lib/opl2.h [new file with mode: 0644]
src/main.cpp [new file with mode: 0644]
src/timer.cpp [new file with mode: 0644]
src/timer.h [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..bcd1a01
--- /dev/null
@@ -0,0 +1,14 @@
+# Lines starting with '#' are considered comments.
+# Ignore (generated) html files,
+*.html
+*.htm
+*.obj
+*.OBJ
+*.*~
+*.sh
+!proj16.bfproject
+
+# except foo.html which is maintained by hand.
+#!foo.html
+# Ignore objects and archives.
+*.[oa]
diff --git a/16.bat b/16.bat
new file mode 100644 (file)
index 0000000..daa919b
--- /dev/null
+++ b/16.bat
@@ -0,0 +1,2 @@
+del *.err\r
+wmake -f proj16.mk -e -h > 16.err\r
diff --git a/CORE16.EXE b/CORE16.EXE
new file mode 100644 (file)
index 0000000..bc804f0
Binary files /dev/null and b/CORE16.EXE differ
diff --git a/CORE16.SYM b/CORE16.SYM
new file mode 100644 (file)
index 0000000..261f919
Binary files /dev/null and b/CORE16.SYM differ
diff --git a/core16.lk1 b/core16.lk1
new file mode 100644 (file)
index 0000000..609d331
--- /dev/null
@@ -0,0 +1,2 @@
+FIL dos_comm.obj,eng_ai.obj,eng_comm.obj,eng_core.obj,eng_gfx.obj,eng_snd.obj,dos_gfx.obj,dos_opl2.obj,lib_com.obj,main.obj,timer.obj\r
+\r
diff --git a/core16.map b/core16.map
new file mode 100644 (file)
index 0000000..0b642a9
--- /dev/null
@@ -0,0 +1,875 @@
+Open Watcom Linker Version 1.9\r
+Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved.\r
+Created on:       12/11/28 00:07:52\r
+Warning! W1027: file eng_core.obj(C:\Z\16\src\eng_core.cpp): redefinition of short unsigned far Notes[] ignored\r
+Warning! W1027: file eng_snd.obj(C:\Z\16\src\eng_snd.cpp): redefinition of short unsigned far Notes[] ignored\r
+Warning! W1027: file dos_opl2.obj(C:\Z\16\src\lib\dos_opl2.cpp): redefinition of short unsigned far Notes[] ignored\r
+Executable Image: core16.exe\r
+creating a DOS executable\r
+\r
+\r
+                        +------------+\r
+                        |   Groups   |\r
+                        +------------+\r
+\r
+Group                           Address              Size\r
+=====                           =======              ====\r
+\r
+DGROUP                          10fc:0000            000017c0\r
+\r
+\r
+\r
+                        +--------------+\r
+                        |   Segments   |\r
+                        +--------------+\r
+\r
+Segment                Class          Group          Address         Size\r
+=======                =====          =====          =======         ====\r
+\r
+dos_comm_TEXT          CODE           AUTO           0000:0000       0000022b\r
+eng_ai_TEXT            CODE           AUTO           0000:0230       00000013\r
+eng_comm_TEXT          CODE           AUTO           0000:0250       00000198\r
+eng_core_TEXT          CODE           AUTO           0000:03f0       00002ce5\r
+eng_gfx_TEXT           CODE           AUTO           0000:30e0       00000013\r
+eng_snd_TEXT           CODE           AUTO           0000:3100       00000013\r
+dos_gfx_TEXT           CODE           AUTO           0000:3120       0000088e\r
+dos_opl2_TEXT          CODE           AUTO           0000:39b0       000004ae\r
+lib_com_TEXT           CODE           AUTO           0000:3e60       00000063\r
+main_TEXT              CODE           AUTO           0000:3ed0       000000de\r
+timer_TEXT             CODE           AUTO           0000:3fb0       000001b4\r
+_TEXT                  CODE           AUTO           0000:4170       000082c0\r
+cppdata_TEXT           CODE           AUTO           0000:c430       00000000\r
+fsregist_TEXT          CODE           AUTO           0000:c430       000003a1\r
+opnew_TEXT             CODE           AUTO           0000:c7e0       0000007a\r
+opnewp_TEXT            CODE           AUTO           0000:c860       00000005\r
+opdel_TEXT             CODE           AUTO           0000:c870       0000000e\r
+stabthrw_TEXT          CODE           AUTO           0000:c880       00000da5\r
+manendl_TEXT           CODE           AUTO           0000:d630       00000020\r
+ioicout_TEXT           CODE           AUTO           0000:d650       000000a5\r
+ostincch_TEXT          CODE           AUTO           0000:d700       000000b9\r
+ostinomn_TEXT          CODE           AUTO           0000:d7c0       00000013\r
+iofefg_TEXT            CODE           AUTO           0000:d7e0       00000042\r
+undefed_TEXT           CODE           AUTO           0000:d830       00000013\r
+fsroot_TEXT            CODE           AUTO           0000:d850       0000000b\r
+stabdtor_TEXT          CODE           AUTO           0000:d860       000003d5\r
+stabdisp_TEXT          CODE           AUTO           0000:dc40       00000343\r
+dtorarst_TEXT          CODE           AUTO           0000:df90       0000002f\r
+opdelarr_TEXT          CODE           AUTO           0000:dfc0       00000005\r
+exc_pr_TEXT            CODE           AUTO           0000:dfd0       000001bd\r
+vfun_err_TEXT          CODE           AUTO           0000:e190       00000027\r
+unexpect_TEXT          CODE           AUTO           0000:e1c0       000000c0\r
+callterm_TEXT          CODE           AUTO           0000:e280       0000004f\r
+tsequiv_TEXT           CODE           AUTO           0000:e2d0       000001ac\r
+stabinit_TEXT          CODE           AUTO           0000:e480       00000104\r
+fatalerr_TEXT          CODE           AUTO           0000:e590       00000025\r
+allocexc_TEXT          CODE           AUTO           0000:e5c0       000004d7\r
+stabtrav_TEXT          CODE           AUTO           0000:eaa0       000001f3\r
+ljmpinit_TEXT          CODE           AUTO           0000:eca0       00000016\r
+ostput_TEXT            CODE           AUTO           0000:ecc0       000000e7\r
+ostflush_TEXT          CODE           AUTO           0000:edb0       00000058\r
+sdfconfp_TEXT          CODE           AUTO           0000:ee10       0000001e\r
+stablcl_TEXT           CODE           AUTO           0000:ee30       00000005\r
+ostconsf_TEXT          CODE           AUTO           0000:ee40       00000105\r
+ostdestr_TEXT          CODE           AUTO           0000:ef50       000000f4\r
+sdfdestr_TEXT          CODE           AUTO           0000:f050       000000f5\r
+moddtorr_TEXT          CODE           AUTO           0000:f150       00000000\r
+ostopfx_TEXT           CODE           AUTO           0000:f150       00000071\r
+iouwrtit_TEXT          CODE           AUTO           0000:f1d0       00000390\r
+iossetst_TEXT          CODE           AUTO           0000:f560       00000071\r
+iofnoefg_TEXT          CODE           AUTO           0000:f5e0       00000013\r
+stabadt_TEXT           CODE           AUTO           0000:f600       00000127\r
+prwdata_TEXT           CODE           AUTO           0000:f730       00000000\r
+termnate_TEXT          CODE           AUTO           0000:f730       00000051\r
+areaexc_TEXT           CODE           AUTO           0000:f790       00000000\r
+tssize_TEXT            CODE           AUTO           0000:f790       00000053\r
+bittest_TEXT           CODE           AUTO           0000:f7f0       00000047\r
+ljmpdtor_TEXT          CODE           AUTO           0000:f840       000000a5\r
+pure_err_TEXT          CODE           AUTO           0000:f8f0       00000027\r
+stfdsgtn_TEXT          CODE           AUTO           0000:f920       0000009d\r
+stfdspun_TEXT          CODE           AUTO           0000:f9c0       000000e4\r
+stfpbfai_TEXT          CODE           AUTO           0000:fab0       00000004\r
+sdfoverf_TEXT          CODE           AUTO           0000:fac0       000001e9\r
+sdfundrf_TEXT          CODE           AUTO           0000:fcb0       0000018e\r
+stfsbuf_TEXT           CODE           AUTO           0000:fe40       00000081\r
+stfseeko_TEXT          CODE           AUTO           0000:fed0       0000000c\r
+stfseekp_TEXT          CODE           AUTO           0000:fee0       00000021\r
+sdfsync_TEXT           CODE           AUTO           0000:ff10       0000002e\r
+stfdoall_TEXT          CODE           AUTO           0000:ff40       00000040\r
+stfconde_TEXT          CODE           AUTO           0000:ff80       0000006e\r
+stabmod_TEXT           CODE           AUTO           0fff:0000       0000007a\r
+iosinit_TEXT           CODE           AUTO           0fff:0080       00000061\r
+iosconde_TEXT          CODE           AUTO           0fff:00f0       00000011\r
+iosdestr_TEXT          CODE           AUTO           0fff:0110       000000b2\r
+stfdestr_TEXT          CODE           AUTO           0fff:01d0       0000002e\r
+opnewarr_TEXT          CODE           AUTO           0fff:0200       00000005\r
+iosfail_TEXT           CODE           AUTO           0fff:0210       00000009\r
+stfsetb_TEXT           CODE           AUTO           0fff:0220       00000086\r
+ioufrxal_TEXT          CODE           AUTO           0fff:02b0       00000033\r
+stfsync_TEXT           CODE           AUTO           0fff:02f0       00000022\r
+eng_core_DATA1         FAR_CONST      AUTO           1031:0000       000001d4\r
+eng_core_DATA2         FAR_CONST      AUTO           104e:0004       00000113\r
+dos_gfx_DATA1          FAR_CONST      AUTO           104e:0117       00000037\r
+dos_opl2_DATA1         FAR_CONST      AUTO           104e:014e       00000016\r
+main_DATA1             FAR_CONST      AUTO           1065:0000       00000026\r
+opnew_DATA1            FAR_CONST      AUTO           1065:0030       00000000\r
+opdel_DATA1            FAR_CONST      AUTO           1065:0030       00000000\r
+stabthrw_DATA1         FAR_CONST      AUTO           1065:0030       000001ea\r
+stabthrw_DATA2         FAR_CONST      AUTO           1086:000a       000001c7\r
+manendl_DATA1          FAR_CONST      AUTO           10a3:0002       00000000\r
+ioicout_DATA1          FAR_CONST      AUTO           10a4:0000       00000076\r
+ostincch_DATA1         FAR_CONST      AUTO           10ab:0006       00000000\r
+ostinomn_DATA1         FAR_CONST      AUTO           10ab:0006       00000000\r
+iofefg_DATA1           FAR_CONST      AUTO           10ab:0006       00000000\r
+undefed_DATA1          FAR_CONST      AUTO           10ab:0006       0000002c\r
+opdelarr_DATA1         FAR_CONST      AUTO           10af:0000       00000000\r
+vfun_err_DATA1         FAR_CONST      AUTO           10af:0000       00000032\r
+unexpect_DATA1         FAR_CONST      AUTO           10b3:0000       0000000a\r
+unexpect_DATA2         FAR_CONST      AUTO           10b3:000a       00000023\r
+callterm_DATA1         FAR_CONST      AUTO           10b3:002d       00000041\r
+allocexc_DATA1         FAR_CONST      AUTO           10ba:0000       00000024\r
+allocexc_DATA2         FAR_CONST      AUTO           10bc:0004       0000002b\r
+ostput_DATA1           FAR_CONST      AUTO           10bf:0000       00000000\r
+ostflush_DATA1         FAR_CONST      AUTO           10bf:0000       00000000\r
+sdfconfp_DATA1         FAR_CONST      AUTO           10bf:0000       00000044\r
+ostconsf_DATA1         FAR_CONST      AUTO           10bf:0044       00000040\r
+ostdestr_DATA1         FAR_CONST      AUTO           10c8:0000       0000002c\r
+sdfdestr_DATA1         FAR_CONST      AUTO           10c8:0030       0000002c\r
+ostopfx_DATA1          FAR_CONST      AUTO           10cd:000c       00000000\r
+iouwrtit_DATA1         FAR_CONST      AUTO           10cd:000c       00000000\r
+iossetst_DATA1         FAR_CONST      AUTO           10ce:0000       00000056\r
+iofnoefg_DATA1         FAR_CONST      AUTO           10d3:0006       00000000\r
+iofnoefg_DATA1         FAR_CONST      AUTO           10d3:0006       00000026\r
+stabadt_DATA1          FAR_CONST      AUTO           10d6:0000       00000026\r
+termnate_DATA1         FAR_CONST      AUTO           10d8:0006       00000022\r
+pure_err_DATA1         FAR_CONST      AUTO           10d8:0028       0000001e\r
+stfdsgtn_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+stfdspun_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+stfpbfai_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+sdfoverf_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+sdfundrf_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+stfsbuf_DATA1          FAR_CONST      AUTO           10dc:0006       00000000\r
+stfseeko_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+stfseekp_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+sdfsync_DATA1          FAR_CONST      AUTO           10dc:0006       00000000\r
+stfdoall_DATA1         FAR_CONST      AUTO           10dc:0006       00000000\r
+stfconde_DATA1         FAR_CONST      AUTO           10dc:0006       0000003a\r
+iosinit_DATA1          FAR_CONST      AUTO           10dc:0040       00000000\r
+iosconde_DATA1         FAR_CONST      AUTO           10dc:0040       00000012\r
+iosdestr_DATA1         FAR_CONST      AUTO           10e2:0000       00000036\r
+stfdestr_DATA1         FAR_CONST      AUTO           10e5:0006       00000000\r
+opnewarr_DATA1         FAR_CONST      AUTO           10e6:0000       00000000\r
+iosfail_DATA1          FAR_CONST      AUTO           10e6:0000       00000000\r
+stfsetb_DATA1          FAR_CONST      AUTO           10e6:0000       00000000\r
+ioufrxal_DATA1         FAR_CONST      AUTO           10e6:0000       00000000\r
+stfsync_DATA1          FAR_CONST      AUTO           10e6:0000       00000000\r
+main_DATA2             FAR_DATA       AUTO           10e6:0000       00000014\r
+stabthrw_DATA3         FAR_DATA       AUTO           10e6:0014       0000007c\r
+ioicout_DATA1          FAR_DATA       AUTO           10e6:0090       00000063\r
+FAR_DATA               FAR_DATA       AUTO           10e6:00f3       00000000\r
+unexpect_DATA3         FAR_DATA       AUTO           10e6:00f3       00000000\r
+allocexc_DATA3         FAR_DATA       AUTO           10e6:00f3       00000000\r
+sdfconfp_DATA1         FAR_DATA       AUTO           10e6:00f3       00000016\r
+ostconsf_DATA1         FAR_DATA       AUTO           10e6:0109       00000010\r
+ostdestr_DATA1         FAR_DATA       AUTO           10e6:0119       00000000\r
+sdfdestr_DATA1         FAR_DATA       AUTO           10e6:0119       00000000\r
+iossetst_DATA1         FAR_DATA       AUTO           10e6:0119       00000033\r
+stabadt_DATA2          FAR_DATA       AUTO           10e6:014c       00000011\r
+stfconde_DATA1         FAR_DATA       AUTO           10e6:015d       00000000\r
+iosconde_DATA1         FAR_DATA       AUTO           10e6:015d       00000000\r
+iosdestr_DATA1         FAR_DATA       AUTO           10e6:015d       00000000\r
+stfdestr_DATA1         FAR_DATA       AUTO           10e6:015d       00000000\r
+_NULL                  BEGDATA        DGROUP         10fc:0000       00000020\r
+_AFTERNULL             BEGDATA        DGROUP         10fe:0000       00000002\r
+CONST                  DATA           DGROUP         10fe:0002       000000a8\r
+CONST2                 DATA           DGROUP         1108:000a       00000132\r
+_DATA                  DATA           DGROUP         111c:0000       00000844\r
+XIB                    DATA           DGROUP         11a0:0004       00000000\r
+XI                     DATA           DGROUP         11a0:0004       0000004e\r
+XIE                    DATA           DGROUP         11a5:0002       00000000\r
+YIB                    DATA           DGROUP         11a5:0002       00000000\r
+YI                     DATA           DGROUP         11a5:0002       00000012\r
+YIE                    DATA           DGROUP         11a6:0004       00000000\r
+STRINGS                DATA           DGROUP         11a6:0004       00000000\r
+DATA                   DATA           DGROUP         11a6:0004       00000000\r
+_emu_init_start        EMU            DGROUP         11a6:0004       00000000\r
+_emu_init_end          EMU            DGROUP         11a6:0004       00000000\r
+_BSS                   BSS            DGROUP         11a7:0000       0000050a\r
+STACK                  STACK          DGROUP         11f8:0000       00000800\r
+\r
+\r
+                        +----------------+\r
+                        |   Memory Map   |\r
+                        +----------------+\r
+\r
+* = unreferenced symbol\r
++ = symbol only referenced locally\r
+\r
+Address        Symbol\r
+=======        ======\r
+\r
+Module: dos_comm.obj(C:\Z\16\src\lib\dos_comm.c)\r
+0000:0000+     newkb_\r
+0000:00d0      setkb_\r
+0000:01be      keyp_\r
+0000:020c      scankey_\r
+10fc:0200+     _oldkb\r
+10fc:0ab0+     _keep\r
+10fc:0b30+     _keer\r
+10fc:0bb0+     _kee\r
+Module: eng_ai.obj(C:\Z\16\src\eng_ai.cpp)\r
+0000:0230      void far engine::do_artificial_intelligence()\r
+Module: eng_comm.obj(C:\Z\16\src\eng_comm.cpp)\r
+0000:0250      __anonymous_enum far engine::do_communication( char unsigned )\r
+10fc:0204      short unsigned far Notes[]\r
+10fc:0222+     int far qing\r
+10fc:0bb2+     int far xxxx\r
+10fc:0bb4+     int far yyyy\r
+Module: eng_core.obj(C:\Z\16\src\eng_core.cpp)\r
+0000:03f0      far engine::Core::Core()\r
+0000:149a+     void far engine::Core::update()\r
+0000:1728+     void far engine::Core::sound()\r
+0000:1746+     void far engine::Core::graphics()\r
+0000:1764+     void far engine::Core::comm()\r
+0000:178e+     void far engine::Core::ai()\r
+0000:17ac+     __anonymous_enum far engine::Core::_msg()\r
+0000:28e0+     far std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::~list()\r
+0000:2a40+     void far std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::clear()\r
+0000:2b70+     void far std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::remove( void (far engine::Core ::* const far &)())\r
+0000:2d50+     far std::allocator<std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::Node far >:::2d50+\0r Core:list<void (far en)()g::Co>r( std::allocator<void (far engine::Core ::* far)()> const far & )\r
+0000:2d80+     far std::allocator<std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::DoubleLink far >:::2d80+\0::Corecator<std::list<vo)()ifar >e( std::allocator<void (far engine::Core ::* far)()> const far & )\r
+0000:2db0+     far std::allocator<std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::Node far >::~allocator()\r
+0000:2de0+     far std::allocator<std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::DoubleLink far >::~allocator()\r
+0000:2e10+     std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::iterator far std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::erase( std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::iterator )\r
+0000:2fc0+     far std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::Node::Node( std::list<void (far engine::Core ::* far)(),std::allocator<void (far engine::Core ::* far)()> far >::Node const far & )\r
+0000:17d0      void far engine::Core::run()\r
+0000:1818+     bool far engine::Core::init()\r
+0000:1b44+     void far engine::Core::release()\r
+0000:1b80+     void far engine::Core::input()\r
+0000:1ba0+     void far engine::Core::sync()\r
+0000:26aa      far engine::Core::~Core()\r
+Module: eng_gfx.obj(C:\Z\16\src\eng_gfx.cpp)\r
+0000:30e0      void far engine::do_graphics()\r
+Module: eng_snd.obj(C:\Z\16\src\eng_snd.cpp)\r
+0000:3100      void far engine::do_sound()\r
+Module: dos_gfx.obj(C:\Z\16\src\lib\dos_gfx.cpp)\r
+0000:3120      void far setvideo( char unsigned, int )\r
+0000:31be      void far setvbuff( int )\r
+0000:3252+     void far updatevbuff()\r
+0000:3294+     void far cls( char unsigned, char unsigned far * )\r
+0000:32ce+     void far clearscr()\r
+0000:330c+     void far plotpixel( int, int, char unsigned, char unsigned far * )\r
+0000:335a+     void far plotpixelfast( int, int, char unsigned, char unsigned far * )\r
+0000:339a+     void far BlockMove()\r
+0000:349a      void far etesuto( int, int )\r
+0000:34f0      void far qtesuto( int, int, int )\r
+0000:3548+     int far colortest()\r
+0000:359e+     int far colorz()\r
+0000:35f4+     void far ssd( int )\r
+0000:3696      int far ding( int )\r
+10fc:0260+     char unsigned far * far vga\r
+10fc:0264+     int far gq\r
+10fc:0bb6+     char unsigned far * far vaddr\r
+10fc:0bba+     int far old_mode\r
+10fc:0bbc+     int far q\r
+10fc:0bbe+     int far bakax\r
+10fc:0bc0+     int far bakay\r
+10fc:0bc2+     int far xx\r
+10fc:0bc4+     int far yy\r
+10fc:0bc6+     int far sx\r
+10fc:0bc8+     int far sy\r
+10fc:0bca+     char unsigned far coor\r
+Module: dos_opl2.obj(C:\Z\16\src\lib\dos_opl2.cpp)\r
+0000:39b0+     void far WriteFM( int, int )\r
+0000:3a12+     int far ReadFM()\r
+0000:3a36      int far AdlibExists()\r
+0000:3ad0      void far FMReset()\r
+0000:3b24      void far FMKeyOff( int )\r
+0000:3b5c      void far FMKeyOn( int, int, int )\r
+0000:3bc2+     void far FMVoiceVolume( int, int )\r
+0000:3bf4+     void far FMSetVoice( int, __5rfh0rFMInstrument far * )\r
+0000:3d5c      void far fmtest()\r
+0000:3e0e+     int far soundtest()\r
+10fc:0bcc+     int far sq\r
+Module: lib_com.obj(C:\Z\16\src\lib\lib_com.cpp)\r
+0000:3e60      void far wait( long unsigned )\r
+Module: main.obj(C:\Z\16\src\main.cpp)\r
+0000:3ed0      main_\r
+Module: timer.obj(C:\Z\16\src\timer.cpp)\r
+0000:3fb0      far engine::Timer::Timer()\r
+0000:3fdc      long unsigned far engine::Timer::start_timer()\r
+0000:4020      double far engine::Timer::elapsed_timer()\r
+0000:4076+     double far engine::Timer::time_in_seconds()\r
+0000:40c0+     double far engine::Timer::time_in_seconds( long unsigned )\r
+0000:4108+     long unsigned far engine::Timer::_time()\r
+0000:4138      far engine::Timer::~Timer()\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(inp.c)\r
+0000:4170      inp_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(outp.c)\r
+0000:4178      outp_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(d_setvec.c)\r
+0000:4182      _dos_setvect_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(d_getvec.c)\r
+0000:418f      _dos_getvect_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(cmodel)\r
+0000:419a      _big_code_\r
+0000:419a*     CodeModelMismatch\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(cppdata.cpp)\r
+10fc:0bce      __wint_thread_data\r
+10fc:0bf2      __compiled_under_generic\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(sound.c)\r
+0000:419a      sound_\r
+0000:4234      nosound_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(delay.c)\r
+0000:4254      delay_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(fsregist.cpp)\r
+0000:c430+     __wcpp_4_dispatch_dummy__\r
+0000:c46a      __wcpp_4_fs_lookup__\r
+0000:c580      __wcpp_4_fs_handler_rtn__\r
+0000:c704      __wcpp_4_unwind_global__\r
+0000:c77c      __wcpp_4_raise_exception__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(opnew.cpp)\r
+0000:c7e0      void far * far operator new( int unsigned )\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(setjmp)\r
+0000:43b4      _setjmp_\r
+0000:4409      longjmp_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(opnewp.cpp)\r
+0000:c860      void far * far operator new( int unsigned, void far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(opdel.cpp)\r
+0000:c870      void far operator delete( void far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabthrw.cpp)\r
+0000:d210+     far std::exception::exception()\r
+0000:d270+     far std::exception::exception( std::exception const far & )\r
+0000:d2f0+     far std::exception::exception( char const far * )\r
+0000:d350+     far std::exception::~exception()\r
+0000:d3f0+     char const far * far std::exception::what() const\r
+0000:d460+     far std::bad_exception::bad_exception()\r
+0000:d4e0+     far std::bad_exception::bad_exception( std::bad_exception const far & )\r
+0000:d540+     far std::bad_exception::~bad_exception()\r
+0000:d062      __wcpp_4_rethrow__\r
+0000:d0c2*     __wcpp_4_catch_done__\r
+0000:d154      __wcpp_4_throw__\r
+0000:d1b0*     __wcpp_4_throw_zero__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(manendl.cpp)\r
+0000:d630      std::ostream far & far std::endl( std::ostream far & )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ioicout.cpp)\r
+10fc:0c38      std::ostream near std::cout\r
+0000:d6ae+     far cout_initfini::cout_initfini()\r
+0000:d6bc+     far cout_initfini::~cout_initfini()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostincch.cpp)\r
+0000:d700      std::ostream far & far std::ostream::operator <<( char const far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostinomn.cpp)\r
+0000:d7c0      std::ostream far & far std::ostream::operator <<( std::ostream far & (far *)())\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(getch.c)\r
+0000:4466      getch_\r
+Module: c:\fdos\WATCOM/lib286/dos\emu87.lib(initemu.asm)\r
+0000:8000      FJSRQQ\r
+0000:0632      FISRQQ\r
+0000:1632*     FIERQQ\r
+0000:5c32      FIDRQQ\r
+0000:a23d      FIWRQQ\r
+0000:c000      FJCRQQ\r
+0000:4000*     FJARQQ\r
+0000:0e32      FICRQQ\r
+0000:fe32*     FIARQQ\r
+0000:44b8      __init_87_emulator\r
+0000:4549*     __fini_87_emulator\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fltused.c)\r
+10fc:02de      _fltused_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iofefg.cpp)\r
+10fc:0a56      __ppfltused_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(_8087)\r
+10fc:02e0      __8087\r
+10fc:02e1      __real87\r
+10fc:02e2      __dos87emucall\r
+10fc:02e4      __dos87real\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(intx086.c)\r
+0000:45c0+     int86x_\r
+0000:4659      int86_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(ffree.c)\r
+0000:4686*     _ffree_\r
+0000:4686      free_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(calloc.c)\r
+0000:46cc      calloc_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(exit.c)\r
+0000:470b+     __null_int23_exit_\r
+0000:470c      exit_\r
+0000:473d*     _exit_\r
+10fc:02e6+     ___int23_exit\r
+10fc:02ea      ___FPE_handler_exit\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(rand.c)\r
+0000:4756      rand_\r
+0000:4798*     srand_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(printf.c)\r
+0000:47bb      printf_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(clockdos.c)\r
+0000:47ea+     __ibm_bios_get_ticks_\r
+0000:4861      clock_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(kbhit.c)\r
+0000:4888      kbhit_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(undefed.cpp)\r
+0000:d830      __wcpp_4_undefed_cdtor__\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(cstart)\r
+10fc:0000*     __nullarea\r
+10fc:02fa*     __ovlflag\r
+10fc:02fb*     __intno\r
+10fc:02fc*     __ovlvec\r
+0000:48a0      _cstart_\r
+0000:4973*     _Not_Enough_Memory_\r
+0000:4aa7      __exit_\r
+0000:4ac6      __do_exit_with_msg__\r
+0000:4b24      __GETDS\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(fsroot.cpp)\r
+10fc:0a68      ___wcpp_4_data_init_fs_root_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(nonibm.c)\r
+0000:4b2e+     __is_nonIBM_\r
+10fc:0300      ___NonIBM\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(i4d)\r
+0000:4b76      __I4D\r
+0000:4bc5      __U4D\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(i4m)\r
+0000:4c4a      __I4M\r
+0000:4c4a      __U4M\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabdtor.cpp)\r
+0000:dbe8      __wcpp_4_destruct_internal__\r
+0000:dc06*     __wcpp_4_destruct_all__\r
+0000:dc08*     __wcpp_4_destruct__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabdisp.cpp)\r
+0000:df10      __wcpp_4_dispatchable__\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fmalloc.c)\r
+0000:4c62*     _fmalloc_\r
+0000:4c62      malloc_\r
+10fc:0302+     ___fheap\r
+10fc:0304      ___fheapRover\r
+10fc:0306      ___LargestSizeB4Rover\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(crwdata)\r
+10fc:0308      __curbrk\r
+10fc:0310      __STACKLOW\r
+10fc:0312      __STACKTOP\r
+10fc:0314      __cbyte\r
+10fc:0316      __child\r
+10fc:0318      __no87\r
+10fc:0326      ___FPE_handler\r
+10fc:030a      __psp\r
+10fc:031a      __get_ovl_stack\r
+10fc:031e      __restore_ovl_stack\r
+10fc:0322      __close_ovl_file\r
+10fc:032a      __LpCmdLine\r
+10fc:032e      __LpPgmName\r
+10fc:030c      __osmajor\r
+10fc:030d      __osminor\r
+10fc:030e      __osmode\r
+10fc:030f      __HShift\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(ljmphdl.c)\r
+10fc:0332      ___longjmp_handler\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(dtorarst.cpp)\r
+0000:df90      __wcpp_4_dtor_array_store__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(opdelarr.cpp)\r
+0000:dfc0      void far operator delete []( void far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(exc_pr.cpp)\r
+0000:dfd0      far _EXC_PR::_EXC_PR( _RTCTL far *, RW_DTREG far *, EXCSTATE )\r
+0000:e054      far _EXC_PR::~_EXC_PR()\r
+0000:e074      far _EXC_PR_FREE::_EXC_PR_FREE( _RTCTL far *, RW_DTREG far *, EXCSTATE, ACTIVE_EXC far * )\r
+0000:e0a2      far _EXC_PR_FREE::~_EXC_PR_FREE()\r
+0000:e0e4      far _EXC_PR_DTOR::_EXC_PR_DTOR( _RTCTL far *, RW_DTREG far *, EXCSTATE, ACTIVE_EXC far * )\r
+0000:e106      far _EXC_PR_FNEXC::_EXC_PR_FNEXC( _RTCTL far *, RW_DTREG far *, RW_DTREG far *, ACTIVE_EXC far * )\r
+0000:e154      far _EXC_PR_FNEXC::~_EXC_PR_FNEXC()\r
+0000:e158      far _EXC_PR_DTOR::~_EXC_PR_DTOR()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(vfun_err.cpp)\r
+0000:e190      __wcpp_4_undef_vfun__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(unexpect.cpp)\r
+0000:e1c0      void far std::unexpected()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(callterm.cpp)\r
+0000:e280      __wcpp_4_corrupted_stack__\r
+0000:e298      __wcpp_4_call_terminate__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(tsequiv.cpp)\r
+0000:e2d0      __wcpp_4_ts_refed__\r
+0000:e2f0+     __wcpp_4_ts_pnted__\r
+0000:e31a      __wcpp_4_ts_equiv__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabinit.cpp)\r
+0000:e480      __wcpp_4_exc_setup__\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(stack086.c)\r
+0000:4d71      stackavail_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(fatalerr.cpp)\r
+0000:e590      __wcpp_4_fatal_runtime_error__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(allocexc.cpp)\r
+0000:e5d2      __wcpp_4_alloc_exc__\r
+0000:e8b0      __wcpp_4_free_exc__\r
+0000:e924      __wcpp_4_find_active__\r
+0000:e98e      __wcpp_4_dtor_free_exc__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabtrav.cpp)\r
+0000:eaa0      __wcpp_4_stab_entry__\r
+0000:eaba*     __wcpp_4_stab_trav_comp__\r
+0000:ebe0      __wcpp_4_stab_trav_init__\r
+0000:ec0e      __wcpp_4_stab_trav_next__\r
+0000:ec84      __wcpp_4_stab_trav_move__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ljmpinit.cpp)\r
+10fc:0a7a      ___wcpp_4_data_init_longjmp_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostput.cpp)\r
+0000:ecc0      std::ostream far & far std::ostream::put( char )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostflush.cpp)\r
+0000:edb0      std::ostream far & far std::ostream::flush()\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(iobaddr.c)\r
+0000:4d7f      __get_std_stream_\r
+0000:4d7f*     __get_std_file_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(sdfconfp.cpp)\r
+0000:ee10      far stdiobuf::stdiobuf( __iobuf far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stablcl.cpp)\r
+0000:ee30      __wcpp_4_lcl_register__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostconsf.cpp)\r
+0000:ee40      far std::ostream::ostream( std::streambuf far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostdestr.cpp)\r
+0000:ef50      far std::ostream::~ostream()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(sdfdestr.cpp)\r
+0000:f050      far stdiobuf::~stdiobuf()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(moddtorr.cpp)\r
+10fc:0a98      ___wcpp_4_data_module_dtor_ref_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ostopfx.cpp)\r
+0000:f150      int far std::ostream::do_opfx()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iouwrtit.cpp)\r
+0000:f1d0      int far __WATCOM_ios::writeitem( std::ostream far &, char const far *, int, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iossetst.cpp)\r
+0000:f5a0+     far std::ios::failure::failure( std::ios::failure const far & )\r
+0000:f5b0+     far std::ios::failure::~failure()\r
+0000:f5c0+     far __WATCOM_exception::__WATCOM_exception( __WATCOM_exception const far & )\r
+0000:f5d0+     far __WATCOM_exception::~__WATCOM_exception()\r
+0000:f560      void far std::ios::setstate( int )\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(init8087)\r
+0000:4d9e      __init_8087_emu\r
+0000:4da4      __x87id\r
+Module: c:\fdos\WATCOM/lib286/dos\emu87.lib(emu8087.asm)\r
+0000:4ef4      __int34\r
+0000:4f31      __int3c\r
+Module: c:\fdos\WATCOM/lib286/dos\emu87.lib(dosinit.asm)\r
+0000:783a      ___dos87emucall\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(setefg.c)\r
+0000:7878      __setEFGfmt_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iofnoefg.cpp)\r
+10fc:03a0      void (far * far __EFG_cnvs2d)( char far *, double far * )\r
+10fc:03a4      int (far * far __EFG_cnvd2f)( double far *, float far * )\r
+10fc:03a8      void (far * far __EFG_LDcvt)( __g4aa8long_double far *, cvt_info far *, char far * )\r
+10fc:03ac      char far * (far * far __EFG_fcvt)( double, int, int far *, int far * )\r
+10fc:03b0      void (far * far __EFG__FDLD)( double near *, __g4aa8long_double near * )\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(cnvs2d.c)\r
+0000:7896      __cnvs2d_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(cnvd2f.c)\r
+0000:78d5      __cnvd2f_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(ldcvt.c)\r
+0000:7aad      _LDScale10x_\r
+0000:8010      __LDcvt_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(_i_fcvt_.asm)\r
+0000:8546      _fcvt_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(cnvd2ld.c)\r
+0000:854b      __cnvd2ld_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(chk8087.c)\r
+0000:857c*     _fpreset_\r
+0000:85a7      __init_8087_\r
+0000:85da+     __default_sigfpe_handler_\r
+0000:85ed      __chk8087_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(intr.c)\r
+0000:865d      intr_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(segread.c)\r
+0000:8671      segread_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(nmalloc.c)\r
+0000:8691      _nmalloc_\r
+10fc:0440      ___nheapbeg\r
+10fc:0442      ___MiniHeapRover\r
+10fc:0444      ___LargestSizeB4MiniHeapRover\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(mem.c)\r
+0000:8770      __MemAllocator\r
+0000:883a      __MemFree\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(nfree.c)\r
+0000:8997      _nfree_\r
+10fc:0c6a+     ___MiniHeapFreeRover\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(initrtns.c)\r
+0000:8acd      __InitRtns\r
+0000:8acd*     __FInitRtns\r
+0000:8b28      __FiniRtns\r
+0000:8b28*     __FFiniRtns\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(iob.c)\r
+10fc:0446      ___iob\r
+10fc:05ae*     __fmode\r
+10fc:0c6c      ___OpenStreams\r
+10fc:0c70      ___ClosedStreams\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fprtf.c)\r
+0000:8ba6      __fprtf_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(xmsg.c)\r
+0000:8c71      __exit_with_msg_\r
+0000:8c76      __fatal_runtime_error_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(cmain086.c)\r
+0000:8c94      __CMain\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(uselfn.c)\r
+10fc:05b0      ___uselfn\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(dosseg)\r
+0000:8cc0      __DOSseg__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabadt.cpp)\r
+0000:f600+     void far * far dtor_the_array( _RTARCTOR far * )\r
+0000:f670+     far _RTARCTOR::~_RTARCTOR()\r
+0000:f690      __wcpp_4_dtor_array__\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(hpgrw086.c)\r
+0000:8cc1      __CMain_nheapgrow_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(growseg.c)\r
+0000:8cc6      __GrowSeg_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(allocseg.c)\r
+0000:8db8      __AllocSeg_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fmemneed.c)\r
+0000:8e4f      __fmemneed_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(prwdata.cpp)\r
+10fc:0c74      __wint_pure_error_flag\r
+10fc:0c76      __wint_undef_vfun_flag\r
+10fc:0c78      __wint_module_init\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(termnate.cpp)\r
+0000:f730      void far std::terminate()\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(enterdb.c)\r
+0000:8e52      __EnterWVIDEO_\r
+10fc:05b2+     ___WD_Present\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(areaexc.cpp)\r
+10fc:05b4      ___EXC_AREA\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(tssize.cpp)\r
+0000:f7a2      __wcpp_4_ts_size__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(bittest.cpp)\r
+0000:f7f0      __wcpp_4_bit_test__\r
+0000:f814      __wcpp_4_bit_off__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ljmpdtor.cpp)\r
+0000:f8de      __wcpp_4_lj_handler__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(pure_err.cpp)\r
+0000:f8f0      __wcpp_4_pure_error__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfdsgtn.cpp)\r
+0000:f920      int far std::streambuf::do_sgetn( char far *, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfdspun.cpp)\r
+0000:f9c0      int far std::streambuf::do_sputn( char const far *, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfpbfai.cpp)\r
+0000:fab0      int far std::streambuf::pbackfail( int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(sdfoverf.cpp)\r
+0000:fac0      int far stdiobuf::overflow( int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(sdfundrf.cpp)\r
+0000:fcb0      int far stdiobuf::underflow()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfsbuf.cpp)\r
+0000:fe40      std::streambuf far * far std::streambuf::setbuf( char far *, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfseeko.cpp)\r
+0000:fed0      long far std::streambuf::seekoff( long, int, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfseekp.cpp)\r
+0000:fee0      long far std::streambuf::seekpos( long, int )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(sdfsync.cpp)\r
+0000:ff10      int far stdiobuf::sync()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfdoall.cpp)\r
+0000:ff40      int far std::streambuf::doallocate()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfconde.cpp)\r
+0000:ff80      far std::streambuf::streambuf()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stabmod.cpp)\r
+0fff:0000      __wcpp_4_module_dtor__\r
+0fff:0056      __wcpp_4_mod_register__\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iosinit.cpp)\r
+0fff:0080      void far std::ios::init( std::streambuf far * )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iosconde.cpp)\r
+0fff:00f0      far std::ios::ios()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iosdestr.cpp)\r
+0fff:0110      far std::ios::~ios()\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfdestr.cpp)\r
+0fff:01d0      far std::streambuf::~streambuf()\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(flush.c)\r
+0000:8e76      __flush_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(opnewarr.cpp)\r
+0fff:0200      void far * far operator new []( int unsigned )\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(iosfail.cpp)\r
+0fff:0210      far std::ios::failure::failure( int )\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(8087cw.c)\r
+10fc:09d0      __8087cw\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(noefgfmt.c)\r
+10fc:09d2      ___EFG_printf\r
+10fc:09d6      ___EFG_scanf\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(efgfmt.c)\r
+0000:8fbc      _EFG_Format_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(strtod.c)\r
+0000:96c8+     __Strtold_\r
+0000:987b      strtod_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(ldclass.c)\r
+0000:9a1d      __LDClass_\r
+0000:9a6b*     _FLClass_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(efcvt.c)\r
+0000:9ac8*     ecvt_\r
+0000:9b02      fcvt_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(save8087.c)\r
+10fc:09da      ___Save8087\r
+10fc:09de      ___Rest8087\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(grabfp87.c)\r
+0000:9b45      __GrabFP87_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(dointr)\r
+0000:9b78      _DoINTR_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(nmemneed.c)\r
+0000:9ef1      __nmemneed_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(grownear.c)\r
+0000:9f79      __LastFree_\r
+0000:9ff3      __ExpandDGROUP_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(sgdef086)\r
+10fc:0a44      __Start_XI\r
+10fc:0a92      __End_XI\r
+10fc:0a92      __Start_YI\r
+10fc:0aa4      __End_YI\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(initfile.c)\r
+0000:a104      __InitFiles_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(ioexit.c)\r
+0000:a252*     fcloseall_\r
+0000:a259      __full_io_exit_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fputc.c)\r
+0000:a263      fputc_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(ioalloc.c)\r
+0000:a333      __ioalloc_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(prtf.c)\r
+0000:a3cd      __prtf_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(___argc.c)\r
+10fc:0c7c      ____Argv\r
+10fc:0c80      ____Argc\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(amblksiz.c)\r
+10fc:09e2      __amblksiz\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(heapgrow.c)\r
+0000:b19b*     _heapgrow_\r
+0000:b19b*     _fheapgrow_\r
+0000:b19c      _nheapgrow_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(heapen.c)\r
+0000:b216*     _heapenable_\r
+10fc:09e4      ___heap_enabled\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fwrite.c)\r
+0000:b227      fwrite_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(memmove.c)\r
+0000:b422      memmove_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fgetc.c)\r
+0000:b498+     __fill_buffer_\r
+0000:b58d      fgetc_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfsetb.cpp)\r
+0fff:0220      void far std::streambuf::setb( char far *, char far *, int )\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(liballoc.c)\r
+0000:b632      _plib_malloc_\r
+0000:b637      _plib_free_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(ioufrxal.cpp)\r
+0fff:02b0      void far __WATCOM_ios::free_xalloc_storage( std::ios far * )\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(__lseek.c)\r
+0000:b63c      __lseek_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(qwrit.c)\r
+0000:b676      __qwrite_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(seterrno.c)\r
+0000:b6d3      __set_errno_\r
+0000:b6e7*     __set_EDOM_\r
+0000:b6f9      __set_ERANGE_\r
+0000:b70b*     __set_EINVAL_\r
+0000:b720      __set_doserrno_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fsync.c)\r
+0000:b72c      fsync_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(rtcntrl.c)\r
+0000:b731*     _SetLD64bit_\r
+0000:b73c*     _SetLD80bit_\r
+0000:b747      _LDisDouble_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(istable.c)\r
+10fc:00ca      __IsTable\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(tolower.c)\r
+0000:b75a      tolower_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(bufld086)\r
+0000:b768      __ZBuf2LD\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(inf_nan.c)\r
+10fc:01cc*     ___f_infinity\r
+10fc:01d0*     ___f_posqnan\r
+10fc:01d4      ___d_infinity\r
+10fc:01dc      ___d_posqnan\r
+10fc:01e4*     ___ld_infinity\r
+10fc:01ec*     ___ld_posqnan\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(hugeval.c)\r
+10fc:01f4      __HugeValue\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(cvtbuf.c)\r
+0000:b830      __CVTBuffer_\r
+Module: c:\fdos\WATCOM/lib286\math87l.lib(cvt.c)\r
+0000:b837      __cvt_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fpe87)\r
+0000:b8d6      __Init_FPE_handler_\r
+0000:b90f      __Fini_FPE_handler_\r
+0000:b946*     __FPEHandler\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(sbrk.c)\r
+0000:bbd8*     sbrk_\r
+0000:bbe8      __brk_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fclose.c)\r
+0000:bc52+     __doclose_\r
+0000:bd03      __shutdown_stream_\r
+0000:bd1d*     fclose_\r
+10fc:0eae+     ___RmTmpFileFn\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(freefp.c)\r
+0000:bd68      __freefp_\r
+0000:bde3      __purgefp_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(chktty.c)\r
+0000:be24      __chktty_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(wctomb.c)\r
+0000:be4f      wctomb_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(itoa.c)\r
+0000:be78+     utoa_\r
+0000:bed5      itoa_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(strupr.c)\r
+0000:bef9      strupr_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(mbisdbcs.c)\r
+10fc:0eb2      ___IsDBCS\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(mbislead.c)\r
+0000:bf1b*     _ismbblead_\r
+10fc:0eb4      ___MBCSIsTable\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(lltoa.c)\r
+0000:bf37      ulltoa_\r
+0000:c01c*     lltoa_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(ltoa.c)\r
+0000:c07e      ultoa_\r
+0000:c0ed*     ltoa_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(errno.c)\r
+0000:c11c      __get_errno_ptr_\r
+0000:c123      __get_doserrno_ptr_\r
+10fc:0fb6+     _errno\r
+10fc:0fb8+     __doserrno\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(flushall.c)\r
+0000:c12a      __flushall_\r
+0000:c187*     flushall_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(gtche.c)\r
+0000:c18c      getche_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(qread.c)\r
+0000:c1a6      __qread_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(dosret.c)\r
+0000:c1c6*     _dosretax_\r
+0000:c1cb*     _dosret0_\r
+0000:c1d2      __set_errno_dos_\r
+0000:c230*     __set_errno_dos_reterr_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(iomode.c)\r
+0000:c23b      __GetIOMode_\r
+0000:c260      __SetIOMode_nogrow_\r
+10fc:0a12+     ___NFiles\r
+10fc:0a14+     ___init_mode\r
+10fc:0a3c+     ___io_mode\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(filedos.c)\r
+0000:c283*     _dos_close_\r
+0000:c291      _dos_commit_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(fpeint.c)\r
+10fc:0a40      ___FPE_int\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(_clse.c)\r
+0000:c2b9      __close_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(isatt.c)\r
+0000:c2ec      isatty_\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(alphabet.c)\r
+10fc:00a4      ___Alphabet\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(mbinit.c)\r
+0000:c346      __mbinit_\r
+10fc:0a42+     ___MBCodePage\r
+Module: c:\fdos\WATCOM/lib286/dos\clibl.lib(doserror)\r
+0000:c422      __doserror_\r
+Module: c:\fdos\WATCOM/lib286\plbxl.lib(stfsync.cpp)\r
+0fff:02f0      int far std::streambuf::sync()\r
+\r
+\r
+                        +--------------------+\r
+                        |   Libraries Used   |\r
+                        +--------------------+\r
+\r
+c:\fdos\WATCOM/lib286\math87l.lib\r
+c:\fdos\WATCOM/lib286/dos\emu87.lib\r
+c:\fdos\WATCOM/lib286/dos\clibl.lib\r
+c:\fdos\WATCOM/lib286\plbxl.lib\r
+\r
+\r
+                        +-----------------------+\r
+                        |   Linker Statistics   |\r
+                        +-----------------------+\r
+\r
+Stack size:  0800 (2048.)\r
+Memory size:  00012780 (75648.)\r
+Entry point address: 0000:48a0\r
+Link time: 00:01.53\r
diff --git a/doc/16.16 b/doc/16.16
new file mode 100644 (file)
index 0000000..0f45195
--- /dev/null
+++ b/doc/16.16
@@ -0,0 +1,145 @@
+ #license:GPL-3+ Welcome to PiratePad!
+
+This pad text is synchronized as you type, so that everyone viewing this page sees the same text.  This allows you to collaborate seamlessly on documents wwwwwwwwwww!
+Oh wow this is like
+So cool!
+
+Project 16: a project to make an epic as fuck modern 16bit dos game that can run on old and new hardware!!!!
+
+
+Ideas:
+  ====  Story: 
+The game takes place in year 4049
+
+*POST MODE WWWW*
+
+Player: What happend?
+*incomming signal*
+unkown: someone setup us the bomb!
+Player: !!
+Player: Eye get signal!!!
+unknown: WHAT?
+*player activates the main screen*
+
+  ====  Player: you play as a cute synthetic robotic loli whit a massive white tshirt on who just "woke up". She has the personality of yours truly! wwww she has retro computer ports in hidden locations <incert locations here>. she is actually home made in a lab. there is ALOT of OLD as FUCK computers there wwww (like a 486 PC) which explains the serial ports, parallell ports, game ports, etc. wwww She is EXTREAMLY intelligent. wwww but needs to know more wwww and is extreamly curious about things (just like sparky4 wwwwwww)
+    
+  ==== Gameplay:
+    She needs to get new weapons so that she can turn enemies into friends to fight the evil and get rid of EVILNESS AND GLITCHES!! The LAST LEVEL IS GLITCH Dimention AND THE MUSIC IS ALL STRANGE AND MESSED UP and the caps, num, scroll lights blink crazyly and randomly. the floppy drive will sing O_o
+    this will scare the shit out of people... BUT I LOVE IT. 
+    
+    FLOPPIES WILL BE EVERYWHERE FSDFASFSDFSDA
+    COLLECT FLOPPIES FOR POWERUPS and weapons
+    the old school 5.25 inch floppy are save points?
+    all sorts of floppy disks will make appearances
+    including the demi disk and shit ww
+    DEMI DISK!?
+    Can we have ZIP disks too w yes
+    
+    holy shit LAZOR DISKS HUUUUUUEEEGG DISKS
+    
+    shitty bluray disks will be used as shuriken w
+    
+    The game's menu is actually a DOS TUI
+    And between levels you can access the cute synthetic robot lolis comandline and change settings in her AUTOEXEC FILE! 
+
+PLAY
+LIKE
+CONTRA
+EXCEPT CUTER AND FUNNIER < EYE AM OKAY WITH THIS
+
+THIS GAME IS GOING TO BE SO COOL. EYE ACTUALLY WANT TO MAKE IT. :D
+THEN DO IT
+I DONT KNOW PROGRAMMING ;___________________________;
+BUT I WILL LEARN MORE OVER SUMMER AND WE WILL DO THIS
+
+==== Resources:
+http://www3.telus.net/alexander_russell/course/chapter_1.htm
+http://philipstorr.id.au/pcbook/book3/scancode.htm
+http://www.brackeen.com/vga/intro.html
+http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/
+
+    ==    official channel    ==    
+irc://irc.sparky4.net/16
+p.s. use port 6667
+
+Goals:
+    -MUSIC! 
+    -GRAPHIX
+    -Cute synthetic robotic loli
+    -Control code
+    -Output code
+    -A GAME! :D
+    -code over all wwww
+
+Project 16: a project to make an epic as fuck modern 16bit dos game that can run on old and new hardware!!!!
+
+
+Ideas:
+  ====  Story: 
+*POST MODE WWWW*
+
+Player: What happend?
+*incomming signal*
+unkown: someone setup us the bomb!
+Player: !!
+Player: Eye get signal!!!
+unknown: WHAT?
+*player activates the main screen*
+
+  ====  Player: you play as a cute synthetic robotic loli whit a massive white tshirt on who just "woke up". She has the personality of yours truly! wwww she has retro computer ports in hidden locations <incert locations here>. she is actually home made in a lab. there is ALOT of OLD as FUCK computers there wwww (like a 486 PC) which explains the serial ports, parallell ports, game ports, etc. wwww She is EXTREAMLY intelligent. wwww but needs to know more wwww and is extreamly curious about things (just like sparky4 wwwwwww)
+    
+  ==== Gameplay:
+    She needs to get new weapons so that she can turn enemies into friends to fight the evil and get rid of EVILNESS AND GLITCHES!! The LAST LEVEL IS GLITCH Dimention AND THE MUSIC IS ALL STRANGE AND MESSED UP and the caps, num, scroll lights blink crazyly and randomly. the floppy drive will sing O_o
+    this will scare the shit out of people... BUT I LOVE IT. 
+    
+    FLOPPIES WILL BE EVERYWHERE FSDFASFSDFSDA
+    COLLECT FLOPPIES FOR POWERUPS and weapons
+    the old school 5.25 inch floppy are save points?
+    all sorts of floppy disks will make appearances
+    including the demi disk and shit ww
+    DEMI DISK!?
+    Can we have ZIP disks too w yes
+    
+    holy shit LAZOR DISKS HUUUUUUEEEGG DISKS
+    
+    shitty bluray disks will be used as shuriken w
+    
+    The game's menu is actually a DOS TUI
+    And between levels you can access the cute synthetic robot lolis comandline and change settings in her AUTOEXEC FILE! 
+
+PLAY
+LIKE
+CONTRA
+EXCEPT CUTER AND FUNNIER < EYE AM OKAY WITH THIS
+
+THIS GAME IS GOING TO BE SO COOL. EYE ACTUALLY WANT TO MAKE IT. :D
+THEN DO IT
+I DONT KNOW PROGRAMMING ;___________________________;
+BUT I WILL LEARN MORE OVER SUMMER AND WE WILL DO THIS
+
+==== Resources:
+http://www3.telus.net/alexander_russell/course/chapter_1.htm
+http://philipstorr.id.au/pcbook/book3/scancode.htm
+http://www.brackeen.com/vga/intro.html
+http://ftp.lanet.lv/ftp/mirror/x2ftp/msdos/
+
+    ==    official channel    ==    
+irc://irc.sparky4.net/16
+p.s. use port 6667
+
+Goals:
+    -MUSIC! 
+    -GRAPHIX
+    -Cute synthetic robotic loli
+    -Control code
+    -Output code
+    -A GAME! :D
+    -code over all wwww
+    -E3 2013
+
+
+== Goals of sparky4:
+1. make a simple basic synthesizer wwww (this will be the base core of the game)
+and master the OPL2 chip
+
diff --git a/doc/16story.txt b/doc/16story.txt
new file mode 100644 (file)
index 0000000..d5fe992
--- /dev/null
@@ -0,0 +1,12 @@
+you play as a cute synthetic robotic loli whit a massive white tshirt on who just "woke up"\r
+\r
+*POST MODE WWWW*\r
+\r
+Player: What happend?\r
+*incomming signal*\r
+unkown: someone setup us the bomb!\r
+Player: !!\r
+Player: Eye get signal!!!\r
+unknown: WHAT?\r
+*player activates the main screen*\r
+\r
diff --git a/doc/ojoww.cpp b/doc/ojoww.cpp
new file mode 100644 (file)
index 0000000..c63d88e
--- /dev/null
@@ -0,0 +1,132 @@
+?!
+This  is a quick C++ tutorial, first in C++ you can use C files, you make a C  file and give it extension .c (if no header), next to use it in your  C++ you include it as follows
+#extern "C" {
+     #include "myfile.c"
+}
+I don't remember if it's # for extern anyway...
+
+
+In  C++ and well, C too, you use macros and stuff and do things to the  compiler does not goof, one typical construction is "if (something) has  been defined, then add this code, and after that code end if" for  example it looks like this:
+#ifdef WIN32
+     #include <windows.h>
+#endif
+
+And you get different commands too like #ifndef which means if it is not yet defined, and #else, and #define  which defines something, and so on. So another useful construction you  can use for C++ to avoid stuff like confusing the compiler into  including code more than once is by saying, well if you haven't included  it yet, then include it please, or rather, if you haven't defined my  flag,...
+...then  define my flag, and then add my code, and then close that block. So  next time it looks at the same file it goes, oh I already have that one,  ok next!
+You do it like this
+#ifndef _FILENAME_H_
+#define _FILENAME_H_
+//code here
+#endif
+The  _FILENAME_H_ is just supposed to be something unique, so usually when  you write out a filename with caps and underscore you are guaranteed a  unique flag that wont mess up your code. Remember #define defines something AT COMPILE TIME, not runtime.
+
+
+In  C++ you really, really, really have to separate your code more than in  maybe C. But the same rules apply, you have to alert the compiler of a  function before you implement the function. For example:
+void myfunc();
+int main()
+{
+     myfunc();
+     return 0;
+}
+void myfunc()
+{
+    printf("huehuehuehue");
+}
+In  C++ you do this also, this is for the compiler otherwise it doesn't  know what the hell you are doing you moron. But it is also for yourself  and other people. This is because you might want to change exactly how  your functions do what you want them to do, but you don't necessarily  want to change that you have a function that is supposed to do something  important. That is why you declare...
+...everything  as "in the best situation I have this function, it takes these  arguments and returns this to me" and separate that from how you  actually do it.
+The  declarations all go in header files with an extension .h and are  included in all the files that use the code, including the file that  implements the functions. The file that implements the functions has  extension .cpp and you never include this file anywhere. NEVER EVER!   Because these are your implementations, not your descriptions. You only  include the headers, in their respective .cpp...
+...file,  hopefully with the SAME NAME except for extension, and include only the  header also in any file that uses that code too.
+The header (.h)  is the file you want to start with the #ifndef, #define, and end with #endif,  stuff. Not the implementation file (.cpp), if it's only in the header  it works find, if it's in the .cpp too then you will probably break it  at compile time.
+A  class is like a struct, or object. Think of them like defining your own  types, with complex properties/members, and functions/methods. An  example of using classes, already made could be this:
+#include "cheetamen.h"
+int main()
+{
+     Cheetamen cheeta_one; //one cheetamen
+     Cheetamen cheeta_two; //two cheetamen
+     cheeta_one.happy();
+     cheeta_one.nr = 57;
+     cheeta_two.sad();
+     cheeta_two.nr = 12;
+     printf("Cheetaman %d is very %s", cheeta_one.nr, cheeta_one.get_state());
+     printf("Cheetaman %d is very %s", cheeta_two.nr, cheeta_two.get_state());
+     return 0;
+}
+And that would return
+Cheetaman 57 is very happy
+Cheetaman 12 is very sad
+Something like that, depending on what get state does.
+You define instances of a class with new, and get free up memory with delete.
+Cheetaman *cheeta;
+cheeta = new Cheetaman(1, "happy");
+cheeta = new Cheetaman();
+delete(cheeta);
+You  now have a memory leak you baka!!  Ok remember to delete everything  after using it, or save a pointer to it somewhere you can find it again  later.
+So  a class is like a struct but instead it is called class, with access  modifiers, public so anything can be accessed, protected it can be  messed with, and private it can only be affected internally by the class  itself. This is important. If you do this:
+cheeta.nr = 7;
+/*Then  you set the nr member to 7, but if nr is private you can't, so you need  a function part of Cheetamen to update it. The reason for this is  because you can tell other people what to do, you can only ask them to  do something.*/
+Add classes to a namespace.
+namespace hereisaname {
+ // all functions and stuff in the name space
+}
+You  can declare namespace in other files, it just adds them to the  namespace, this way you can have a lot of similar functions and stuff in  different namespaces. It qualifies their unique names to (namespace  name)::(member name) so it works like a prefix, I guess?  Anyway moving  on.
+class Cheetaman {
+public:
+    //this is a class
+    Cheetaman(); //default constructor, this is always called, unless you use another constructor
+     Cheetaman(int x, int y); //overloaded constructor, this is called  when you put two ints in, so this is called instead of default.
+    void happy();
+    void sad();
+    const char * get_state();
+     int nr;
+    ~Cheetaman();
+private:
+    const char *state;
+};
+That  is your declaration of the class, it has two constructors, a default  and one overloaded, and some functions, and variables. When you use a  class you can use the dot operator to use the members .  like this:
+Cheetaman cheeta;
+cheeta.happy(); //note the dot...
+For  your implementation (.cpp) you use the include the (.h) and use the  namespace too, and then define them statically as members I guess you  could say. So Classname::membername like this:
+#include "cheetaman.h"
+namespace Cheetas {
+     Cheetaman::Cheetaman()
+     {
+       //default, set all the standard values for member variables and init code here
+      }
+      Cheetaman::Cheetaman(int x, int y)
+      {
+             //do extra stuff with x y
+      }
+     
+     void Cheetaman::happy()
+     {
+      this->state = new //well I forget the specifics for const char types but you get the point...
+      this->state = "happy";
+     }
+     
+     const char* Cheetaman::get_state()
+     {
+            return this->state; //you return that state member of the  actual class, you see?  So it can change (happy/sad) but you always  return the correct one.
+     }
+     //and so on and so on.
+     Cheetaman::~Cheetaman()
+     {
+          //deconstructor, delete all memory allocated here
+      }
+}
+this-> is used in the class as . is use outside of the class.
+And that is more or less the gist of it. Oh yeah and you can inline assembly too, and use boolean types (bool) and so on. 
+sparky4
+sparky4!!!!!
+sparky4: put in a file and upload it!
+sparky4: put in a file and upload it!
+sparky4: put in a file and upload it!
+sparky4 no I am lazy
+http://boards.4chan.org/jp/res/9468991
+sparky4
+sparky4 >/jp/ confirmed for having the hottest white girls
+sparky4 I knew I should had tried to become a /jp/ idol.
+sparky4: http://piratepad.net/INvoPrHMSN paste here
+sparky4: mlet me get some drugs~
+^
+|
+recursive chatlog
diff --git a/doc/project.txt b/doc/project.txt
new file mode 100644 (file)
index 0000000..51bc1c8
--- /dev/null
@@ -0,0 +1,4 @@
+                                Project: 16\r
+\r
+to make an epic as fuck 2d 16bit DOS game\r
+22 source files
\ No newline at end of file
diff --git a/doc/wwww.txt b/doc/wwww.txt
new file mode 100644 (file)
index 0000000..7e63bb0
--- /dev/null
@@ -0,0 +1,401 @@
+
+URL    irc://irc.rizon.net/project16   Mode    +ntz    Users   7, 2@, 0%, 0+
+Topic  irc://irc.sparky4.net/16 | http://www.yotsubano.me/16.zip <= new version!
+#project16
+[15:14]        ===     55 unknown connection(s)
+[15:14]        =-=     User mode for sparky4 is now +ix
+[15:14]        Global  [Logon News - May 21 2011] First time on Rizon? Be sure to read the FAQ! http://s.rizon.net/FAQ
+[15:14]        Global  [Logon News - Feb 07 2012] We now have a Channel Takeover Policy for the channels with founder being gone for over a certain period of time. Please read http://forum.rizon.net/showthread.php?3850 for details
+[15:14]        Global  [Logon News - Jul 14 2012] Rizon is looking for php coders to assist in the creation of a ticketing system to track abuse & handle staff releated inquries. If you have experience with ticketing systems please see #dev or email m[at]rizon.net.
+[15:14]        Global  [Random News - Mar 28 2009] Rizon now offers a Quotes bot for any room that wishes to have one. For more information on this please see http://www.rizon.net/vbulletin/showthread.php?t=940 Thanks Rizon Staff.
+[15:14]        NickServ        This nickname is registered and protected. If it is your
+[15:14]        NickServ        nick, type /msg NickServ IDENTIFY password. Otherwise,
+[15:14]        NickServ        please choose a different nick.
+[15:14]        hopm-siglost    For network safety, your client is being scanned for open proxies by proxyscan.siglost.com (188.122.74.139). This scan will not harm your computer.
+[15:14]        =-=     User mode for sparky4 is now +r
+[15:14]        NickServ        Password accepted - you are now recognized.
+[15:14]        -->|    YOU (sparky4) have joined #project16
+[15:14]        =-=     Topic for #project16 is “irc://irc.sparky4.net/16 | http://www.yotsubano.me/16.zip”
+[15:14]        =-=     Topic for #project16 was set by sparky4!~sparky4@Rizon-C1D04E4A.resnet.latech.edu on Wed Jul 18 17:00:51 2012
+[15:14]        =-=     Mode #project16 +o sparky4 by ChanServ
+[15:39]        sparky4 yes everything in this game excluding the images will be just text files
+[15:39]        sparky4 wwwww
+[15:39]        sparky4 crazy
+[17:44]        |<--    Feint has left irc.rizon.net (Remote host closed the connection)
+[21:40]        sparky4 http://www.youtube.com/watch?v=6CPU2aKDWoo&fmt=18 = game's time setting wwww
+[00:36]        |<--    heheringfeast has left irc.rizon.net (Quit: Quitting)
+[06:11]        sparky4 ............
+[06:11]        sparky4 TiV3: ticks thelinesofmagazine Sageru where in the fuck is everybody?
+[06:38]        -->|    sparky4_ (~yakui4@Rizon-C1D3076C.resnet.latech.edu) has joined #project16
+[06:38]        |<--    sparky4_ has left irc.rizon.net ()
+[08:29]        Sageru  ?]
+[08:31]        ticks   sleeping of course
+[08:31]        ticks   or about to
+[08:31]        ticks   strange, my nick doesn't always want to highlight
+[08:46]        sparky4 wwww
+[08:46]        sparky4 wwww
+[08:46]        sparky4 wwww
+[08:46]        sparky4 wwww
+[08:46]        [ERROR] No match for “sup”.
+[08:46]        [ERROR] No match for “supp”.
+[08:46]        [ERROR] No match for “supp”.
+[08:46]        [ERROR] No match for “supp”.
+[11:18]        TiV3    hmm
+[11:18]        TiV3    w
+[12:15]        ticks   wwwwww
+[12:28]        sparky4 wwww
+[12:38]        sparky4 i with ojosama will tell me the fucking hooks for the input
+[12:44]        |<--    thelinesofmagazine has left irc.rizon.net (Ping timeout: 240 seconds)
+[14:22]        -->|    sparky4_ (~yakui4@Rizon-C1D3076C.resnet.latech.edu) has joined #project16
+[14:23]        sparky4_        void Core::run()
+[14:23]        sparky4_        {
+[14:23]        sparky4_        int i = 0;
+[14:24]        sparky4_        while (ENGINE_EXIT != this->msg)
+[14:24]        sparky4_        {
+[14:24]        sparky4_        //next line for purely testing purposes
+[14:24]        sparky4_        i++;if(i==600){char a;std::cin >> a;this->keys[a] = true;i=0;}
+[14:24]        sparky4_        this->sync();
+[14:24]        sparky4_        this->input();
+[14:24]        sparky4_        this->update();
+[14:24]        sparky4_        }
+[14:24]        sparky4_        }
+[14:24]        sparky4_        hmmm
+[15:16]        |<--    sparky4_ has left irc.rizon.net (Remote host closed the connection)
+[15:41]        -->|    Feint (~chatzilla@Rizon-8DFC2CD4.range86-141.btcentralplus.com) has joined #project16
+[15:48]        Sageru  https://www.power.org/resources/downloads/PowerISA_V2.06B_V2_PUBLIC.pdf too bad given that i don't know how to design CPUs this is useless to me
+[17:56]        |<--    ticks has left irc.rizon.net (Killed (NickServ (GHOST command used by ticks-netbook)))
+[17:56]        -->|    ticks (~emily@zima.blue) has joined #project16
+[17:57]        |<--    Feint has left irc.rizon.net (Remote host closed the connection)
+[18:41]        |<--    ticks has left irc.rizon.net (Read error: Connection reset by peer)
+[21:27]        -->|    ticks (~emily@zima.blue) has joined #project16
+[21:47]        |<--    ticks has left irc.rizon.net (Ping timeout: 240 seconds)
+[21:48]        -->|    ticks (~emily@zima.blue) has joined #project16
+[22:53]        Sageru  http://www.underground-gamer.com/details.php?id=53330 i can't believe there was a US DOS version of this
+[22:53]        Sageru  i had no ide a
+[22:54]        Sageru  http://www.underground-gamer.com/details.php?id=52672 >mfw this
+[22:54]        Sageru  wwwwwww
+[03:42]        -->|    sparky4_ (~yakui4@Rizon-C1D3076C.resnet.latech.edu) has joined #project16
+[04:02]        |<--    sparky4_ has left irc.rizon.net (Ping timeout: 240 seconds)
+[11:59]        |<--    ticks has left irc.rizon.net (Quit: leaving)
+[12:01]        -->|    ticks (~emily@zima.blue) has joined #project16
+[12:05]        |<--    ticks has left irc.rizon.net ()
+[12:19]        -->|    ticks (~emily@zima.blue) has joined #project16
+[12:22]        -->|    Feint (~chatzilla@Rizon-8DFC2CD4.range86-141.btcentralplus.com) has joined #project16
+[18:42]        |<--    Feint has left irc.rizon.net (Ping timeout: 240 seconds)
+[19:11]        |<--    ticks has left irc.rizon.net (Read error: Connection reset by peer)
+[19:14]        -->|    ticks (~emily@zima.blue) has joined #project16
+[20:40]        |<--    ticks has left irc.rizon.net (Quit: Restart.)
+[20:52]        -->|    ticks (~emily@zima.blue) has joined #project16
+[23:16]        sparky4 C/C++ = funny language
+[04:52]        |<--    ticks has left irc.rizon.net (Ping timeout: 240 seconds)
+[06:49]        -->|    ticks (~emily@zima.blue) has joined #project16
+[07:33]        sparky4 ...........................
+[07:33]        sparky4 ........
+[07:33]        sparky4 .................
+[07:33]        sparky4 ..................
+[07:34]        sparky4 ............................................................
+[12:50]        -->|    Feint (~chatzilla@Rizon-8DFC2CD4.range86-141.btcentralplus.com) has joined #project16
+[17:06]        sparky4 Feint: Sageru ticks TiV3 good news everyone
+[17:06]        sparky4 wwww
+[17:14]        sparky4 minor bug found
+[17:31]        sparky4 WWWW
+[17:31]        sparky4 there is some bugs in project 16
+[17:32]        sparky4 MANY buys w
+[18:36]        |<--    Feint has left irc.rizon.net (Remote host closed the connection)
+[19:23]        TiV3    www
+[19:32]        sparky4 !!
+[19:32]        sparky4 TiV3: wwww\
+[21:24]        -->|    sparky4_ (~yakui4@Rizon-C1D3076C.resnet.latech.edu) has joined #project16
+[21:39]        sparky4_        *lock_key&=(~(16 | 32 | 64));   // toggle off the lock keys
+[21:41]        =-=     sparky4 has changed the topic to “irc://irc.sparky4.net/16 | http://www.yotsubano.me/16.zip <= new version!”
+[22:30]        sparky4_        Sageru: TiV3 ticks WHERE THE FUCK IS EVERYONG?!?!
+[22:30]        Sageru  in my butt
+[22:32]        sparky4_        Sageru: nigga download that zip file
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        Sageru  lol
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        Sageru  i need to DOSbox it
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        Sageru  does it work in DOSbox?
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: http://www.yotsubano.me/16.zip
+[22:32]        sparky4_        Sageru: NOBODY IS FUCKING REVEIWING IT
+[22:32]        sparky4_        Sageru: YES YES IT COMES WITH THE INSTALLER
+[22:32]        Sageru  oh
+[22:32]        Sageru  crazy.
+[22:33]        sparky4_        Sageru: I AM PISSED OFF
+[22:33]        sparky4_        nobody is reveiwing it
+[22:33]        sparky4_        and they be too dumb
+[22:33]        Sageru  ┐(´~`;)┌
+[22:33]        sparky4_        wwww
+[22:33]        sparky4_        Sageru: please try it out
+[22:34]        Sageru  when i'm not IMing and on the phone and IRC at the same time
+[22:34]        sparky4_        Sageru: ;_;
+[22:34]        sparky4_        Sageru: it's late i i need to shpower before i get way too tired
+[22:35]        Sageru  lol
+[22:35]        Sageru  okay, well i will get back to you on it
+[22:35]        sparky4_        ?
+[22:35]        sparky4_        please do it now ~ w
+[22:35]        Sageru  i'm busy
+[22:36]        sparky4_        FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
+[23:33]        TiV3    awawa
+[01:04]        Sageru  shit pickle
+[01:04]        Sageru  cool programming but what progress is there
+[05:12]        -->|    Feint (~chatzilla@Rizon-8DFC2CD4.range86-141.btcentralplus.com) has joined #project16
+[05:44]        -->|    Ojouchama (~chatzilla@jp.desuwa) has joined #project16
+[09:33]        sparky4_        https://boards.4chan.org/jp/res/9452272#p9454310
+[09:34]        sparky4_        Sageru: keyboard
+[09:34]        sparky4_        codes
+[09:40]        Sageru  hmm?
+[10:00]        Ojouchama       sparky4 when will you finish your game?
+[10:08]        Sageru  she has a little tune playing
+[10:08]        Sageru  so far
+[10:08]        Sageru  which is more than i could do w
+[10:08]        Sageru  i can hear the OPL2's glorious sound
+[10:10]        Sageru  SID/AY-3 are my favorite sound chips probably, as well as the FM chip in the PC88/PC98
+[10:12]        Sageru  pretty odd how the SID ended up in a total of two computers
+[10:53]        Ojouchama       Sageru shut up.
+[10:53]        Sageru  no u
+[10:53]        Ojouchama       Sageru always talking about stuff that doesn't work.
+[10:54]        Sageru  what does that even mean
+[10:54]        Ojouchama       Do you even have working code for those sound chips?
+[10:54]        Sageru  no i don't but i'm saying i like the sound
+[10:54]        Sageru  i don't program anything
+[10:54]        Sageru  i didn't claim to
+[10:54]        Sageru  ┐(´~`;)┌
+[10:54]        Ojouchama       Did you compose anything that can actually be used?
+[10:54]        Sageru  god damnit
+[10:55]        Ojouchama       Stop distracting sparky4.
+[10:55]        Ojouchama       This is #project16 not #oldSoundHardwares
+[11:00]        Sageru  lol
+[11:00]        Sageru  go relax, have a drink or something
+[11:18]        sparky4 Ojouchama: wwww
+[11:18]        sparky4 Ojouchama: good news wwww
+[11:19]        sparky4 Ojouchama: a this rate it's vapor ware
+[11:20]        sparky4 Ojouchama: i was in class
+[11:21]        Sageru  sparky4, what is most important is not to give up
+[11:21]        Sageru  i wish i could help but i have no knowledge
+[11:21]        sparky4 Sageru: ^^
+[11:21]        sparky4 Sageru: i barely know anything wwww
+[11:21]        Sageru  and gaining it would take longer than it would for you to just develop it
+[11:21]        Sageru  w
+[11:21]        Sageru  oh
+[11:21]        sparky4 Sageru: well back in 2007
+[11:22]        sparky4 i started playin iwith computers (like actually take them apart and learn about them)
+[11:22]        sparky4 Sageru: i did not know SHIT about computers back in 2006
+[11:22]        sparky4 now i am an UBER POWAH USER
+[11:22]        Sageru  lol
+[11:23]        Sageru  i'm just a huge nerd, my understanding of hardware is greater than that of software so programming is really well beyond my capacity
+[11:23]        sparky4 Sageru: then you should make the fucking drivers
+[11:23]        sparky4 wwww
+[11:24]        Sageru  well
+[11:24]        Sageru  programming goes into software
+[11:24]        Sageru  i wish i understood the hardware *that* intimately
+[11:24]        sparky4 Sageru: and hardware bitch
+[11:24]        Sageru  ;_;
+[11:25]        sparky4 is FAR too tired to work on project 16
+[11:26]        sparky4 Ojouchama: the keyoard input works but i cannot figure out how to make it work with the game engine's core
+[11:26]        sparky4 if we can get the input system down then development can REALLY take off
+[11:27]        sparky4 Sageru: i am soo weak
+[11:27]        sparky4 from hacking the keyboard yesterday
+[11:27]        sparky4 Sageru: http://www.youtube.com/watch?v=hOkPM91JRpk wwww
+[11:28]        sparky4 it's taking forever to make this game because only 1 person is actually developing www
+[11:28]        sparky4 and that person is ..... wwww dumb
+[11:41]        Ojouchama       sparky4 how do you know the keyboard input works?
+[11:41]        Ojouchama       sparky4 What does it do?
+[11:42]        sparky4 Ojouchama: wwww i can see raw scan codes when i push a key
+[11:42]        Ojouchama       sparky4 So you print them out?
+[11:42]        sparky4 ....
+[11:42]        sparky4 Ojouchama: download it please wwww
+[11:44]        sparky4 Ojouchama: like when you press Esc it prints it's raw scan byte
+[11:44]        sparky4 which is 1
+[11:45]        sparky4 Ojouchama: i need this working swith the engine so i can inplement the moving pixel test
+[11:45]        sparky4 Ojouchama: the moving pixel that is controlled by keyboard
+[11:47]        Ojouchama       sparky4 That means you have it in a variable.
+[11:48]        sparky4 ohh~
+[11:48]        Ojouchama       sparky4 Map them with an ASCII key array like we discussed then use that aray in the engine core.
+[11:48]        sparky4 ok
+[11:49]        sparky4 Ojouchama: bot how do i make it communicate with the game engine core?
+[11:49]        Ojouchama       Then in the game, instead of querying the scan code you query the key array.
+[11:49]        Ojouchama       The input updates the key array / scan codes.
+[11:49]        sparky4 Ojouchama: ~ like a cloud of keys?
+[11:50]        Ojouchama       sparky4 Exactly.
+[11:50]        sparky4 Ojouchama: wwww
+[11:50]        Ojouchama       sparky4 It isn't too complicated and pretty universal.
+[11:50]        sparky4 Ojouchama: doom engine has something like that wwww
+[11:51]        Ojouchama       sparky4 They key array will be some member of the game core object.
+[11:51]        sparky4 ?!!?!?!?
+[11:52]        sparky4 wait
+[11:52]        Ojouchama       sparky4 So it remembers everything and you separate the internal hardware code from the game code.
+[11:52]        sparky4_        private:
+[11:52]        sparky4_        engine_message msg;
+[11:52]        sparky4_        std::list<void(Core::*)()> *fp;
+[11:52]        sparky4_        Timer timer;
+[11:52]        sparky4_        bool keys[256];
+[11:52]        sparky4_        int frames_per_second;
+[11:52]        sparky4_        //std::list<void(core::*)()> fp;
+[11:52]        sparky4_        ??
+[11:53]        Ojouchama       Yeah keys[]/
+[11:53]        sparky4_        wwww
+[11:53]        Ojouchama       Then, and this is the clever part...
+[11:53]        Ojouchama       You figures out what actions you want to take in your game.
+[11:54]        Ojouchama       Say you want to do 10 things.
+[11:54]        sparky4_        #define NUM_SCAN_QUE 256        // this MUST be 256, using BYTE roll-over for
+[11:54]        sparky4_        // q code
+[11:54]        sparky4_        Ojouchama: i am extreamly tired right now ww
+[11:54]        sparky4_        byte kee_q[NUM_SCAN_QUE];
+[11:54]        Ojouchama       You have a game object with an array of 10 bools, and you remap the keys to those.
+[11:55]        sparky4_        wtf is an object and a fucking bool?
+[11:55]        sparky4_        is a bool a pool?
+[11:55]        Ojouchama       sparky4 no.
+[11:55]        sparky4_        wwww
+[11:55]        Ojouchama       sparky4 A bool is like a bit, except it is either true or false.
+[11:56]        sparky4_        Ojouchama: we cannot forget joy sticks and mice
+[11:56]        sparky4_        Ojouchama: the bit as in byte and nibble or this is another bit?
+[11:56]        Ojouchama       http://www.cplusplus.com/forum/beginner/6557/
+[11:57]        sparky4_        Ojouchama: bool is like a switch variable?
+[11:57]        sparky4_        Ojouchama: when key is press it's 1
+[11:57]        Ojouchama       sparky4 That is why you separate and map keys twice.
+[11:57]        sparky4_        when key is up it's 0?>
+[11:58]        sparky4_        Ojouchama: i know they return different values
+[11:58]        Ojouchama       sparky4 you handle all input devices, and only map them to game registered "keys" when they are used.
+[11:59]        Ojouchama       Key up is false, which is 0.
+[11:59]        sparky4_        Ojouchama: ill use the joy stick as a dildo www
+[11:59]        Ojouchama       Use false.
+[11:59]        sparky4_        ok
+[11:59]        Ojouchama       sparky4 ew.
+[11:59]        sparky4_        Ojouchama: i am joking
+[11:59]        sparky4_        Ojouchama: ww
+[12:00]        sparky4_        Ojouchama: there is 6 rows of keys
+[12:00]        Ojouchama       sparky4 Eventually you want a Game object which the core maintains.
+[12:01]        sparky4_        wtf is an object?
+[12:01]        sparky4_        ww
+[12:01]        Ojouchama       sparky4 like the Core object, or Engine, I forgot what I named it.
+[12:01]        sparky4_        namespace engine{ this?
+[12:01]        sparky4_        Core::Core() this?
+[12:02]        Ojouchama       Except the Game object will only have things like player lives, and game rules, and stuff like that.
+[12:02]        Ojouchama       sparky4 yes.
+[12:02]        sparky4_        Ojouchama: we may need a physics object?
+[12:02]        sparky4_        Ojouchama: wait they are all objects?
+[12:02]        sparky4_        momentum and gravity ww
+[12:04]        Ojouchama       sparky4 so you can do this:
+[12:04]        Ojouchama       namespace engine{
+[12:04]        Ojouchama       class Game {
+[12:04]        Ojouchama       public: (public functions here)
+[12:04]        Ojouchama       protected:
+[12:04]        Ojouchama       private: (private variables here)
+[12:04]        Ojouchama       }
+[12:04]        Ojouchama       }
+[12:04]        Ojouchama       Then implement the functions/methods for it in a cppp
+[12:05]        sparky4 Ojouchama: ohhh can you explain wtf is is a class?
+[12:06]        Ojouchama       sparky4 A core object interfaces all other stuff, a game object has all game stuff, it can also have for example an options object. So core can't affect options directly. But it can update Game with keys, and Game can update options based on those keys.
+[12:07]        Ojouchama       sparky4 A class is a homosexual function that is persistent until killed.
+[12:07]        sparky4_        wwww
+[12:07]        =-=     sparky4_ is now known as sparky4|compy4
+[12:08]        sparky4|compy4  Ojouchama: i am logging this talk wwww so i can read over it when i don't fell sleepy
+[12:08]        Ojouchama       sparky4 It is like having global variables and functions that are bound to a scope of the "object" basically a struct.
+[12:08]        Ojouchama       But more homosexual.
+[12:09]        Ojouchama       The when eng_core.h and eng_core.cpp is more or less a good example of how you do a class.
+[12:09]        sparky4|compy4  Ojouchama: tho te global variables in that object is basically stuck in there?
+[12:10]        Ojouchama       sparky4 Yes, it's persistent and a member of the object so it's called like this OBJECT_NAME.variable
+[12:11]        Ojouchama       sparky4 with a . (dot)
+[12:11]        Ojouchama       sparky4 But you should make an instance of a class like a variable so... CLASS_NAME variablename;
+[12:12]        Ojouchama       You see that for Core in main.cpp
+[12:12]        sparky4|compy4  ?
+[12:12]        Ojouchama       sparky4 Inside a class you can use this->variablename to get something.
+[12:12]        sparky4|compy4  Ojouchama: they should give this stuff better names ww
+[12:13]        Ojouchama       sparky4 What do you mean?
+[12:13]        sparky4|compy4  Ojouchama: wtf is "this->" i see it everywhere
+[12:13]        Ojouchama       this as in "this exactly copy of the class that is running now at this very moment"
+[12:13]        Ojouchama       And then -> is like using a pointer to the member.
+[12:14]        Ojouchama       sparky4 You can also access+
+[12:14]        sparky4|compy4  Ojouchama: you can call a class that is not running?
+[12:14]        sparky4|compy4  wtf is this sourcery? ww
+[12:14]        Ojouchama       sparky4 You can also access stuff statically so there is a difference.
+[12:15]        sparky4|compy4  's brain pops
+[12:15]        sparky4|compy4  wwww
+[12:15]        Ojouchama       Fore example you can Core::functionname(); and it should run, if it CAN run.
+[12:15]        sparky4|compy4  ww
+[12:16]        Ojouchama       But ... If you do that you might as well use C style functions in my opinion.
+[12:16]        Ojouchama       sparky4 The benefit with C++ is that you can organize persistent and running code better and more efficiently.
+[12:16]        sparky4|compy4  Ojouchama: is there something bad about C?
+[12:16]        sparky4|compy4  Ojouchama: ohh~~
+[12:17]        Ojouchama       sparky4 It has limited use for large scale simulations, which is what a game really is.
+[12:18]        Ojouchama       sparky4 In C you would use a lot of structs, but it gets more messy and complicated the more complex the program gets.
+[12:18]        sparky4|compy4  Ojouchama: ohh dear
+[12:18]        sparky4|compy4  Ojouchama: i have servere A.D.H.D. wwww if you can't notice
+[12:19]        Ojouchama       sparky4 C++ might seem complicated but when you think about it you just build a lot of scaffolding, that's all. The rest is then just reduced to ver simple functions that use variables you've stored on the class, or passed as arguments.
+[12:19]        sparky4|compy4  Ojouchama: this styl;e is programming is OBJECT ORIENTED programming
+[12:20]        Ojouchama       sparky4 Yes, it is. But it isn't bad or anything.
+[12:20]        sparky4|compy4  Ojouchama: i know but is is very advanced wwww
+[12:20]        Ojouchama       sparky4 Objects are really like contained simulated entities which makes using them for simulation work quite powerful.
+[12:22]        Ojouchama       sparky4 A lot of people will tell you that C++ is bad, or good, or whatever. But don't listen to them, they don't make anything, they're idiots.
+[12:22]        sparky4|compy4  wwww
+[12:23]        sparky4|compy4  Ojouchama: can you make a small tutorial file on the shit i don't know but need to know?
+[12:23]        sparky4|compy4  wwww
+[12:23]        Ojouchama       sparky4 Nothing can solve all use cases in a good way so you use what works good enough.
+[12:24]        Ojouchama       sparky4 If you find C++ hard you aren't good enough to make the optimizations to not use it, or to optimize it with C++, or whatever.
+[12:25]        sparky4|compy4  Ojouchama: it's not really
+[12:25]        Ojouchama       sparky4 This way you prevent a lot of mistakes, if you do it properly.
+[12:26]        sparky4|compy4  Ojouchama: the code has significantly much less errors now
+[12:26]        Ojouchama       sparky4 The errors were because you did it wrong.
+[12:26]        Ojouchama       www
+[12:26]        sparky4|compy4  wwww
+[12:26]        sparky4|compy4  WWWW
+[12:27]        Ojouchama       sparky4 I bought an XBOX360 on a whim.
+[12:27]        sparky4|compy4  they say at school i am an advanced programmer wwww
+[12:27]        Ojouchama       sparky4 I told you not to listen to other people, they're idiots.
+[12:27]        sparky4|compy4  in reality i suck massive donkey dicks
+[12:27]        Ojouchama       wwww
+[12:27]        sparky4|compy4  Ojouchama: that was like a while ago
+[12:28]        Ojouchama       sparky4 I am terrible, girls can't code.
+[12:28]        sparky4|compy4  Ojouchama: 99.99% o the population is bakas
+[12:28]        sparky4|compy4  the 0.01% barely know how to code
+[12:28]        Ojouchama       sparky4 Yes, I always say: It's not that I'm good... It's that you're just an idiot.
+[12:29]        sparky4|compy4  and a few people know dos programming w
+[12:29]        sparky4|compy4  Ojouchama: EYE AM A ⑨
+[12:30]        sparky4|compy4  Ojouchama: eye want to get better w
+[12:30]        Ojouchama       sparky4 The code runs on Win32 also.
+[12:30]        sparky4|compy4  Ojouchama: the game code?!
+[12:30]        Ojouchama       sparky4 If I replace the Dos stuff with Win32 libs and compile for Win32 it will work too.
+[12:31]        sparky4|compy4  Ojouchama: ohh cool~
+[12:31]        sparky4|compy4  what about win16?
+[12:31]        sparky4|compy4  and os/2?
+[12:31]        Ojouchama       sparky4 If I replace the Dos stuff with Xwindow stuff and compile for linux it will work on linux.
+[12:31]        sparky4|compy4  Ojouchama: wwww thats why i am advoiding assembely
+[12:32]        sparky4|compy4  in case anyone wants to port it to other machines
+[12:32]        Ojouchama       sparky4 If I replace the Dos stuff with glut stuff or QT or something and compile it for whichever system it will work for all systems which glut or QT uses.
+[12:32]        sparky4|compy4  Ojouchama: small tutorial file for me to play with? www
+[12:33]        Ojouchama       sparky4 assembly is more tricky, yes.
+[12:33]        Ojouchama       sparky4 Only do low level optimizations when it all works.
+[12:33]        sparky4|compy4  Ojouchama: and no snes port
+[12:34]        sparky4|compy4  ww
+[12:35]        Ojouchama       sparky4 It is so hot I am in my panties on the floor drinking lots of juice boxes and surrounded my computer stuff.
+[12:36]        sparky4|compy4  Ojouchama: wwwwwwwwwwwww
+[12:36]        sparky4|compy4  Ojouchama: tempurature?
+[12:36]        Ojouchama       sparky4 Yes temperature omigosh!!
+[12:37]        sparky4|compy4  it's 33 degrees celcious~
+[12:37]        Ojouchama       sparky4 But talking about code is exciting too.
+[12:37]        sparky4|compy4  yes
+[12:37]        sparky4|compy4  is dead tired
+[12:37]        sparky4|compy4  i am wearing boy's clothed because i feel icky when i cant shave my theighs w
+[12:38]        sparky4|compy4  i am too tired to
+[12:38]        Ojouchama       sparky4 ew
+[12:38]        sparky4|compy4  Ojouchama: i am way too tired it takes alot of work
+[12:38]        sparky4|compy4  i feel very heavy
+[12:39]        Ojouchama       sparky4 hairy legs weigh a lot.
+[12:39]        sparky4|compy4  Ojouchama: where you live? wwww
+[12:39]        sparky4|compy4  Ojouchama: i shave them alot www
+[12:39]        Ojouchama       sparky4 I live here.
+[12:41]        sparky4|compy4  Ojouchama: I live in hell http://www.youtube.com/watch?v=uks26L3B7_o
+[12:42]        sparky4|compy4  Ojouchama: *<all types>* otaku hell
+[12:44]        sparky4|compy4  Ojouchama: wwww
+[12:44]        |<--    ticks has left irc.rizon.net (Quit: overheatinggggggggg)
+[12:44]        sparky4|compy4  wwwwwww
+[12:44]        sparky4|compy4  Ojouchama: last year it hit 45C
+[12:45]        sparky4|compy4  Ojouchama: ??? hello crazy?
+
diff --git a/l b/l
new file mode 100644 (file)
index 0000000..681ce75
--- /dev/null
+++ b/l
@@ -0,0 +1,11 @@
+16.bat
+16.sh
+CORE16.EXE
+core16.lk1
+core16.map
+CORE16.SYM
+proj16.bfproject
+proj16.mk
+proj16.mk1
+proj16.tgt
+proj16.wpj
diff --git a/proj16.bfproject b/proj16.bfproject
new file mode 100644 (file)
index 0000000..f41d88b
--- /dev/null
@@ -0,0 +1,114 @@
+fb_focus_follow: 1
+view_cline: 0
+e2c.convert_iso: 0
+searchlist: scankey
+searchlist: keyWasPressed
+searchlist: keyIsPressed
+searchlist: scanCode
+searchlist: KeyPressed
+searchlist: kee
+searchlist: keyoff
+searchlist: write
+searchlist: b0
+searchlist: 08
+wrap_text_default: 0
+outputb_scroll_mode: 0
+files: /dos/z/16/doc/project.txt
+files: /dos/z/16/src/eng_core.cpp
+files: /dos/z/16/src/eng_core.h
+files: /dos/z/16/src/eng_comm.cpp
+files: /dos/z/16/src/eng_comm.h
+files: /dos/z/16/src/lib/dos_comm.c
+files: /dos/z/16/src/lib/dos_comm.h
+files: /dos/z/16/src/eng_gfx.cpp
+files: /dos/z/16/src/eng_gfx.h
+files: /dos/z/16/src/lib/dos_gfx.cpp
+files: /dos/z/16/src/lib/dos_gfx.h
+files: /dos/z/16/src/eng_snd.cpp
+files: /dos/z/16/src/eng_snd.h
+files: /dos/z/16/src/lib/dos_opl2.cpp
+files: /dos/z/16/src/lib/opl2.h
+files: /dos/z/16/src/lib/lib_com.cpp
+files: /dos/z/16/src/lib/lib_com.h
+files: /dos/z/16/src/eng_ai.cpp
+files: /dos/z/16/src/eng_ai.h
+files: /dos/z/16/src/timer.cpp
+files: /dos/z/16/src/timer.h
+files: /dos/z/16/src/engine.h
+files: /dos/z/16/src/main.cpp
+files: /dos/z/16/doc/ojoww.cpp
+c2e.convert_iso: 0
+recent_files: file:///dos/z/16/remake.sh
+recent_files: file:///dos/z/16/16.sh
+recent_files: file:///dos/z/16/16.bat
+recent_files: file:///dos/z/16/remake.bat
+recent_files: file:///dos/z/16/doc/ojoww.cpp
+recent_files: file:///dos/z/16/src/main.cpp
+recent_files: file:///dos/z/16/src/engine.h
+recent_files: file:///dos/z/16/src/timer.h
+recent_files: file:///dos/z/16/src/timer.cpp
+recent_files: file:///dos/z/16/src/eng_ai.h
+recent_files: file:///dos/z/16/src/eng_ai.cpp
+recent_files: file:///dos/z/16/src/lib/lib_com.h
+recent_files: file:///dos/z/16/src/lib/lib_com.cpp
+recent_files: file:///dos/z/16/src/lib/opl2.h
+recent_files: file:///dos/z/16/src/lib/dos_opl2.cpp
+recent_files: file:///dos/z/16/src/eng_snd.h
+recent_files: file:///dos/z/16/src/eng_snd.cpp
+recent_files: file:///dos/z/16/src/lib/dos_gfx.h
+recent_files: file:///dos/z/16/src/lib/dos_gfx.cpp
+recent_files: file:///dos/z/16/src/eng_gfx.h
+recent_files: file:///dos/z/16/src/eng_gfx.cpp
+recent_files: file:///dos/z/16/src/lib/dos_comm.h
+recent_files: file:///dos/z/16/src/lib/dos_comm.c
+recent_files: file:///dos/z/16/src/eng_comm.h
+recent_files: file:///dos/z/16/src/eng_comm.cpp
+recent_files: file:///dos/z/16/src/eng_core.h
+recent_files: file:///dos/z/16/src/eng_core.cpp
+recent_files: file:///dos/z/16/doc/project.txt
+recent_files: file:///dos/z/16/ojowwww.cpp
+snippets_show_as_menu: 1
+show_mbhl: 1
+convertcolumn_fillempty: 
+adv_open_recursive: 0
+e2c.convert_symbol: 0
+spell_lang: en
+view_blocks: 1
+bookmarks_filename_mode: 1
+fb_viewmode: 0
+template: /usr/share/bluefish/templates/C_Header_GPL
+bookmarks_show_mode: 0
+bmarksearchmode: 0
+replacelist: keer
+replacelist: keep
+replacelist: kee
+replacelist: keyp
+e2c.convert_xml: 1
+e2c.convert_num: 0
+view_line_numbers: 1
+c2e.convert_symbol: 0
+default_mime_type: text/plain
+fb_show_hidden_f: 0
+convertcolumn_separator: 
+autocomplete: 1
+c2e.convert_xml: 1
+c2e.IE_apos_workaround: 0
+name: Project 16
+last_filefilter: 
+view_main_toolbar: 1
+htmlbar_view: 0
+autoindent: 1
+c2e.convert_special: 0
+editor_tab_width: 4
+view_left_panel: 0
+convertcolumn_horizontally: 0
+e2c.convert_special: 0
+leftpanel_active_tab: 1
+view_statusbar: 1
+charmap_block: 11
+outputb_show_all_output: 0
+spell_check_default: 1
+fb_show_backup_f: 0
+opendir: file:///dos/z/16
+savedir: file:///dos/z/16/src/lib
+adv_open_matchname: 0
diff --git a/proj16.mk b/proj16.mk
new file mode 100644 (file)
index 0000000..5344e11
--- /dev/null
+++ b/proj16.mk
@@ -0,0 +1,3 @@
+project : C:\Z\16\core16.exe .SYMBOLIC\r
+\r
+!include C:\Z\16\proj16.mk1\r
diff --git a/proj16.mk1 b/proj16.mk1
new file mode 100644 (file)
index 0000000..26d0ae3
--- /dev/null
@@ -0,0 +1,82 @@
+!define BLANK ""\r
+C:\Z\16\dos_comm.obj : C:\Z\16\src\lib\dos_comm.c .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wcc src\lib\dos_comm.c -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol&\r
+ -ol+ -oh -om -d2 -bt=dos -fo=.obj -ml\r
+\r
+C:\Z\16\eng_ai.obj : C:\Z\16\src\eng_ai.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\eng_ai.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -ol&\r
++ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\eng_comm.obj : C:\Z\16\src\eng_comm.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\eng_comm.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -&\r
+ol+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\eng_core.obj : C:\Z\16\src\eng_core.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\eng_core.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -&\r
+ol+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\eng_gfx.obj : C:\Z\16\src\eng_gfx.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\eng_gfx.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -o&\r
+l+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\eng_snd.obj : C:\Z\16\src\eng_snd.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\eng_snd.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -o&\r
+l+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\dos_gfx.obj : C:\Z\16\src\lib\dos_gfx.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\lib\dos_gfx.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -o&\r
+l -ol+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\dos_opl2.obj : C:\Z\16\src\lib\dos_opl2.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\lib\dos_opl2.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -&\r
+ol -ol+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\lib_com.obj : C:\Z\16\src\lib\lib_com.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\lib\lib_com.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -o&\r
+l -ol+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\main.obj : C:\Z\16\src\main.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\main.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -ol+ &\r
+-oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\timer.obj : C:\Z\16\src\timer.cpp .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ *wpp src\timer.cpp -i="c:\fdos\WATCOM/h" -w4 -e25 -zkl -zq -otexan -ol -ol+&\r
+ -oh -om -d2 -bt=dos -fo=.obj -ml -xs -xr\r
+\r
+C:\Z\16\core16.exe : C:\Z\16\dos_comm.obj C:\Z\16\eng_ai.obj C:\Z\16\eng_com&\r
+m.obj C:\Z\16\eng_core.obj C:\Z\16\eng_gfx.obj C:\Z\16\eng_snd.obj C:\Z\16\d&\r
+os_gfx.obj C:\Z\16\dos_opl2.obj C:\Z\16\lib_com.obj C:\Z\16\main.obj C:\Z\16&\r
+\timer.obj C:\Z\16\src\eng_ai.h C:\Z\16\src\eng_comm.h C:\Z\16\src\eng_core.&\r
+h C:\Z\16\src\eng_gfx.h C:\Z\16\src\eng_snd.h C:\Z\16\src\engine.h C:\Z\16\s&\r
+rc\lib\dos_comm.h C:\Z\16\src\lib\dos_gfx.h C:\Z\16\src\lib\lib_com.h C:\Z\1&\r
+6\src\lib\opl2.h C:\Z\16\src\timer.h .AUTODEPEND\r
+ @C:\r
+ cd C:\Z\16\r
+ @%write core16.lk1 FIL dos_comm.obj,eng_ai.obj,eng_comm.obj,eng_core.obj,en&\r
+g_gfx.obj,eng_snd.obj,dos_gfx.obj,dos_opl2.obj,lib_com.obj,main.obj,timer.ob&\r
+j\r
+ @%append core16.lk1 \r
+ *wlink name core16 d all sys dos op m op maxe=25 op q op symf @core16.lk1\r
+\r
diff --git a/proj16.tgt b/proj16.tgt
new file mode 100644 (file)
index 0000000..bdea778
--- /dev/null
@@ -0,0 +1,726 @@
+40\r
+targetIdent\r
+0\r
+MProject\r
+1\r
+MComponent\r
+0\r
+2\r
+WString\r
+3\r
+EXE\r
+3\r
+WString\r
+5\r
+de6e9\r
+1\r
+0\r
+1\r
+4\r
+MCommand\r
+0\r
+5\r
+MCommand\r
+0\r
+6\r
+MItem\r
+10\r
+core16.exe\r
+7\r
+WString\r
+3\r
+EXE\r
+8\r
+WVList\r
+0\r
+9\r
+WVList\r
+2\r
+10\r
+ActionStates\r
+11\r
+WString\r
+5\r
+&Make\r
+12\r
+WVList\r
+0\r
+13\r
+ActionStates\r
+14\r
+WString\r
+7\r
+Sam&ple\r
+15\r
+WVList\r
+0\r
+-1\r
+1\r
+1\r
+0\r
+16\r
+WPickList\r
+25\r
+17\r
+MItem\r
+3\r
+*.c\r
+18\r
+WString\r
+4\r
+COBJ\r
+19\r
+WVList\r
+8\r
+20\r
+MRState\r
+21\r
+WString\r
+3\r
+WCC\r
+22\r
+WString\r
+37\r
+?????No double-byte character support\r
+1\r
+0\r
+23\r
+MRState\r
+24\r
+WString\r
+3\r
+WCC\r
+25\r
+WString\r
+22\r
+?????Current code page\r
+1\r
+1\r
+26\r
+MRState\r
+27\r
+WString\r
+3\r
+WCC\r
+28\r
+WString\r
+21\r
+?????No optimizations\r
+1\r
+0\r
+29\r
+MRState\r
+30\r
+WString\r
+3\r
+WCC\r
+31\r
+WString\r
+26\r
+?????Fastest possible code\r
+1\r
+1\r
+32\r
+MCState\r
+33\r
+WString\r
+3\r
+WCC\r
+34\r
+WString\r
+23\r
+?????Loop optimizations\r
+1\r
+1\r
+35\r
+MCState\r
+36\r
+WString\r
+3\r
+WCC\r
+37\r
+WString\r
+19\r
+?????Loop unrolling\r
+1\r
+1\r
+38\r
+MCState\r
+39\r
+WString\r
+3\r
+WCC\r
+40\r
+WString\r
+33\r
+?????Allow repeated optimizations\r
+1\r
+1\r
+41\r
+MCState\r
+42\r
+WString\r
+3\r
+WCC\r
+43\r
+WString\r
+23\r
+?????Math optimizations\r
+1\r
+1\r
+44\r
+WVList\r
+0\r
+-1\r
+1\r
+1\r
+0\r
+45\r
+MItem\r
+18\r
+src\lib\dos_comm.c\r
+46\r
+WString\r
+4\r
+COBJ\r
+47\r
+WVList\r
+0\r
+48\r
+WVList\r
+0\r
+17\r
+1\r
+1\r
+0\r
+49\r
+MItem\r
+5\r
+*.cpp\r
+50\r
+WString\r
+6\r
+CPPOBJ\r
+51\r
+WVList\r
+8\r
+52\r
+MRState\r
+53\r
+WString\r
+3\r
+WPP\r
+54\r
+WString\r
+37\r
+?????No double-byte character support\r
+1\r
+0\r
+55\r
+MRState\r
+56\r
+WString\r
+3\r
+WPP\r
+57\r
+WString\r
+22\r
+?????Current code page\r
+1\r
+1\r
+58\r
+MRState\r
+59\r
+WString\r
+3\r
+WPP\r
+60\r
+WString\r
+21\r
+?????No optimizations\r
+1\r
+0\r
+61\r
+MRState\r
+62\r
+WString\r
+3\r
+WPP\r
+63\r
+WString\r
+26\r
+?????Fastest possible code\r
+1\r
+1\r
+64\r
+MCState\r
+65\r
+WString\r
+3\r
+WPP\r
+66\r
+WString\r
+23\r
+?????Loop optimizations\r
+1\r
+1\r
+67\r
+MCState\r
+68\r
+WString\r
+3\r
+WPP\r
+69\r
+WString\r
+19\r
+?????Loop unrolling\r
+1\r
+1\r
+70\r
+MCState\r
+71\r
+WString\r
+3\r
+WPP\r
+72\r
+WString\r
+33\r
+?????Allow repeated optimizations\r
+1\r
+1\r
+73\r
+MCState\r
+74\r
+WString\r
+3\r
+WPP\r
+75\r
+WString\r
+23\r
+?????Math optimizations\r
+1\r
+1\r
+76\r
+WVList\r
+1\r
+77\r
+ActionStates\r
+78\r
+WString\r
+5\r
+&Make\r
+79\r
+WVList\r
+1\r
+80\r
+MCState\r
+81\r
+WString\r
+5\r
+WMAKE\r
+82\r
+WString\r
+26\r
+?????Echo progress of work\r
+1\r
+1\r
+-1\r
+1\r
+1\r
+0\r
+83\r
+MItem\r
+14\r
+src\eng_ai.cpp\r
+84\r
+WString\r
+6\r
+CPPOBJ\r
+85\r
+WVList\r
+0\r
+86\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+87\r
+MItem\r
+16\r
+src\eng_comm.cpp\r
+88\r
+WString\r
+6\r
+CPPOBJ\r
+89\r
+WVList\r
+0\r
+90\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+91\r
+MItem\r
+16\r
+src\eng_core.cpp\r
+92\r
+WString\r
+6\r
+CPPOBJ\r
+93\r
+WVList\r
+0\r
+94\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+95\r
+MItem\r
+15\r
+src\eng_gfx.cpp\r
+96\r
+WString\r
+6\r
+CPPOBJ\r
+97\r
+WVList\r
+0\r
+98\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+99\r
+MItem\r
+15\r
+src\eng_snd.cpp\r
+100\r
+WString\r
+6\r
+CPPOBJ\r
+101\r
+WVList\r
+0\r
+102\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+103\r
+MItem\r
+19\r
+src\lib\dos_gfx.cpp\r
+104\r
+WString\r
+6\r
+CPPOBJ\r
+105\r
+WVList\r
+0\r
+106\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+107\r
+MItem\r
+20\r
+src\lib\dos_opl2.cpp\r
+108\r
+WString\r
+6\r
+CPPOBJ\r
+109\r
+WVList\r
+0\r
+110\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+111\r
+MItem\r
+19\r
+src\lib\lib_com.cpp\r
+112\r
+WString\r
+6\r
+CPPOBJ\r
+113\r
+WVList\r
+0\r
+114\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+115\r
+MItem\r
+12\r
+src\main.cpp\r
+116\r
+WString\r
+6\r
+CPPOBJ\r
+117\r
+WVList\r
+0\r
+118\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+119\r
+MItem\r
+13\r
+src\timer.cpp\r
+120\r
+WString\r
+6\r
+CPPOBJ\r
+121\r
+WVList\r
+0\r
+122\r
+WVList\r
+0\r
+49\r
+1\r
+1\r
+0\r
+123\r
+MItem\r
+3\r
+*.h\r
+124\r
+WString\r
+3\r
+NIL\r
+125\r
+WVList\r
+0\r
+126\r
+WVList\r
+0\r
+-1\r
+1\r
+0\r
+0\r
+127\r
+MItem\r
+12\r
+src\eng_ai.h\r
+128\r
+WString\r
+3\r
+NIL\r
+129\r
+WVList\r
+0\r
+130\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+131\r
+MItem\r
+14\r
+src\eng_comm.h\r
+132\r
+WString\r
+3\r
+NIL\r
+133\r
+WVList\r
+0\r
+134\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+135\r
+MItem\r
+14\r
+src\eng_core.h\r
+136\r
+WString\r
+3\r
+NIL\r
+137\r
+WVList\r
+0\r
+138\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+139\r
+MItem\r
+13\r
+src\eng_gfx.h\r
+140\r
+WString\r
+3\r
+NIL\r
+141\r
+WVList\r
+0\r
+142\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+143\r
+MItem\r
+13\r
+src\eng_snd.h\r
+144\r
+WString\r
+3\r
+NIL\r
+145\r
+WVList\r
+0\r
+146\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+147\r
+MItem\r
+12\r
+src\engine.h\r
+148\r
+WString\r
+3\r
+NIL\r
+149\r
+WVList\r
+0\r
+150\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+151\r
+MItem\r
+18\r
+src\lib\dos_comm.h\r
+152\r
+WString\r
+3\r
+NIL\r
+153\r
+WVList\r
+0\r
+154\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+155\r
+MItem\r
+17\r
+src\lib\dos_gfx.h\r
+156\r
+WString\r
+3\r
+NIL\r
+157\r
+WVList\r
+0\r
+158\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+159\r
+MItem\r
+17\r
+src\lib\lib_com.h\r
+160\r
+WString\r
+3\r
+NIL\r
+161\r
+WVList\r
+0\r
+162\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+163\r
+MItem\r
+14\r
+src\lib\opl2.h\r
+164\r
+WString\r
+3\r
+NIL\r
+165\r
+WVList\r
+0\r
+166\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
+167\r
+MItem\r
+11\r
+src\timer.h\r
+168\r
+WString\r
+3\r
+NIL\r
+169\r
+WVList\r
+0\r
+170\r
+WVList\r
+0\r
+123\r
+1\r
+1\r
+0\r
diff --git a/proj16.wpj b/proj16.wpj
new file mode 100644 (file)
index 0000000..c78d963
--- /dev/null
@@ -0,0 +1,43 @@
+40\r
+projectIdent\r
+0\r
+VpeMain\r
+1\r
+WRect\r
+-40\r
+0\r
+10320\r
+9946\r
+2\r
+MProject\r
+3\r
+MCommand\r
+0\r
+4\r
+MCommand\r
+0\r
+1\r
+5\r
+WFileName\r
+10\r
+proj16.tgt\r
+6\r
+WVList\r
+1\r
+7\r
+VComponent\r
+8\r
+WRect\r
+0\r
+0\r
+5700\r
+4293\r
+0\r
+0\r
+9\r
+WFileName\r
+10\r
+proj16.tgt\r
+0\r
+0\r
+7\r
diff --git a/remake.bat b/remake.bat
new file mode 100644 (file)
index 0000000..2ddbf41
--- /dev/null
@@ -0,0 +1 @@
+ide2make -p proj16.wpj -h 8 proj16.tgt\r
diff --git a/src/eng_ai.cpp b/src/eng_ai.cpp
new file mode 100644 (file)
index 0000000..525e62e
--- /dev/null
@@ -0,0 +1,12 @@
+#include "src\eng_ai.h"\r
+#include <iostream>\r
+\r
+namespace engine {\r
+\r
+       void do_artificial_intelligence()\r
+       {\r
+               //artificial intelligence here\r
+//====         std::cout << "A.I. HERE" << std::endl;\r
+       }\r
+\r
+}
\ No newline at end of file
diff --git a/src/eng_ai.h b/src/eng_ai.h
new file mode 100644 (file)
index 0000000..33da40e
--- /dev/null
@@ -0,0 +1,8 @@
+#ifndef _ENGINE_ARTIFICIAL_INTELLIGENCE_H_\r
+#define _ENGINE_ARTIFICIAL_INTELLIGENCE_H_\r
+\r
+namespace engine {\r
+       void do_artificial_intelligence();\r
+}\r
+\r
+#endif/*_ENGINE_ARTIFICIAL_INTELLIGENCE_H_*/
\ No newline at end of file
diff --git a/src/eng_comm.cpp b/src/eng_comm.cpp
new file mode 100644 (file)
index 0000000..9d8a6d1
--- /dev/null
@@ -0,0 +1,61 @@
+#include "src\eng_comm.h"\r
+#include <iostream>\r
+               int xxxx = 0;\r
+               int yyyy = 0;\r
+               int qing = 4;\r
+\r
+namespace engine {\r
+\r
+       /*engine_message do_communication()\r
+       {\r
+               //communication here\r
+//====         std::cout << "COMMUNICATION HERE" << std::endl;\r
+               int msg;\r
+               std::cout << "Enter 1 for continue." << std::endl;\r
+               std::cin >> msg;\r
+               return msg == 1 ? ENGINE_RUN : ENGINE_QUIT;\r
+       }*/\r
+       /*engine_message do_communication(bool *input)\r
+       {\r
+               //communication here\r
+//====         std::cout << "COMMUNICATION HERE" << std::endl;\r
+               return input['e'] == true ? ENGINE_QUIT : ENGINE_RUN;\r
+       }*/\r
+       engine_message do_communication(byte input)\r
+       {\r
+               //communication here\r
+//====         std::cout << "COMMUNICATION HERE" << std::endl;\r
+               if(input == 44){\r
+                       FMKeyOn(0, 0x106, 4);\r
+               }else if(input == 172) FMKeyOff(0);\r
+               if(input == KEY_X){\r
+                       sound(440);\r
+                       delay(100);\r
+                       nosound();\r
+                       //delay(50);\r
+               }else if(input == KEY_X+128) nosound();\r
+               if(12 >= input && input >= 2) qing = input - 1;\r
+               if(input == 57) qing = 0;
+               \r
+               if(qing > 0){\r
+                       ding(qing);\r
+               }else{\r
+                       if(keyp(KEY_UP) || keyp(KEY_DOWN) || keyp(KEY_LEFT) || keyp(KEY_RIGHT)) etesuto(xxxx, yyyy);\r
+                       if(keyp(KEY_UP)){\r
+                               if(--yyyy < 0) yyyy = 0;\r
+                       }else if(keyp(KEY_DOWN)){\r
+                               if(++yyyy >= SH) yyyy = SH - 1;\r
+                       }\r
+                       if(keyp(KEY_LEFT)){\r
+                               if(--xxxx < 0) xxxx = 0;\r
+                       }\r
+                       if(keyp(KEY_RIGHT)){\r
+                               if(++xxxx >= SW) xxxx = SW - 1;\r
+                       }\r
+                       qtesuto(xxxx, yyyy, 14);\r
+               }\r
+               //if(input) printf("%03d\n", input);
+               return input == 1 ? ENGINE_QUIT : ENGINE_RUN;\r
+       }\r
+\r
+}\r
diff --git a/src/eng_comm.h b/src/eng_comm.h
new file mode 100644 (file)
index 0000000..ef47209
--- /dev/null
@@ -0,0 +1,14 @@
+#ifndef _ENGINE_COMMUNICATION_H_\r
+#define _ENGINE_COMMUNICATION_H_\r
+\r
+#include "src\engine.h"\r
+#include "src\lib\dos_comm.h"\r
+#include "src\lib\dos_gfx.h"
+#include "src\lib\opl2.h"\r
+\r
+namespace engine {\r
+               //engine_message do_communication();\r
+               engine_message do_communication(byte input);\r
+}\r
+\r
+#endif/*_ENGINE_COMMUNICATION_H_*/
\ No newline at end of file
diff --git a/src/eng_core.cpp b/src/eng_core.cpp
new file mode 100644 (file)
index 0000000..67c5097
--- /dev/null
@@ -0,0 +1,199 @@
+#include "src\eng_core.h"\r
+#include <list>\r
+#include "src\eng_snd.h"\r
+#include "src\eng_gfx.h"\r
+#include "src\eng_comm.h"\r
+#include "src\eng_ai.h"\r
+\r
+#include <iostream>\r
+\r
+#include "src\lib\dos_gfx.h"\r
+#include "src\lib\opl2.h"\r
+#include "src\lib\dos_comm.h"\r
+\r
+namespace engine{\r
+\r
+       Core::Core()\r
+       {\r
+               // Hardware Initiation\r
+               this->init();\r
+               \r
+               //default constructor\r
+               this->fp = new std::list<void(Core::*)()>;\r
+               this->msg = ENGINE_RUN;\r
+               this->timer.start_timer();\r
+               this->frames_per_second = 60;
+\r
+               this->fp->push_back(&Core::sound);\r
+               this->fp->push_back(&Core::graphics);\r
+               this->fp->push_back(&Core::comm);\r
+               this->fp->push_back(&Core::ai);\r
+\r
+               //this->fp.push_back(&core::sound);\r
+               //this->fp.push_back(&core::graphics);\r
+               //this->fp.push_back(&core::comm);\r
+               //this->fp.push_back(&engine::core::ai);
+
+               // Global Variables
+               this->qing = 4; // test global variable\r
+               this->x = 0; // X
+               this->y = 0; // Y\r
+       }\r
+\r
+       void Core::update()\r
+       {\r
+               for (std::list<void(Core::*)()>::iterator i = fp->begin(); i != fp->end(); i++)\r
+               //for (std::list<void(core::*)()>::iterator i = this->fp.begin(); i != this->fp.end(); i++)\r
+               {\r
+                       \r
+                       (this->*(*i))();\r
+               }\r
+\r
+       }\r
+\r
+       void Core::sound()\r
+       {\r
+               //wrap sound lib\r
+               do_sound();\r
+       }\r
+       void Core::graphics()\r
+       {\r
+               //int num_frames = 60;\r
+               //double fps = 1.0 / num_frames;\r
+               //double now = this->timer.elapsed_timer();\r
+               //std::cout << "fps: " << fps << "      now: " << now << std::endl;\r
+               //if (this->timer.elapsed_timer() >= fps)\r
+               //{\r
+               //wrap graphics lib\r
+               do_graphics();\r
+               //this->timer.start_timer();\r
+               //}\r
+       }\r
+       void Core::comm()\r
+       {\r
+               //int num_frames = 60;\r
+               //double fps = 1.0 / num_frames;\r
+               //double now = this->timer.elapsed_timer();\r
+               //std::cout << "fps: " << fps << "      now: " << now << std::endl;\r
+               //if (this->timer.elapsed_timer() >= fps)\r
+               //{\r
+               //wrap comm lib\r
+               this->msg = do_communication(scankey());\r
+               //this->timer.start_timer();\r
+               //}\r
+       }\r
+       void Core::ai()\r
+       {\r
+               //wrap A.I. lib\r
+               do_artificial_intelligence();\r
+       }\r
+\r
+       engine_message Core::_msg()\r
+       {\r
+               return this->msg;\r
+       }\r
+\r
+       void Core::run()\r
+       {\r
+//----         int i = 0;\r
+               while (ENGINE_EXIT != this->msg)\r
+               {\r
+                       //next line for purely testing purposes\r
+//----                 i++;if(i==600){char a;std::cin >> a;this->keeq[a] = true;i=0;}\r
+                       this->sync();\r
+                       this->input();\r
+                       this->update();
+//tt                   std::cout << this->qing << std::endl;
+               }\r
+       }\r
+\r
+       bool Core::init(){\r
+               bool xz = 0; // error switch...\r
+               std::cout << "VIDEO INITIATION" << std::endl;\r
+               setvideo(0x13, 1);\r
+               setvbuff(1);\r
+               std::cout << "Checking for Adlib sound card...." << std::endl;\r
+               if(!AdlibExists()){\r
+                       std::cout << "not found." << std::endl;\r
+                       xz = 1;\r
+               }\r
+               std::cout << "found." << std::endl;\r
+               std::cout << "OPL2 INITIATION" << std::endl;\r
+               fmtest();\r
+               std::cout << "\nPress ESC to quit the game engine core test." << std::endl;\r
+               std::cout << "1 - 9 for graphical tests!" << std::endl;\r
+               std::cout << "space bar for control and sprite test!" << std::endl;\r
+               std::cout << "z key for noise!" << std::endl;\r
+               std::cout << "Press press any key to continue!" << std::endl;\r
+               getch();\r
+               std::cout << "INPUT INITIATION" << std::endl;\r
+               setkb(1);\r
+               std::cout << "INITIATION" << std::endl;\r
+               return xz;\r
+       }\r
+\r
+       void Core::release()\r
+       {\r
+               //release contexts and set engine to exit\r
+               setvideo(0x03, 0);\r
+               setvbuff(0);\r
+               setkb(0);\r
+               FMReset();\r
+               this->msg = ENGINE_EXIT;\r
+       }\r
+\r
+       void Core::input(){\r
+               //retrieve input device information\r
+               //dummy 'w' and 'p' down, t up\r
+//----         bool dummy_input_available = true;\r
+//----         if(dummy_input_available)\r
+               //if (scankey() <= 128)\r
+//----         {\r
+//----                 std::cout << "key down" << std::endl;\r
+//----                 this->keeq['w'] = true;\r
+//----                 this->keeq['p'] = true;\r
+//----                 this->keeq['t'] = false;\r
+                       //notify engine that input occured\r
+                       this->msg = ENGINE_INPUT;\r
+//----         }\r
+//----         else\r
+//----         {\r
+//----                 std::cout << "key up" << std::endl;\r
+//----                 this->msg = ENGINE_RUN;\r
+//----         }\r
+       }\r
+\r
+       void Core::sync()\r
+       {\r
+               if (this->timer.elapsed_timer() >= (1.0 / this->frames_per_second))\r
+               {\r
+                       //int a;std::cin >> a;\r
+                       this->fp->push_back(&Core::graphics);\r
+                       this->timer.start_timer();\r
+//====                 std::cout << "GRAPHICS GRAPHICS GRAPHICS GRAPHICS GRAPHICS" << std::endl;\r
+               }\r
+               else\r
+               {\r
+                       this->fp->remove(&Core::graphics);\r
+               }\r
+               if (ENGINE_INPUT == this->msg)\r
+               {\r
+                       this->fp->push_back(&Core::comm);\r
+               }\r
+               else\r
+               {\r
+                       this->fp->remove(&Core::comm);\r
+               }\r
+               if (ENGINE_QUIT == this->msg)\r
+               {\r
+                       this->fp->push_back(&Core::release);\r
+               }\r
+       }\r
+\r
+       Core::~Core()\r
+       {\r
+               //deconstructor\r
+               delete(this->fp);\r
+       }\r
+\r
+}\r
diff --git a/src/eng_core.h b/src/eng_core.h
new file mode 100644 (file)
index 0000000..a704402
--- /dev/null
@@ -0,0 +1,42 @@
+#ifndef _ENGINE_CORE_H_\r
+#define _ENGINE_CORE_H_\r
+\r
+#include <list>\r
+#include "src\engine.h"\r
+#include "src\timer.h"\r
+\r
+namespace engine {\r
+       class Core\r
+       {\r
+       public:
+               Core();\r
+               void update();\r
+               void sound();\r
+               void graphics();\r
+               void comm();\r
+               void ai();\r
+               engine_message _msg();\r
+               void run();\r
+               bool init();\r
+               void release();\r
+               void input();\r
+               void sync();\r
+               ~Core();\r
+\r
+       protected:\r
+       private:\r
+               engine_message msg;\r
+               std::list<void(Core::*)()> *fp;\r
+               Timer timer;
+//             bool keeq[NUM_SCAN_QUE];\r
+               int frames_per_second;\r
+               //std::list<void(core::*)()> fp;
+/*             int xxxx = 0;\r
+               int yyyy = 0;*/\r
+               int qing;
+               int x;
+               int y;\r
+       };\r
+}\r
+\r
+#endif/*_ENGINE_CORE_H_*/
\ No newline at end of file
diff --git a/src/eng_gfx.cpp b/src/eng_gfx.cpp
new file mode 100644 (file)
index 0000000..3ab208c
--- /dev/null
@@ -0,0 +1,16 @@
+#include "src\eng_gfx.h"\r
+#include <iostream>\r
+\r
+namespace engine {\r
+\r
+       void do_graphics()\r
+       {\r
+               //graphics here\r
+//====         std::cout << "GRAPHICS HERE" << std::endl;\r
+               //ding(10);\r
+               /*clearscr();\r
+               BlockMove();*/\r
+               //colortest();\r
+       }\r
+\r
+}\r
diff --git a/src/eng_gfx.h b/src/eng_gfx.h
new file mode 100644 (file)
index 0000000..2533c1a
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _ENGINE_GRAPHICS_H_\r
+#define _ENGINE_GRAPHICS_H_\r
+\r
+#include "src\lib\dos_gfx.h"\r
+\r
+namespace engine {\r
+               void do_graphics();\r
+}\r
+\r
+#endif/*_ENGINE_GRAPHICS_H_*/
\ No newline at end of file
diff --git a/src/eng_snd.cpp b/src/eng_snd.cpp
new file mode 100644 (file)
index 0000000..7ca496b
--- /dev/null
@@ -0,0 +1,13 @@
+#include "src\eng_snd.h"\r
+#include <iostream>\r
+\r
+namespace engine {\r
+\r
+       void do_sound()\r
+       {\r
+               //sound here\r
+//====         std::cout << "SOUND HERE" << std::endl;\r
+               //soundtest();
+       }\r
+\r
+}
\ No newline at end of file
diff --git a/src/eng_snd.h b/src/eng_snd.h
new file mode 100644 (file)
index 0000000..4f1adeb
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _ENGINE_SOUND_H_\r
+#define _ENGINE_SOUND_H_\r
+\r
+#include "src\lib\opl2.h"\r
+\r
+namespace engine {\r
+               void do_sound();\r
+}\r
+\r
+#endif/*_ENGINE_SOUND_H_*/
\ No newline at end of file
diff --git a/src/engine.h b/src/engine.h
new file mode 100644 (file)
index 0000000..d188c21
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _ENGINE_H_\r
+#define _ENGINE_H_
+
+typedef enum {\r
+       ENGINE_EXIT,\r
+       ENGINE_QUIT,\r
+       ENGINE_RUN,\r
+       ENGINE_INPUT\r
+} engine_message;\r
+#endif
diff --git a/src/lib/dos_comm.c b/src/lib/dos_comm.c
new file mode 100644 (file)
index 0000000..3712942
--- /dev/null
@@ -0,0 +1,101 @@
+/* Thanks to Alex Russell for example code */
+/* Thanks to Gary Neal for example code */\r
+#include "src\lib\dos_comm.h"\r
+\r
+// Q code
+byte kee;\r
+byte keer[128];        /* key pressed */
+byte keep[128];        /* key released */
+
+#ifdef __cplusplus             /* Functions must be declared C style */\r
+extern "C" {\r
+#endif\r
+extern void interrupt (far *oldkb)(void) = NULL; /* BIOS keyboard handler */
+#ifdef __cplusplus\r
+}\r
+#endif\r
+/*****************NEW KEYBOARD 09h ISR***********************/\r
+void interrupt newkb(void){\r
+       register char qx;\r
+
+       kee = inp(0x60);        /* Read the keyboard scan code */
+\r
+       /* Clear keyboard controller on XT machines */\r
+       qx = inp(0x61);\r
+       qx |= 0x82;\r
+       outp(0x61, qx);\r
+       qx &= 0x7F;\r
+       outp(0x61, qx);
+
+       /* Interpret the scan code and set our flags */\r
+       if(kee & 0x80)\r
+               keep[kee & 0x7F] = 0;\r
+       else\r
+               keep[kee] = keer[kee] = 1;
+\r
+       outp(0x20, 0x20);\r
+}\r
+\r
+/* ---------------------- init_keyboard() ---------------- April 17,1993 */\r
+/* restore the bios keyboard handler */\r
+/* ---------------------- deinit_keyboard() -------------- April 17,1993 */\r
+void setkb(int vq){\r
+       if(!vq){ // deinitiation
+               /* Abort if our function pointer has no valid address */\r
+               if(oldkb == NULL) return;
+               /* Set address in our function pointer in interrupt vector table */
+               _dos_setvect(9, oldkb);
+               /* Reset our function pointer to contain no valid address */\r
+               oldkb = NULL;
+       }else if(vq == 1){ // initiation
+               int i;  /* Index variable */
+               byte far *lock_key;
+
+               /* Abort if our function pointer has a valid address. */\r
+               if(oldkb != NULL) return;\r
+
+               /* Clear the keyboard buttons state arrays */\r
+               for(i = 0; i < 128; i++)\r
+                       keep[i] = keer[i] = 0;
+\r
+               /* save old BIOS key board handler */\r
+               oldkb = _dos_getvect(9);\r
+\r
+               // turn off num-lock via BIOS\r
+               lock_key = MK_FP(0x040, 0x017); //wtf is going on here?\r
+               *lock_key&=(~(16 | 32 | 64));   // toggle off the lock keys\r
+               oldkb();        // call BIOS keyhandler to change keyboard lights\r
+
+               /* setup our own handler */\r
+               _dos_setvect(9, newkb);\r
+       }\r
+}\r
+\r
+/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\\r
+ * keyp                                                              *\r
+ *                                                                         *\r
+ * Returns the status of the key requested.                                *\r
+ * The status is 1 if the key is pressed or has been pressed since the     *\r
+ * last call to this function for that particular key.                     *\r
+\* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */\r
+char keyp(byte c){\r
+       register char retVal;\r
+\r
+       /* Key value in range of keyboard keys available */\r
+       c &= 0x7F;\r
+
+       /* Get the status of the key requested */\r
+       retVal = keep[c] | keer[c];\r
+\r
+       /* Reset the was pressed status for the requested key */\r
+       keer[c] = 0;
+
+       /* Return the requested key's state */\r
+       return retVal;\r
+}\r
+
+// tesuto\r
+byte scankey(){\r
+       //if(keyp(kee)) printf("%c %03d %03x\n", kee, kee, kee);\r
+       return kee;\r
+}
diff --git a/src/lib/dos_comm.h b/src/lib/dos_comm.h
new file mode 100644 (file)
index 0000000..6f33751
--- /dev/null
@@ -0,0 +1,106 @@
+#ifndef _DOSLIB_COMM_H_\r
+#define _DOSLIB_COMM_H_\r
+#include "src\lib\lib_com.h"
+
+/* Control codes for all keys on the keyboard */\r
+#define KEY_A           (0x1E)\r
+#define KEY_B           (0x30)\r
+#define KEY_C           (0x2E)\r
+#define KEY_D           (0x20)\r
+#define KEY_E           (0x12)\r
+#define KEY_F           (0x21)\r
+#define KEY_G           (0x22)\r
+#define KEY_H           (0x23)\r
+#define KEY_I           (0x17)\r
+#define KEY_J           (0x24)\r
+#define KEY_K           (0x25)\r
+#define KEY_L           (0x26)\r
+#define KEY_M           (0x32)\r
+#define KEY_N           (0x31)\r
+#define KEY_O           (0x18)\r
+#define KEY_P           (0x19)\r
+#define KEY_Q           (0x10)\r
+#define KEY_R           (0x13)\r
+#define KEY_S           (0x1F)\r
+#define KEY_T           (0x14)\r
+#define KEY_U           (0x16)\r
+#define KEY_V           (0x2F)\r
+#define KEY_W           (0x11)\r
+#define KEY_X           (0x2D)\r
+#define KEY_Y           (0x15)\r
+#define KEY_Z           (0x2C)\r
+#define KEY_1           (0x02)\r
+#define KEY_2           (0x03)\r
+#define KEY_3           (0x04)\r
+#define KEY_4           (0x05)\r
+#define KEY_5           (0x06)\r
+#define KEY_6           (0x07)\r
+#define KEY_7           (0x08)\r
+#define KEY_8           (0x09)\r
+#define KEY_9           (0x0A)\r
+#define KEY_0           (0x0B)\r
+#define KEY_DASH        (0x0C)      /* -_ */\r
+#define KEY_EQUAL       (0x0D)      /* =+ */\r
+#define KEY_LBRACKET    (0x1A)      /* [{ */\r
+#define KEY_RBRACKET    (0x1B)      /* ]} */\r
+#define KEY_SEMICOLON   (0x27)      /* ;: */\r
+#define KEY_RQUOTE      (0x28)      /* '" */\r
+#define KEY_LQUOTE      (0x29)      /* `~ */\r
+#define KEY_PERIOD      (0x33)      /* .> */\r
+#define KEY_COMMA       (0x34)      /* ,< */\r
+#define KEY_SLASH       (0x35)      /* /? */\r
+#define KEY_BACKSLASH   (0x2B)      /* \| */\r
+#define KEY_F1          (0x3B)\r
+#define KEY_F2          (0x3C)\r
+#define KEY_F3          (0x3D)\r
+#define KEY_F4          (0x3E)\r
+#define KEY_F5          (0x3F)\r
+#define KEY_F6          (0x40)\r
+#define KEY_F7          (0x41)\r
+#define KEY_F8          (0x42)\r
+#define KEY_F9          (0x43)\r
+#define KEY_F10         (0x44)\r
+#define KEY_ESC         (0x01)\r
+#define KEY_BACKSPACE   (0x0E)\r
+#define KEY_TAB         (0x0F)\r
+#define KEY_ENTER       (0x1C)\r
+#define KEY_CONTROL     (0x1D)\r
+#define KEY_LSHIFT      (0x2A)\r
+#define KEY_RSHIFT      (0x36)\r
+#define KEY_PRTSC       (0x37)\r
+#define KEY_ALT         (0x38)\r
+#define KEY_SPACE       (0x39)\r
+#define KEY_CAPSLOCK    (0x3A)\r
+#define KEY_NUMLOCK     (0x45)\r
+#define KEY_SCROLLLOCK  (0x46)\r
+#define KEY_HOME        (0x47)\r
+#define KEY_UP          (0x48)\r
+#define KEY_PGUP        (0x49)\r
+#define KEY_MINUS       (0x4A)\r
+#define KEY_LEFT        (0x4B)\r
+#define KEY_CENTER      (0x4C)\r
+#define KEY_RIGHT       (0x4D)\r
+#define KEY_PLUS        (0x4E)\r
+#define KEY_END         (0x4F)\r
+#define KEY_DOWN        (0x50)\r
+#define KEY_PGDOWN      (0x51)\r
+#define KEY_INS         (0x52)\r
+#define KEY_DEL         (0x53)\r
+
+#ifdef __cplusplus      /* Functions must be declared C style */\r
+extern "C" {\r
+#endif\r
+void interrupt far newkb(void);\r
+//extern void interrupt (far *oldkb)(void);\r
+void setkb(int vq);\r
+char keyp(byte c);
+byte scankey();
+
+/* Define macro */\r
+#define kepn(c) keep[c & 0x7F]
+
+#ifdef __cplusplus\r
+}\r
+#endif
+\r
+#endif/*_DOSLIB_COMM_H_*/\r
diff --git a/src/lib/dos_gfx.cpp b/src/lib/dos_gfx.cpp
new file mode 100644 (file)
index 0000000..bb1e4cf
--- /dev/null
@@ -0,0 +1,299 @@
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// TUTPROG4.CPP - VGA Trainer Program 4 (in Turbo C++ 3.0)                 //\r
+//                                                                         //\r
+// "The VGA Trainer Program" is written by Denthor of Asphyxia. However it //\r
+// was limited to Pascal only in its first run.  All I have done is taken  //\r
+// his original release, translated it to C++ and touched up a few things. //\r
+// I take absolutely no credit for the concepts presented in this code and //\r
+// am NOT the person to ask for help if you are having trouble.            //\r
+//                                                                         //\r
+// Program Notes : This program implements virtual screens, a great way    //\r
+//                 to update your screen.                                  //\r
+//                                                                         //\r
+//                 For this particular program, I have found the compiler  //\r
+//                 option -mc (Compact memory model) to work better than   //\r
+//                 -ml (Large memory model).  However, you must use -mc or //\r
+//                 greater.                                                //\r
+//                 Also, you might want to go under "Options...Debugger"   //\r
+//                 and increase your programs Heap size to >64k.  I don't  //\r
+//                 know if <64k will lock your system, but I had problems. //\r
+//                                                                         //\r
+// Author        : Grant Smith (Denthor) - denthor@beastie.cs.und.ac.za    //\r
+// Translator    : Christopher G. Mann   - r3cgm@dax.cc.uakron.edu         //\r
+//                                                                         //\r
+// Last Modified : December 23, 1994                                       //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+#include "src\lib\dos_gfx.h"\r
+\r
+// declare a pointer to the offset of the Virtual Screen\r
+byte *vaddr = NULL;\r
+// declare a pointer to the offset of the VGA memory\r
+byte *vga = (byte *) MK_FP(VMEM, 0);\r
+int old_mode;\r
+//color てすと\r
+int gq = LGQ;\r
+//てすと\r
+int q = 0;\r
+int bakax = 0, bakay = 0;\r
+int xx = 0, yy = 0, sx = 0, sy = 0;\r
+byte coor;\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// setvideo() - This function Manages the video modes                      //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+void setvideo(byte mode, int vq){\r
+       union REGS in, out;\r
+\r
+       if(!vq){ // deinit the video\r
+               // change to the video mode we were in before we switched to mode 13h\r
+               in.h.ah = 0x00;\r
+               in.h.al = old_mode;\r
+               int86(0x10, &in, &out);\r
+       }else if(vq == 1){ // init the video\r
+               // get old video mode\r
+               in.h.ah = 0xf;\r
+               int86(0x10, &in, &out);\r
+               old_mode = out.h.al;\r
+\r
+               // enter mode\r
+               in.h.ah = 0x00;\r
+               in.h.al = mode;\r
+               // vesa\r
+               //in.x.ax = 0x4f02;\r
+               //in.x.bx = mode;\r
+               int86(0x10, &in, &out);\r
+       }\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// setvbuff() - This manages the memory needed for the virtual screen.     //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+// manages the buffer/virtual screen\r
+void setvbuff(int vq){\r
+       if(!vq){\r
+               free(vaddr);\r
+       }else if(vq == 1){\r
+               vaddr = (byte *) calloc(SW*SH, 1);\r
+\r
+               if(vaddr == NULL){\r
+                       setvideo(0x03, 1);\r
+                       cout << "Not enough video memory available, exiting program....";\r
+                       exit(1);\r
+               }\r
+       }\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// updatevbuff() - This flips the virtual screen to the VGA screen.        //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+// updates the buffer/virtual screen\r
+void updatevbuff(){\r
+/*     // wait for vertical re-trace\r
+       while(inportb(INPUT_STATUS_0) & 8);\r
+       while(!(inportb(INPUT_STATUS_0) & 8));*/\r
+\r
+       // copy everything to video memory\r
+       _fmemcpy(vga, vaddr, SW*SH);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// cls() - This clears the screen to the specified color, on the VGA or on //\r
+//         the Virtual screen.                                             //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+void cls(byte color, byte *Where){\r
+       _fmemset(Where, color, SW*SH);\r
+}\r
+\r
+// clears the entire video output\r
+void clearscr(){\r
+       cls(0, vga);\r
+       cls(0, vaddr);\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// plotpixel() - This puts a pixel at X,Y using color Col, on VGA or the    //\r
+//              Virtual Screen;                                            //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+void plotpixel(int x, int y, byte color, byte *Where){\r
+       memset(Where+(x+(y*SW)),color,1);\r
+}\r
+\r
+// king_crimson's code\r
+void plotpixelfast(int x, int y, byte color, byte *Where) {\r
+       byte far *vidptr;\r
+       vidptr = (byte far *)(Where + y*SW + x);\r
+       *vidptr = color;\r
+}\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//                                                                         //\r
+// BlockMove() - This tests various ways of moving a block around the      //\r
+//               screen.                                                   //\r
+//                                                                         //\r
+/////////////////////////////////////////////////////////////////////////////\r
+//てすと\r
+void BlockMove(){\r
+       int loop1, loop2, loop3;\r
+\r
+       // This draws a block directly to the VGA with no flipping\r
+       for(loop1=1; loop1<271; loop1++){\r
+       for(loop2=1; loop2<51; loop2++)\r
+               for(loop3=1; loop3<51; loop3++)\r
+                       plotpixel(loop1+loop2,loop3,32, vga);\r
+               cls(0,vga);\r
+       }\r
+\r
+       //`\r
+       for(loop1=1; loop1<281; loop1++){\r
+       for(loop2=1; loop2<41; loop2++)\r
+               for(loop3=1; loop3<41; loop3++)\r
+                       plotpixel(loop1+loop2,loop3,14, vaddr);\r
+               updatevbuff();\r
+               cls(0,vaddr);\r
+       }\r
+\r
+/*     // This draws to the virtual screen, waits for retrace, then flips to VGA\r
+       for(loop1=1; loop1<51; loop1++){\r
+       for(loop2=1; loop2<51; loop2++)\r
+               for(loop3=1; loop3<51; loop3++)\r
+                       plotpixel(loop1+loop2,loop3,32, vaddr);\r
+//             WaitRetrace();\r
+               updatevbuff();\r
+               cls(0,vaddr);\r
+       }*/\r
+}\r
+\r
+void etesuto(int x = 160, int y = 100){\r
+       memset(vaddr+(x+(y*SW)),gq-1,1);\r
+       updatevbuff();\r
+}\r
+\r
+void qtesuto(int x = 160, int y = 100, int color = 0){\r
+       memset(vaddr+(x+(y*SW)),color,1);\r
+       updatevbuff();\r
+}\r
+\r
+//color てすと\r
+int colortest(){\r
+       if(gq < NUM_COLORS){\r
+               cls(gq, vaddr);\r
+               updatevbuff();\r
+               gq++;\r
+       }else gq = 0;\r
+       return gq;\r
+}\r
+\r
+//color てすと\r
+int colorz(){\r
+       if(gq < HGQ){\r
+               cls(gq, vaddr);\r
+               updatevbuff();\r
+               gq++;\r
+       }else gq = LGQ;\r
+       return gq;\r
+}\r
+\r
+//slow spectrum down\r
+void ssd(int svq){\r
+       if(sy < SH+1){\r
+               if(sx < SW+1){\r
+                       //plotpixel(xx, yy, coor, vga);\r
+                       plotpixelfast(sx, sy, coor, vga);\r
+                       //printf("%d %d %d %d\n", sx, sy, svq, coor);\r
+                       sx++;\r
+               }else sx = 0;\r
+               if(sx == SW){\r
+                       sy++;\r
+                       if(svq == 7) coor++;\r
+                       if(sy == SH && svq == 8) coor = rand()%NUM_COLORS;\r
+               }\r
+       }else sy = 0;\r
+}\r
+\r
+/*-----------ding-------------*/\r
+int ding(int q){\r
+       int d3y;\r
+\r
+       if(q <= 4 && gq == BONK-1) coor = rand()%NUM_COLORS;\r
+\r
+       if(q == 5){ colortest(); return gq; }\r
+       if(q == 10){ colorz(); return gq; }\r
+       if(q == 11){ colorz(); delay(100); return gq; }\r
+       if(q == 8){ ssd(q); /*printf("%d\n", coor);*/ }\r
+       if(q == 6){\r
+               coor = rand()%NUM_COLORS;\r
+               cls(coor, vaddr);\r
+               updatevbuff();\r
+       }\r
+\r
+       if(q == 7 || q== 9){\r
+               if(gq < HGQ){\r
+                       if(q == 7) ssd(q);\r
+                       if(q == 9){ ssd(q); coor++; }\r
+                       gq++;\r
+               }else gq = LGQ;\r
+       }\r
+       if(q<5 && gq<BONK){ // the number variable make the colors more noticable\r
+               if(q==1){\r
+                       if(xx==SW){bakax=0;}\r
+                       if(xx==0){bakax=1;}\r
+                       if(yy==SH){bakay=0;}\r
+                       if(yy==0){bakay=1;}\r
+               }else if(q==3){\r
+                       if(xx!=SW||yy!=SH){\r
+                               if(xx==0){bakax=1;bakay=-1;d3y=1;}\r
+                               if(yy==0){bakax=1;bakay=0;d3y=1;}\r
+                               if(xx==SW){bakax=-1;bakay=-1;d3y=1;}\r
+                               if(yy==SH){bakax=1;bakay=0;d3y=1;}\r
+                       }else if(xx==SW&&yy==SH) xx=yy=0;\r
+               }\r
+               if(q==3){\r
+                       if(d3y){\r
+                               if(bakay<0){\r
+                                       yy--;\r
+                                       d3y--;\r
+                               }else\r
+                               if(bakay>0){\r
+                                       yy++;\r
+                                       d3y--;\r
+                               }\r
+                       }\r
+                       if(bakax<0){\r
+                               xx--;\r
+                       }else\r
+                       if(bakax>0){\r
+                               xx++;\r
+                       }\r
+               }else{\r
+                       if(!bakax){\r
+                               xx--;\r
+                       }else{\r
+                               xx++;\r
+                       }\r
+                       if(!bakay){\r
+                               yy--;\r
+                       }else{\r
+                               yy++;\r
+                       }\r
+               }\r
+               // plot the pixel\r
+               plotpixelfast(xx, yy, coor, vga);\r
+               if(q==2) plotpixelfast(rand()%SW, rand()%SH, 0, vga);\r
+               if(q==2||q==4){ bakax = rand()&0x1; bakay = rand()&0x1; }\r
+               gq++;\r
+//             printf("%d %d %d %d\n", xx, yy, gq, coor);\r
+       }else gq = LGQ;\r
+       return gq;\r
+}\r
diff --git a/src/lib/dos_gfx.h b/src/lib/dos_gfx.h
new file mode 100644 (file)
index 0000000..97ff4af
--- /dev/null
@@ -0,0 +1,35 @@
+#ifndef _DOSLIB_GFX_H_\r
+#define _DOSLIB_GFX_H_\r
+#include <iostream.h>\r
+#include <stdlib.h>\r
+#include "src\lib\lib_com.h"\r
+\r
+#define SW             320 // width in pixels of vga mode\r
+#define SH             200 // height in pixels of vga mode\r
+#define NUM_COLORS     256 // number of colors in vga mode\r
+/*#define SW           320\r
+#define SH             200\r
+#define NUM_COLORS     4*/ // cga\r
+#define BONK           400\r
+#define LGQ            32\r
+#define HGQ            56\r
+#define VMEM           0xA000 // = vga\r
+//#define VMEM         0xB800 // = cga\r
+//#define VMOD         0x13\r
+\r
+void setvideo(byte mode, int vq);\r
+void setvbuff(int vq);\r
+void updatevbuff();\r
+void cls(byte color, byte *Where);\r
+void clearscr();\r
+void plotpixel(int x, int y, byte color, byte *Where);\r
+void plotpixelfast(int x, int y, byte color, byte *Where);\r
+void BlockMove();\r
+void etesuto(int x, int y);\r
+void qtesuto(int x, int y, int color);\r
+int colortest();\r
+int colorz();\r
+void ssd(int svq);\r
+int ding(int q);\r
+\r
+#endif/*_DOSLIB_GFX_H_*/\r
diff --git a/src/lib/dos_opl2.cpp b/src/lib/dos_opl2.cpp
new file mode 100644 (file)
index 0000000..1b495b4
--- /dev/null
@@ -0,0 +1,286 @@
+/* C Source File: ADLIB *****************************************************\r
+\r
+Author:            Kevin A. Lee\r
+\r
+Last Amended:      27th March, 1993\r
+\r
+Description:        Low-level interface to the Adlib (or compatible)\r
+FM sound card. All information gleaned from\r
+Jeffrey S. Lee's "Programming the Adlib/Sound\r
+Blaster FM Music Chips". See Lee's document for\r
+further information.\r
+Compiled succesfully under Turbo C, Borland C++,\r
+and Microsoft Quick C (all latest versions).\r
+\r
+****************************************************************************/\r
+#include "src\lib\opl2.h"\r
+
+//sound てすと
+int sq = 0;
+\r
+/* Function: WriteFM ********************************************************\r
+*\r
+*     Parameters:        reg - which FM register to write to.\r
+*                         value - value to write.\r
+*\r
+*     Description:        writes a value to the specified register and\r
+*                         waits for the "official" recommended periods.\r
+*\r
+*/\r
+void WriteFM(int reg, int value){\r
+       int i;\r
+\r
+       outp(ADLIB_FM_ADDRESS, (byte)reg);                              /* set up the register  */\r
+       for (i = 0; i < 6; i++) inp(ADLIB_FM_ADDRESS);  /* wait 12 cycles      */\r
+       outp(ADLIB_FM_DATA, (byte)value);                                       /* write out the value */\r
+       for(i = 0; i < 35; i++) inp(ADLIB_FM_ADDRESS);  /* wait 84 cycles      */\r
+} /* End of WriteFM */\r
+\r
+/* Function: ReadFM *********************************************************\r
+*\r
+*     Returns:            the value in the status register.\r
+*\r
+*     Description:        return a value in the status register.\r
+*\r
+*/\r
+int ReadFM(void){\r
+       return(inp(ADLIB_FM_ADDRESS));\r
+} /* End of ReadFM */\r
+\r
+/* Function: AdlibExists ****************************************************\r
+*\r
+*     Returns:            1 (true) if an Adlib compatible sound card\r
+*                         is present, else 0 (false).\r
+*\r
+*     Description:        determines whether an Adlib (or compatible)\r
+*                         sound card is present.\r
+*\r
+*/\r
+int AdlibExists(void){\r
+       int stat1, stat2;\r
+\r
+       WriteFM(0x04, 0x60);            /* reset both timers        */\r
+       WriteFM(0x04, 0x80);            /* enable timer interrupts  */\r
+       stat1 = ReadFM();                       /* read status register     */\r
+       WriteFM(0x02, 0xFF);\r
+       WriteFM(0x04, 0x21);            /* start timer 1            */\r
+//     wait(80);                               /* could do something useful*/\r
+       stat2 = ReadFM();                       /* read status register     */\r
+       WriteFM(0x04, 0x60);            /* reset both timers        */\r
+       WriteFM(0x04, 0x80);            /* enable timer interrupts  */\r
+\r
+       if(((stat1 & 0xE0) == 0x00) && ((stat2 & 0xE0) == 0xC0)) return(1);\r
+       return(0);\r
+} /* End of AdlibExists */\r
+\r
+/* Function: FMResest *******************************************************\r
+*\r
+*     Description:        quick and dirty sound card reset (zeros all\r
+*                         registers).\r
+*\r
+*/\r
+void FMReset(void/*int percusiveMode*/){\r
+       int i;\r
+\r
+       /* zero all registers */\r
+       for(i = MIN_REGISTER; i < MAX_REGISTER+1; i++) WriteFM(i, 0);\r
+\r
+       /* allow FM chips to control the waveform of each operator */\r
+       WriteFM(0x01, 0x20);\r
+\r
+       /* set rhythm enabled (6 melodic voices, 5 percussive) */\r
+       WriteFM(0xBD, 0x20);\r
+\r
+       //FMSetPercusiveMode(percusiveMode);\r
+} /* End of FMReset */\r
+/*\r
+void FMSetPercusiveMode(int state){\r
+       if(state){\r
+               WriteFM(0xBD, 0x20);\r
+               currentBDContents = 0x20;\r
+               percussiveMode = 1;\r
+               voiceModulator[7] = 16;\r
+               voiceModulator[8] = 14;\r
+               // we have to set the freq of voice 7 & 8 for the white noise gen.\r
+               // these frequency choices could certainly be better\r
+               WriteFM(0xa7, 1844 & 0xff);\r
+               WriteFM(0xb7, 1844 >> 8);\r
+               WriteFM(0xa8, 3764 & 0xff);\r
+               WriteFM(0xb8, 3764 >> 8);\r
+       }else{\r
+               WriteFM(0xBD, 0);\r
+               percussiveMode = 0;\r
+               currentBDContents = 0;\r
+               voiceModulator[7] = 13;\r
+               voiceModulator[8] = 14;\r
+       }\r
+}\r
+*/\r
+/* Function: FMKeyOff *******************************************************\r
+*\r
+*     Parameters:        voice - which voice to turn off.\r
+*\r
+*     Description:        turns off the specified voice.\r
+*\r
+*/\r
+void FMKeyOff(int voice){\r
+       int regNum;\r
+\r
+       /* turn voice off */\r
+       regNum = 0xB0 + voice % NUMVOICE;\r
+       WriteFM(regNum, 0x0E);\r
+} /* End of FMKeyOff */\r
+\r
+/* Function: FMKeyOn *******************************************************\r
+*\r
+*     Parameters:        voice - which voice to turn on.\r
+*                         freq - its frequency (note).\r
+*                         octave - its octave.\r
+*\r
+*     Description:        turns on a voice of specfied frequency and\r
+*                         octave.\r
+*\r
+*/\r
+void FMKeyOn(int voice, int freq, int octave){\r
+       int regNum, tmp;\r
+\r
+       regNum = 0xA0 + voice % NUMVOICE;\r
+       WriteFM(regNum, freq & 0xff);\r
+       regNum = 0xB0 + voice % NUMVOICE;\r
+       tmp = (freq >> 8) | (octave << 2) | 0x20;
+       WriteFM(regNum, tmp);\r
+} /* End of FMKeyOn */\r
+\r
+/* Function: FMVoiceVolume **************************************************\r
+*\r
+*     Parameters:        voice - which voice to set volume of\r
+*                         vol - new volume value (experiment).\r
+*\r
+*     Description:        sets the volume of a voice to the specified\r
+*                         value in the range (0-63)?\r
+*\r
+*/\r
+void FMVoiceVolume(int voice, int vol){\r
+       int regNum;\r
+\r
+       regNum = 0x40 + voice % NUMVOICE;\r
+       WriteFM(regNum, vol);\r
+} /* End of FMVoiceVolume */\r
+\r
+/* Function: FMSetVoice *****************************************************\r
+*\r
+*     Parameters:        voiceNum - which voice to set.\r
+*                         ins - instrument to set voice.\r
+*\r
+*     Description:        sets the instrument of a voice.\r
+*\r
+*/\r
+void FMSetVoice(int voiceNum, FMInstrument *ins){\r
+       int opCellNum, cellOffset;\r
+\r
+       voiceNum %= NUMVOICE;\r
+       cellOffset = voiceNum % 3 + ((voiceNum / 3) << 3);\r
+\r
+       /* set sound characteristic */\r
+       opCellNum = 0x20 + (char)cellOffset;\r
+       WriteFM(opCellNum, ins->SoundCharacteristic[0]);\r
+       opCellNum += 3;\r
+       WriteFM(opCellNum, ins->SoundCharacteristic[1]);\r
+\r
+       /* set level/output */\r
+       opCellNum = 0x40 + (char)cellOffset;\r
+       WriteFM(opCellNum, ins->Level[0]);\r
+       opCellNum += 3;\r
+       WriteFM(opCellNum, ins->Level[1]);\r
+\r
+       /* set Attack/Decay */\r
+       opCellNum = 0x60 + (char)cellOffset;\r
+       WriteFM(opCellNum, ins->AttackDecay[0]);\r
+       opCellNum += 3;\r
+       WriteFM(opCellNum, ins->AttackDecay[1]);\r
+\r
+       /* set Sustain/Release */\r
+       opCellNum = 0x80 + (char)cellOffset;\r
+       WriteFM(opCellNum, ins->SustainRelease[0]);\r
+       opCellNum += 3;\r
+       WriteFM(opCellNum, ins->SustainRelease[1]);\r
+\r
+       /* set Wave Select */\r
+       opCellNum = 0xE0 + (char)cellOffset;\r
+       WriteFM(opCellNum, ins->WaveSelect[0]);\r
+       opCellNum += 3;\r
+       WriteFM(opCellNum, ins->WaveSelect[1]);\r
+\r
+       /* set Feedback/Selectivity */\r
+       opCellNum = (byte)0xC0 + (byte)voiceNum;\r
+       WriteFM(opCellNum, ins->Feedback);\r
+} /* End of FMSetVoice */\r
+\r
+/* Function: LoadSBI ********************************************************\r
+*\r
+*     Parameters:        fileName - name of .SBI file.\r
+*                         ins - variable to place data in.\r
+*\r
+*     Description:        loads a .SBI into the instrument structure.\r
+*\r
+*/\r
+//int LoadSBI(char fileName[], FMInstrument *ins){\r
+//  int i;\r
+//  FILE *fp;\r
+//  size_t structSize = sizeof(FMInstrument);\r
+//\r
+//  if ((fp = fopen(fileName, "rb")) == NULL) return (0);\r
+//\r
+//  /* skip the header - or do we? */\r
+//  for (i = 0; i < 36; i++) fgetc(fp);\r
+//\r
+//  /* read the data */\r
+//  fread(ins, structSize, 1, fp);\r
+//\r
+//  fclose(fp);\r
+//  return (1);\r
+//} /* End of LoadSBI */\r
+\r
+/* test of the routines */\r
+void fmtest(){\r
+       enum SCALE test[] = { D4, E4, F4, G4, A4, B4, C4 };\r
+//     enum SCALE oct4[] = { 493.88, 466.16, 440, 415.3, 392, 369.99, 349.23, 329.63, 311.13, 293.66, 277.18, 261.63 };\r
+       static FMInstrument testInst =\r
+{\r
+0x00, 0x01,    /* modulator frequency multiple... 0x20 */\r
+0x00, 0x00,    /* modulator frequency level...    0x40 */\r
+0xF0, 0xF0,    /* modulator attack/decay...       0x60 */\r
+0x73, 0x73,    /* modulator sustain/release...    0x80 */\r
+0x03, 0x00,    /* output waveform distortion      0xE0 */\r
+0x36,                          /* feedback algorithm and strength 0xC0 */\r
+};\r
+       int i;\r
+       printf("Now testing tune....\n");\r
+//     printf("just hit any key 7 times.\n");\r
+       FMReset();\r
+       FMSetVoice(0, &testInst);
+       //extra
+//     WriteFM(0xB0, 0x09);
+//     WriteFM(0xB3, 0x07);
+       //extra
+       for(i = 0; i < 7; i++){\r
+               FMKeyOn(0, test[i], 4);
+               sound(test[i]);\r
+               wait(20);\r
+//             getche();
+               FMKeyOff(0);
+               nosound();\r
+               wait(1);\r
+       }\r
+}
+
+//sound てすと
+int soundtest(){
+       enum SCALE test[] = { D4, E4, F4, G4, A4, B4, C4 };\r
+       //FMKeyOn(0, test[sq], 4);
+       if(sq < 7){\r
+               sq++;\r
+       }else sq = 0;
+       FMKeyOff(0);
+       return sq;
+}
\ No newline at end of file
diff --git a/src/lib/lib_com.cpp b/src/lib/lib_com.cpp
new file mode 100644 (file)
index 0000000..b985161
--- /dev/null
@@ -0,0 +1,20 @@
+#include "src\lib\lib_com.h"\r
+\r
+/* local function */\r
+void wait(clock_t wait);\r
+\r
+/* Function: Wait **********************************************************\r
+*\r
+*     Parameters:    wait - time in microseconds\r
+*\r
+*     Description:    pauses for a specified number of microseconds.\r
+*\r
+*/\r
+void wait(clock_t wait){\r
+       clock_t goal;\r
+\r
+       if(!wait) return;\r
+\r
+       goal = wait + clock();\r
+       while((goal > clock()) && !kbhit()) ;\r
+} /* End of wait */
\ No newline at end of file
diff --git a/src/lib/lib_com.h b/src/lib/lib_com.h
new file mode 100644 (file)
index 0000000..183670a
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _LIBCOM_H_\r
+#define _LIBCOM_H_
+#include <dos.h>
+#include <stdio.h>\r
+#include <conio.h> // just for wait\r
+#include <time.h> // just for wait
+#include <i86.h>
+
+typedef unsigned char byte;
+
+void wait(clock_t wait);\r
+\r
+#endif/*_LIBCOM_H_*/
diff --git a/src/lib/opl2.h b/src/lib/opl2.h
new file mode 100644 (file)
index 0000000..c001e5c
--- /dev/null
@@ -0,0 +1,119 @@
+#ifndef _DOSLIB_SND_H_\r
+#define _DOSLIB_SND_H_\r
+/* C Header File: ADLIB *****************************************************\r
+\r
+Author:   Kevin A. Lee\r
+\r
+Last Amended: 27th April, 1993\r
+\r
+Description:    Low-level interface to the Adlib (or compatible)\r
+    FM sound card. All information gleaned from\r
+    Jeffrey S. Lee's "Programming the Adlib/Sound\r
+    Blaster FM Music Chips". See Lee's document for\r
+    further information.\r
+\r
+Compiled succesfully under Turbo C, Borland C++,\r
+and Microsoft Quick C (all latest versions).\r
+\r
+****************************************************************************/\r
+#include "src\lib\lib_com.h"\r
+\r
+#define NUMVOICE 11\r
+#define FACTOR  1193180\r
+#define OCTAVE  4
+\r
+#define MIN_REGISTER                   0x01\r
+#define MAX_REGISTER                   0xF5\r
+#define ADLIB_FM_ADDRESS       0x388   /* adlib address/status register */\r
+#define ADLIB_FM_DATA          0x389   /* adlib data register           */\r
+\r
+/*\r
+static int percussiveMode = 0,currentBDContents = 0;\r
+//static int opTable[18] = {0,1,2,3,4,5,8,9,10,11,12,13,16,17,18,19,20,21};\r
+static int voiceModulator[11] = {0,1,2,6,7,8,12,16,14,17,13};\r
+static int voiceCarrier[9] = {3,4,5,9,10,11,15,16,17};\r
+*/\r
+\r
+/*\r
+* FM Instrument definition for .SBI files - SoundBlaster instrument\r
+* - these are the important parts - we will skip the header, but since\r
+*   I am not sure where it starts and ends so I have had to guess.\r
+*   However it SEEMS! to work. Each array has two values, one for\r
+*   each operator.\r
+*/\r
+typedef struct{\r
+       byte SoundCharacteristic[2];    /* modulator frequency multiple...  */\r
+       byte Level[2];                  /* modulator frequency level...     */\r
+       byte AttackDecay[2];            /* modulator attack/decay...        */\r
+       byte SustainRelease[2];         /* modulator sustain/release...     */\r
+       byte WaveSelect[2];             /* output waveform distortion       */\r
+       byte Feedback;                  /* feedback algorithm and strength  */\r
+} FMInstrument;\r
+\r
+\r
+/*\r
+* Enumerated F-Numbers (in octave 4) for the chromatic scale.\r
+*/\r
+/*enum oct{\r
+       B4 = 493.88,\r
+       B4b = 466.16,\r
+       A4 = 440,\r
+       A4b = 415.3,\r
+       G4 = 392,\r
+       G4b = 369.99,\r
+       F4 = 349.23,\r
+       E4 = 329.63,\r
+       E4b = 311.13,\r
+       D4 = 293.66,\r
+       D4b = 277.18,\r
+       C4 = 261.63,\r
+       A0 = 27.50\r
+};*/\r
+enum SCALE{\r
+       B4  = 0x1EE,\r
+       B4b = 0x1D2,\r
+       A4  = 440,\r
+       A4b = 0x19F,\r
+       G4 = 0x188,\r
+       G4b  = 0x172,\r
+       F4  = 0x15D,\r
+       E4  = 0x14A,\r
+       E4b  = 0x137,\r
+       D4  = 0x126,\r
+       D4b = 0x115,\r
+       C4  = 0x106,\r
+       A0 = 0x7F2\r
+};
+unsigned short Notes[] = {\r
+        19327 ,        /* C b            */\r
+        18242 ,        /* C              */\r
+        17218 ,        /* C #   ( D b )  */\r
+        16252 ,        /* D              */\r
+        15340 ,        /* D #   ( E b )  */\r
+        14479 ,        /* E     ( F b )  */\r
+        13666 ,        /* F     ( E # )  */\r
+        12899 ,        /* F #   ( G b )  */\r
+        12175 ,        /* G              */\r
+        11492 ,        /* G #   ( A b )  */\r
+        10847 ,        /* A              */\r
+        10238 ,        /* A #   ( B b )  */\r
+        9664 ,         /* B     ( C b )  */\r
+        9121 ,         /* B #            */\r
+        0\r
+};\r
+\r
+/* function prototyping */\r
+void WriteFM(int reg, int value);\r
+int ReadFM(void);\r
+int AdlibExists(void);\r
+void FMReset(/*int percusiveMode*/);   /* Resets the card, quiets all voices, sets the percussive mode state */\r
+void FMKeyOff(int voice);typedef unsigned char byte;\r
+void FMKeyOn(int voice, int freq, int octave);\r
+void FMVoiceVolume(int voice, int vol);\r
+void FMSetVoice(int voiceNum, FMInstrument *ins);\r
+/* Remember: percussion instruments must be assigned only to the correct voice number. */\r
+//void FMSetPercusiveMode(int state);\r
+//int  LoadSBI(char filename[], FMInstrument *ins);\r
+void fmtest(void);
+int soundtest();\r
+#endif/*_DOSLIB_SND_H_*/
\ No newline at end of file
diff --git a/src/main.cpp b/src/main.cpp
new file mode 100644 (file)
index 0000000..aa0506f
--- /dev/null
@@ -0,0 +1,17 @@
+//Project 16 core version 0.0009.84 // wwww\r
+#include <list>\r
+#include <iostream>\r
+#include <stdlib.h>\r
+\r
+#include "src\eng_core.h"\r
+\r
+int main(/*int argc, const char* argv[]*/)\r
+{\r
+\r
+               engine::Core c;\r
+               c.run();\r
+\r
+               //int a;\r
+               //std::cin >> a;\r
+               return EXIT_SUCCESS;\r
+}
\ No newline at end of file
diff --git a/src/timer.cpp b/src/timer.cpp
new file mode 100644 (file)
index 0000000..f491d06
--- /dev/null
@@ -0,0 +1,41 @@
+#include "src\timer.h"\r
+#include <time.h>\r
+\r
+namespace engine {\r
+       Timer::Timer()\r
+       {\r
+               //default constructor\r
+       }\r
+\r
+       clock_t Timer::start_timer()\r
+       {\r
+               //time(&(this->t));\r
+               this->t = clock();\r
+               return this->t;\r
+       }\r
+\r
+       double Timer::elapsed_timer()\r
+       {\r
+               return static_cast<double>(clock() - this->t) / CLOCKS_PER_SEC;//difftime(time(NULL), this->t);\r
+       }\r
+\r
+       double Timer::time_in_seconds()\r
+       {\r
+               return static_cast<double>(this->t) / CLOCKS_PER_SEC;\r
+       }\r
+\r
+       double Timer::time_in_seconds(time_t in_t)\r
+       {\r
+               return static_cast<double>(in_t) / CLOCKS_PER_SEC;\r
+       }\r
+\r
+       clock_t Timer::_time()\r
+       {\r
+               return this->t;\r
+       }\r
+\r
+       Timer::~Timer()\r
+       {\r
+               //deconstructor\r
+       }\r
+}
\ No newline at end of file
diff --git a/src/timer.h b/src/timer.h
new file mode 100644 (file)
index 0000000..c7ba587
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _TIMER_H_\r
+#define _TIMER_H_\r
+#include <time.h>\r
+\r
+namespace engine {\r
+       class Timer\r
+       {\r
+       public:\r
+               Timer();\r
+               clock_t start_timer();\r
+               double elapsed_timer();\r
+               double time_in_seconds();\r
+               double time_in_seconds(time_t in_t);\r
+               clock_t _time();\r
+               ~Timer();\r
+       protected:\r
+       private:\r
+               clock_t t;\r
+       };\r
+}\r
+\r
+#endif
\ No newline at end of file