homepage

70 weeks of intense self-learning

Posted By: MarkG

70 weeks of intense self-learning - 11/16/19 07:15 PM

1 term down, 6 to go.

++++++++++++++++++++++++++++++++++++++++++++++++++

COURSE CURRICULUM

- September 1, 2019 - January 2, 2021 (70 weeks, approx. 17 1/2 months).
- 7 10-week terms, 4 simultaneous areas of study in each term.

[C]: Completed (covered at least 90% of material).
[H]: Half-completed (covered at least 50% of material).

- % of completion based on # of pages or topics covered and fully comprehended.
Remaining % may be irrelevant, incomprehensible or inaccessible due to missing
support material or unsupported hardware. Reasons for incompleteness provided.
- (Software) as a course includes a collection of tutorials and study material.
- Courses to be completed in order shown.

++++++++++++++++++++++++++++++++++++++++++++++++++

1st Term: Sep 1 - Nov 9
==================
[C] Math Power
[C] Technical Mathematics

[C] Mastering DOS 6

[H] Assembly Language Step-by-Step *

[C] AutoCAD 2000i (Software)
[C] Mastering AutoCAD 2000
[C] AutoCAD 2000i Tutorial Second Level: 3D Modeling
[C] AutoCAD 2000: 3D Modeling, A Visual Approach
[C] AutoCAD 2000 3D
[C] 3D Modeling in AutoCAD

* Completed ~80% for interest in DOS 16-bit real-mode flat and segmented memory
models, only read through remaining text on Linux 32-bit protected-mode.


2nd Term: Nov 10 - Jan 18
=====================
[ ] Basic Physics: A Self-Teaching Guide
[ ] PSSC Physics
[ ] HS Math Review

[ ] Open Watcom (Software) *
[ ] C Programming in Easy Steps
[ ] Teach Yourself C in 24 Hours
[ ] C by Dissection
[ ] A Book on C

[ ] The ABC's of AutoLISP **
[ ] AutoCAD VBA Programming **

[ ] ACT Victory

* Includes compiling for DOS 16-bit, 32-bit DOS/4GW and Win32.
** Includes additional studies of AutoCAD customization and VBA.


3rd Term: Jan 19 - Mar 28
====================
[ ] Algebra and Trigonometry

[ ] Visual C++ 5/6 (Software)
[ ] Visual C++ 5 for Dummies
[ ] C++ for Dummies

[ ] Zen of Graphics Programming
[ ] Tricks of the Game Programming Gurus

[ ] Russian for Dummies [1st half]


4th Term: Mar 29 - Jun 6
===================
[ ] Physics: Algebra/Trig

[ ] C++ in Plain English
[ ] C++ Primer

[ ] Black Art of 3D Game Programming

[ ] Russian for Dummies [2nd half]


5th Term: Jun 7 - Aug 15
===================
[ ] Trigonometry

[ ] Beginning Math and Physics for Game Programmers
[ ] 3D Math Primer for Gfx and Game Dev

[ ] Cutting Edge 3D Game Programming with C++

[ ] Living Language: Russian [1st half]


6th Term: Aug 16 - Oct 24
====================
[ ] Precalculus

[ ] Programming Game AI by Example
[ ] Artificial Intelligence for Games

[ ] Flights of Fantasy
[ ] Build Your Own Flight Sim in C++

[ ] Living Language: Russian [2nd half]


7th Term: Oct 25 - Jan 2
===================
[ ] Windows Game Programming for Dummies
[ ] DirectX 3D Graphics Programming Bible

[ ] Blitz Basic (BlitzPlus and Blitz3D)

[ ] Milkshape (Software)
[ ] Hands on Milkshape
[ ] DeleD (Software)

[ ] Russian Course
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/16/19 07:25 PM

++++++++++++++++++++++++++++++++++++++++++++++++++

COURSE MATERIAL

- Categories and courses to be completed in order shown on Prerequisite Tree and Course Curriculum.

++++++++++++++++++++++++++++++++++++++++++++++++++


Pre-College Math and Physics
========================
Math
- Math Power - World Book Encyclopedia
- Technical Mathematics 4th Ed. - R. Smith

Physics
- Basic Physics: A Self-Teaching Guide - K. Kuhn
- PSSC Physics 6th Ed. - U. Haber-Schaim, J. Dodge, J. Walter

HS Math Review
50 Chapter Review tests from high-school math textbooks (1982-85):
Holt Algebra 1 [16], Geometry [15], Algebra 2 with Trig... [19]
- Holt, Rinehart and Winston


Basic College Math and Physics
=========================
Algebra & Trig
- Algebra and Trigonometry - R. Blitzer *
- Trigonometry - J. Beecher, J. Penna, M. Bittinger

Physics
- Physics: Algebra/Trig 2nd Ed. - E. Hecht

Pre-Calculus
- Precalculus 5th Ed. - J. Stewart, L. Redlin, S. Watson

* Includes complete Precalculus Essentials 2nd. Ed. - R. Blitzer


Programming
===========
Batch & QBASIC
- Mastering DOS 6 Special Edition - J. Robbins

Assembler
- Assembly Language Step-by-Step 2nd Ed. - J. Duntemann

IDE Compilers
- Open Watcom - Open Watcom Contributors
- Visual C++ 5/6 - Microsoft

C
- C Programming in Easy Steps - M. McGrath
- Teach Yourself C in 24 Hours - T. Zhang
- C by Dissection - A. Kelley, I. Pohl
- A Book on C 2nd Ed. - A. Kelley, I. Pohl

C++
- Visual C++ 5 for Dummies - M. Hyman, B. Arnson
- C++ for Dummies - R. Davis
- C++ in Plain English 3rd Ed. - B. Overland
- C++ Primer 3rd Ed. - S. Lippman, J. Lajoie


Game Math and AI
===============
Math & Physics
- Beginning Math and Physics for Game Programmers - W. Stahler
- 3D Math Primer for Graphics and Game Dev... - F. Dunn, I. Parberry

AI
- Programming Game AI by Example - M. Buckland
- Artificial Intelligence for Games - I. Millington


Game Programming
================
DOS
- Zen of Graphics Programming - M. Abrash
- Tricks of the Game Programming Gurus - A. LaMothe, J. Ratcliff...
- Black Art of 3D Game Programming - A. LaMothe
- Cutting Edge 3D Game Programming with C++ - J. De Goes
- Flights of Fantasy - C. Lampton
- Build Your Own Flight Sim in C++ - M. Radtke, C. Lampton

Win32
- Windows Game Programming for Dummies 2nd Ed. - A. LaMothe
- DirectX 3D Graphics Programming Bible - J. Sanchez, M. Canton
- Blitz Basic (BlitzPlus and Blitz3D) - Blitz Research


3D Modeling
==========
Milkshape
- Milkshape - M. Ciragan
- Hands on Milkshape - A. Stewart

DeleD
- DeleD - Delgine


AutoCAD
=======
General
- AutoCAD 2000i - Autodesk
- Mastering AutoCAD 2000 - G. Omura

3D
- AutoCAD 2000i Tutorial Second Level: 3D Modeling - R. Shih
- AutoCAD 2000: 3D Modeling, A Visual Approach - J. Wilson
- AutoCAD 2000 3D - B. Matthews
- 3D Modeling in AutoCAD - J. Wilson

Customization
- The ABC's of AutoLISP - G. Omura
- AutoCAD VBA Programming - J. Gibb, B. Kramer


Electives
=======
ACT Prep
- ACT Victory 8th Ed. - Cambridge

Russian
- Russian for Dummies 2nd Ed. - A. Kaufman, S. Gettys
- Living Language: Russian - C. Muravnik
- Russian Course - N. Brown
Posted By: NoFlyBoy

Re: 70 weeks of intense self-learning - 11/16/19 08:33 PM

WOW! How old are you may I ask? I am old. I don't think I can do that anymore or pick up things to learn. It's harder to learn something and retain it as you get older.
Posted By: letterboy1

Re: 70 weeks of intense self-learning - 11/16/19 09:36 PM

A lot of deep stuff, but what caught my attention was the Russian language. I'm just curious, what prompted your interest? I find Russian to be a beautiful sounding language. Too bad I'm too lazy to really set my mind to learning it. smile
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 11/16/19 09:41 PM

Knowing Russian in Louisiana is about as practical as knowing German in Miami!

Believe me, I know!!!
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/16/19 11:31 PM

Originally Posted by NoFlyBoy
WOW! How old are you may I ask?

I'm 52. After a couple of unorganized false starts in July/Aug, I started this detailed plan on Sep 1st, the day after my 52nd birthday. The first two terms are meant for me to finish high school properly (not just technically) by completing some of the maths and physics I didn't take 35 years ago.


Originally Posted by PanzerMeyer
Knowing Russian in Louisiana is about as practical as knowing German in Miami!

Unless you're speaking with someone who also knows Russian, if just to drive your family crazy as you speak privately to each other out loud. biggrin That's what I'm most looking forward to.


Originally Posted by letterboy1
A lot of deep stuff, but what caught my attention was the Russian language. I'm just curious, what prompted your interest? I find Russian to be a beautiful sounding language.

It was my wife's idea to include it, although it's something I've always been interested in (still a Cold War 80's kid at heart...music, movies, books). Studying a course together (she purchased her own books) gives us an excuse to enjoy nostalgic study dates at the LSU Library, followed by off-campus coffee and pizza. She thought about it after watching a program on visiting St. Petersburg, knowing I had some Russian language books and that I've always wanted to visit Red Square Moscow. We're in initial planning for a Russian vacation.
Posted By: NoFlyBoy

Re: 70 weeks of intense self-learning - 11/17/19 12:30 AM

I took Geometry and Trig and also E.A.. and Calculus in High School.

But it was so long ago.

I don't remember any of it.

You are 52 and you are learning something new.

You are a better man than I am.

I am just a few years older than you.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/17/19 06:35 AM

I forget how to do some math just over a weekend! duh It comes back to me after I've looked over an example or two, and then I get on a roll. But I get really rusty when I put it down for a while.

I keep a couple of cheat sheets copied from books with some handwritten notes. Here's my main cheat for simple geometry and trig, along with my newer calculators (notice my LSU scratch paper is circa 1984)...

[Linked Image]

I use those calculators from left to right as I need them. The cheap basic TI is still the easiest to use for simpler problems. The middle one has a natural display (also known as notebook display) and is best for longer equations, non-decimal fractions and angles (ang/mins/secs), also great for binary and hexadecimal math (and easily toggles the decimal equivalent). I haven't used the graphing calculator except to graph very simple line equations, no ellipses or parabolas yet...coming in my next math book (my old HS math books pre-date affordable graphing calculators so I use graph paper).

My curriculum collection of books (plus a few references)...

[Linked Image]

Oh yeah, I forgot to post this (have to post a pic due to text formatting)...

[Linked Image]

Attached picture calculators.JPG
Attached picture books.JPG
Attached picture prerequisites.JPG
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/17/19 08:57 AM

One more thing, for anyone who may still be interested in DOS... screwy

For those using DOSBox who want a more authentic DOS experience, these files will run under DOSBox (just make a DOS directory under the directory you use for DOSBox)...

From DOS6.22...
==========
DELTREE.EXE
DOSSHELL.EXE
DOSSWAP.EXE
EDIT.COM
EXPAND.EXE
FASTHELP.EXE
HELP.COM
LABEL.EXE
LOADFIX.COM
MOVE.EXE
MSAV.EXE
MSD.EXE
QBASIC.EXE
VSAFE.COM

From WinXP-DOS...
==========
APPEND.EXE
DEBUG.EXE
EDIT.COM
EDLIN.EXE
NLSFUNC.EXE
SETVER.EXE
SHARE.EXE

I needed DEBUG for ASM study but also wanted QBASIC to play Gorillas.
Posted By: Mr_Blastman

Re: 70 weeks of intense self-learning - 11/18/19 03:26 PM

Pretty badass you are doing this. Our minds have near infinite capacity if we exercise them. Well done.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/18/19 06:09 PM

Thanks, Mr_Blastman. smile I'm off to a really good start for term #2, but I'll have to disconnect again for a while to keep it this way.

- IMO, not embracing the metric system is as absurd as calculating angles using minutes and seconds vs. much easier decimals.

- I subconsciously find right triangles in everything I look at now. And 100 will never be "one-hundred" again, it's "one zero zero hex." biggrin

++++++++++

I was thinking over NoFlyBoy's comment about taking Calculus in high school (since I took the easy route). Asked my wife about it and she doesn't remember except for some college-prep math her senior year, and that the math in college was no more difficult than HS (her degree was in Accounting though, not Engineering).

We were in the same HS graduating class but never had classes together (I think we were next door once) so I dug up her 11th and 12th grade report cards...

[Linked Image]

Yeah, there was apparently more than 11th grade Algebra II w/Trig at our school, I see a separate Trig and Adv Math (assuming Calculus?) her senior year. I just don't remember her taking them, and I usually carried her books. smile The green Algebra II book was the last one I recall, and just finishing that one is going to satisfy my math demons.

I'll be passing up that one with my next math book anyway, a 950-page customized Blitzer Alg/Trig/pre-Calc for Georgia Southern University. I'm lucky that almost all of my upcoming math and physics books include CD video tutorials, as do all of my game programming books with utilities and source code (I found online downloads for the couple with missing CDs).

Attached picture wife_report_card.JPG
Posted By: DBond

Re: 70 weeks of intense self-learning - 11/18/19 06:57 PM

That syllabus should make you a good candidate for Eagle Dynamics' ground radar coder opening smile

Good on ya mate thumbsup
Posted By: Scott Elson

Re: 70 weeks of intense self-learning - 11/18/19 10:27 PM

MarkG,

May you have great success with all you strive to achieve. I just saw this link and thought it might be of interest:
https://www.codeproject.com/Articles/1247960/Learning-Basic-Math-Used-In-3D-Graphics-Engines

Elf
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/19/19 01:32 AM

<EDIT: Thanks everyone for the well-wishing. This will all one day become very interesting...I hope). smile >

Nice link, Scott. I'm lost on his example at first glance, I'll have to study it. I've always liked the voxel graphics in some of the old Novalogic sims and shooters.

==========
Quoting the author...

"lso, this 3D engine does not use matrices calculations, it uses the linear equation. I do that just because I don't like matrices, it's out of my understanding of math concept."
==========

Kinda scary to me as all three of my upcoming college math textbooks (Algebra/Trig, Trigonometry, Pre-Calculus) have dedicated chapters on matrices. I know that even my lesser Casio calculator can do matrix math, but I don't know anything about it yet.

==========
In the comments...

"However, if you're concerned about performance, maybe you should use a Quaternion - Wikipedia[^] , not a matrix (or set of equations), to express transformations. GPUs are not much better than CPUs at matrix calculations, at least not when they're only 3 by 3. But they are optimized for Quaternions, and AFAIK that's what most games engines use."
==========

"Quaternion" is another mystery to me but it'll be covered (along with even more matrices) in my game programming math books.

++++++++++

Just for reference as to where my math is at right now, these are among the final pages of the first two math books I recently completed ("Math Power" and "Technical Mathematics"), both with final chapters on basic Trigonometry...

Attached picture trig1.JPG
Attached picture trig2.JPG
Attached picture vectors1.JPG
Attached picture vectors2.JPG
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/19/19 03:15 AM

I want to show you guys one more thing because it's one of my favorite Goodwill finds (think I paid $1.00 for it).

ACT Victory by Cambridge (ACT - PLAN - EXPLORE) <- Assuming an SAT study/practice book would be similar.

Almost a thousand pages of mental self-improvement covering:

- English (Grammar and Mechanics)
- Mathematics
- Reading
- Science (Reasoning)
- Writing

Just covering the first section of Common Grammatical Errors, I find that I'm guilty of some. And if you want to learn to read and write in a foreign language, you should first know English sentence structure because comparisons are constantly made in the study material. Should I have started my last sentence with a conjunction? I dunno, but at least I now know what a conjunction is and that's a start. smile

Anyway, excellent book IMO for brushing up on high school basics. The original owner even made cute little laminated page tabs and didn't mark up all of the inside (rare for one of these type books). It looks like they carefully tore out one of the practice bubble sheets and made copies of it instead of filling them all in (I did the same). Nice job, original owner.

Pics of cover and some math pages...

Attached picture ACT_Victory1.JPG
Attached picture ACT_Victory2.JPG
Attached picture ACT_Victory3.JPG
Posted By: Haggart

Re: 70 weeks of intense self-learning - 11/19/19 05:18 AM

Studying Russian language and computer programming languages and planning a trip to Russia eh ? I may have to report this to the proper authorities. The Russians will also want to see your passports, but will your papers be ....."in order" ?

btw my older son spent some months in Russia and speaks fluent Russian. He also did some work in the U.S. which required the use of his Russian language. If you'd like someone to practice with i can arrange that.

You'd be surprised how easily the Russian secret service can learn about someone who visits their country. While my son was waiting outside of a small grocery store for his roommate in Moscow, a stranger passed him by on the sidewalk. As the stranger passed he said to my son ....."hi Ian, how's your aunt Tanya doing"? It so happens that my wife's brother is married to a Russian and they live in Spain.
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 11/19/19 11:13 AM

So who knew that Mark aspires to be a “Renaissance Man”? biggrin
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/19/19 03:16 PM

The finale of mid-life crisis introspective, wrapping up the last of unfinished business.

Haggart, I'll take you up on that and thanks. We'll know when that time is here. On a related note, the "Russian for Dummies" book is pretty good as it's as much a tourist guide (locations and customs), overall an interesting read at first glance. The couple of negative reviews are regarding the 1st edition which neglected reading and writing, corrected in the 2nd edition.

++++++++++

BTW, I sometimes use AutoCAD (a glorified database-manipulating graphics calculator) to find the answer to an even-numbered math problem when there's one I want to work on (books always give answers to odd-numbered problems). Very easy to do in AutoCAD, just draw what they give you and CAD will tell you the missing angles and distances.

Anyway, that's where I'm at right now, basic Trigonometry as well as basic Physics. I doubt I'll ever want to try to tackle Calculus-based Physics, only Algebra and Trig.
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 11/19/19 03:22 PM

Originally Posted by MarkG


Anyway, that's where I'm at right now, the simplest of Trigonometry. Right now I'm working on the simplest of Physics. I doubt I'd ever want to try to tackle Calculus-based Physics, only Algebra and Trig.



I was good at everything academically except for math. I always struggled with it from the time I was a child. The highest math I ever took was Analytical Geometry and even that I had to burn the midnight oil in order to get a "B".
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/21/19 02:17 AM

I'm learning in ACT Victory "Writing" to try not to be so wordy, so I'm practicing on this thread by cleaning up my posts. smile
Posted By: Scott Elson

Re: 70 weeks of intense self-learning - 11/21/19 09:25 PM

I learned how to do calculations with matrices in college but after I got out usually I'm calling existing functions/methods so I've forgotten most of what's under the hood. Quaternions didn't come onto my radar until well after college and the only time I usually need them is when some middleware call is expecting them. Again there's usually a call I can make to convert from what I'm used to them.

Here's a fun bit of math I've used a number of times. I'll give a summary of what, I did as opposed to full on formulas, but if you need more details let me know and I'll flesh it out more fully.

So often I've had AIs following a series of waypoints. These guys will have a velocity and a maximum standard turn rate. Generally when following waypoints you want to stay on the line between them, we'll call that a waypath. That means that when you start your turn this line will be tangent to the turning circle you'll be creating. We'll say the distance remaining to the waypoint you're heading to when you start this turn is X. So given a particular speed and a fixed turn rate you can compute the circumference of the circle by taking (360/(turn rate in deg/sec)) * (speed in units / sec). From there you can determine the radius (R) with the ever popular C= 2 * pi * R -> R = C / (2 * pi). As mentioned the point where you start this turn is tangential to your turning circle so the line from the center of the circle to this point, that has a distance of R, is perpendicular to the waypath so you can create a right triangle using the points of the center of the circle, the point where you start your turn and the waypoint the AI is heading towards. You also know the next waypoint you're heading to after this one so you can compute that angle. If you take half of that you get the angle from the waypath the AI is currently on and the line from the waypoint it's heading towards the center of the circle. So this means you have a right triangle where you know the distance of one side (R) and two of the angles of the triangle, one being 90 degrees. From there you can solve for X, at what distance the AI should be from its next waypoint before it starts its turn. Assuming no conditions change then you only need to calculate this once on your way to the next waypoint. The point at which the AI will intercept the next waypoint path will be the same distance from the waypoint (now the starting waypoint for this path) of X. If for some reason you need a smaller circle, for example the next waypath is short or there's an obstacle that would get in the way of your turn, you can always slow down (or turn faster if that's an option).

I hope this makes sense.

Elf
Posted By: MarkG

Re: 70 weeks of intense self-learning - 11/22/19 08:56 PM

Scott, I understand your terminology and overall concept, but would have no clue how to code it. dizzy But just wait until next year at this time...

Hey man, I'm ecstatic that you're reading and even participating on my thread. cheers This is the way I wish I could have done it years ago, but didn't have the time and motivation.

++++++++++

I'm going to make a couple of schedule changes as I'm feeling confident right now that I can knock out those larger math books in one term each (10 weeks). The reason (besides a clear calender after the holidays) is that I'm going through the ACT math sections quicker than expected since I've recently covered the same math. In fact, those basic college math textbooks don't frighten me as much as they did just a couple of months ago (except the Physics book's final chapters on Quantum Mechanics and Nuclear Physics...lol...going to give it a shot anyway).

I want to be upfront about how I'm covering the math books...

I read each section completely and follow the examples on paper. At the end of each section I work out about half of the odd-numbered problems. I always do the first two (the easiest) and the last two (the hardest), then any in-between that I'm interested in. If I breeze through the four mandatory problems, I move on. If not, I continue with more odd-numbers until I get it, or I try the same type of problem in another textbook. I DO NOT skip any of the odd-numbered problems in the chapter review tests. For the high school math review, I'm only doing the chapter review tests (50 in total from 3 books). If I have difficulty, I'll cover the chapter.

Many of my books repeat the same material but from a different author's perspective. I've arranged each subject from easiest to hardest, as far as I can tell.

When the math and programming become really difficult I'm going to show some of my work and probably ask for help and opinions.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 06/27/20 10:40 PM

Well, the "70 weeks" got blown to hell, but I'm back on it with a better understanding of time requirements and exactly what I'm wanting to accomplish. A final Game Dev book should arrive on Monday (why I'm working from the second listing), along with an 1942: PAW Strategy Guide (the Fleet Defender one has been a fun read).

At the end of the year I want all "C"s (with maybe a couple more "H"s)...

[Linked Image]

[Linked Image]

[Linked Image]

[Linked Image]

Attached picture Course_01.jpg
Attached picture Course_02.jpg
Attached picture Course_03.jpg
Attached picture Course_04.jpg
Posted By: MarkG

Re: 70 weeks of intense self-learning - 06/27/20 11:23 PM

From Gunny Motivation, I'll go ahead and post this here as well as it shows the categories (each totaling 8 hours per week except electives)...

[Linked Image]

One thing I've learned is that it's best to cover the more difficult subjects such as math and programming accumulatively, with shorter daily study periods spanning over a week, not trying to cover a subject in one full day per week.

++++++++++

Any assembly programmers here, these are my admittedly puny notes thus far:



CPU Memory Address Bus Widths
=============================
16-bit -> 64KB (65,536 bytes).
20-bit -> 1MB (1,048,576 bytes).
32-bit -> 4GB (4,294,967,296 bytes).


CPU Memory Access Models for 80386+
===================================
Real Mode Flat Model: 64K using 16-bit registers.
Real Mode Segmented Model: 64K segments along 1MB using 2 16-bit registers for
20-bit addresses.
Protected Mode Flat Model: 4GB using 32-bit registers.


16-bit General Purpose and Stack Pointer Registers
==================================================
Registers AX, BX, CX and DX can be divided into two separate 8-bit registers:
AX -> [AH/AL], BX -> [BH/BL], CX -> [CH/CL], DX -> [DH,DL].

?H = Higher 8-bit (MSB or Most Significant Byte).
?L = Lower 8-bit (LSB or Least Significant Byte).

Note: Only BX may contain a segment address offset and address memory data [].

AX (AH/AL): General purposes and math results.
BX (BH/BL): General purposes and indexing. Upper half concatenation with CX for a
32-bit count value.
CX (CH/CL): General purposes and counting. Byte count value of loaded file. Lower
16-bit half concatenation of BX and CX for a 32-bit count value.
DX (DH/DL): General purposes.

BP: General purposes, holding offsets and indexing.
SI: General purposes, source in data-movement operations.
DI: General purposes, destination in data-movement operations.

SP: Stack Pointer (points to next push in stack).


16-Bit Segment and Instruction Pointer Registers
================================================
Note: Available only in Real Mode Segmented Model, otherwise controlled by OS. May
be loaded from general purpose registers only, not immediate data or memory.
Can not be used for bitwise logical instructions (AND, OR, XOR, NOT).

DS = Data Segment address.
ES = Extra (spare) Segment address (386+ may include alphabetical clones FS and GS).
SS = Stack Segment address: Defines beginning of stack. SS:SP starts at the opposite
(top) end of allocated stack space and moves downwards to SS (see SP above).
CS = Code Segment address. CS:IP points to next instruction (see IP below).

IP = Instruction Pointer: Points to next machine instruction to be executed.


Real Mode Segmented Model and Addresses
=======================================
Simulates the 64K-limited Real Mode Flat Model by accessing up to 1MB of memory in
64K-sized (max.) segments. There are 65,536 segment starting slots spaced 16 bytes
apart (65,536 x 16 = 1,048,576). 2 16-bit registers are combined (segment:offset) to
define a 20-bit address along a 32-bit address bus as shown in examples below:

CS:IP (code segment:instruction pointer): address of next machine instruction.
CS:BX (code segment:general purpose): optional code segment address offset.
DS:SI (data segment:source index]: data segment address offset.
ES:DI (extra [spare] segment:destination index): spare segment address offset.
SS:SP (stack segment:stack pointer): address of next push in stack (LIFO buffer).
SS:BP (stack segment:base pointer): optional stack segment address offset.

0002:000D = 0:002D (decimal equivalent of 32 [2 x 16] + 13 or byte location 45).
073F:00FD (decimal equivalent of 29,680 + 253 or byte location 29,933).


Segment and General Purpose Register Assumptions
================================================
Instruction MOV assumes segment DS, except for SP and BP which assume segment SS:
MOV AX,[BX] assumes MOV AX,DS:[BX].
MOV [SI],DX assumes MOV DS:[SI],DX.
MOV [SP],DX assumes MOV SS:[SP],DX (may not be overridden).

Assumptions when executing string (contiguous sequence of bytes) instructions:
Source: DS:SI (Source Index, may not be overridden).
Destination: ES:DI (Destination Index, may not be overridden).
Length: CX (Counter), length of string.
Data coming from source string to destination string must pass through AX.

To override segment register assumptions:
MOV CS:[SI],AX overrides DS:[SI], MOV AX,ES:[BX] overrides AX,DS:[BX].


8-bit Flags Register and MS-DOS' DEBUG Symbology
================================================
Flag Name Set Clear

OF Overflow flag OV NV
DF Direction flag DN UP
IE Interrupt enable flag EI DI
SF Sign flag NG PL
ZF Zero flag ZR NZ
AF Auxiliary carry flag AC NA
PF Parity flag PE PO
CF Carry flag CY NC

E* = Extended 32-bit register for 32-bit Protected Mode Flat Model
(i.e. AX = EAX, SP = ESP, FLAGS = EFLAGS).


Illegal MOV Instructions Corrected
=========================================================================
MOV 17,1 Only one operand may be immediate data. MOV AX,17
MOV 17,BX Only the source operand may be immediate data. MOV BX,17
MOV CX,DH The operands must be the same size. MOV BL,DH
MOV [DI],[SI] Only one operand may be memory data. MOV [DI],SI
MOV DI,DX:[BX] DX is not a segment register. MOV DI,ES:[BX]
MOV ES,0B800 Seg. reg. may not be loaded from immed. data. MOV ES,DX
MOV DS,CS Only one operand may be a segment register. MOV DS,AX
MOV [AX],BP AX, CX and DX may not address memory data. MOV [BX],BP
MOV SI,[CS] Segment registers may not address memory data. MOV SI,CS


DOS and BIOS Software Interrupts
================================
0:0000-0:03FF: Interrupt vector table (256 entries x 4 bytes ea., 1,024 bytes).
INT 21H: DOS services dispatcher. AH: Service function. INT/(automatic IRET[urn])
pushes/pops next instruction address to/from Stack, also with CALL/RET(urn).


DOS Interrupt Call (09H Print String)
=====================================
mov DX,Msg ; Mem data ref without [] loads ADDRESS of string!
mov AH,09H ; Function 09H displays text (address from DX) to standard output.
int 21H ; INT 21H makes the call into DOS.

mov AX,04C00H ; Exits program (load 4CH [terminate process] into AH, 0 into AL).
int 21H ; Returns control to DOS, places AL into ERRORLEVEL DOS variable).


BIOS VIDEO Interrupt Call (10H), Service 2
==========================================
mov DX,[TextPos] ; TextPos contains X,Y (DL/DH) cursor position values.
call GotoXY ; Position cursor.
mov DX,Msg ; Load offset of Msg string into DX
call Write ; and display it.

GotoXY:
mov AH,02H ; Select VIDEO service 2: Position cursor.
mov BH,0 ; Stay with display page 0.
int 10H ; Call VIDEO.
ret ; Return to the caller.


BIOS VIDEO Interrupt Call (10H), Service 6
==========================================
Example 1:
mov CX,0422H ; Set upper-left corner to X=22H; Y=04H (CL/CH).
mov DX,093AH ; Set lower-right corner to X=3AH; Y=09H (DL/DH).
call ClrWin ; Call the ClrWin procedure, bypassing ClrScr.

Example 2:
mov CX,0422H ; Set upper-left corner to X=22H; Y=04H (CL/CH).
mov DX,093AH ; Set lower-right corner to X=3AH; Y=09H (DL/DH).
mov AL,01H ; Set to scroll window by one line.
call ScrlWin ; Call the ScrlWin procedure, bypassing ClrScr and ClrWin.

ClrScr:
mov CX,0 ; Upper left corner of full screen.
mov DX,LRXY ; Load lower-right XY coordinates (max. 79x24 [184FH]).
ClrWin:
mov AL,0 ; # of lines to scroll window (0 clears entire region).
ScrlWin:
mov BH,07H ; Specify "normal" attribute for blanked line(s).
VIDEO6:
mov AH,06H ; Select VIDEO service 6: Initialize/Scroll.
int 10H ; Call VIDEO.
ret ; Return to the caller.


Base-Indexed-Displacement Addressing
====================================
Addressing memory using three-part sum for serving two-level lookup tables such as:

MOV AX, [BX+DI+27]

BX (Base): Address of larger table.
DI (Index): Offset of sub-table within larger table.
27 (Displacement): Fixed distance between start of sub-table and addressed data.

Base register may be only BP or BX, index register may be only SI or DI.


IMUL (Integer Multiplication)
=============================
One operand must be in AL (for 8-bit) or AX (for 16-bit).
Product destination is AX (16-bit [+/- 32767]) or AX:DX (32-bit [+/- 2147483648])
with higher-order 16-bits in DX. Product larger than operands sets CF and OF.

==========

80x86 Integer Opcodes (alphabetical)
====================================
AAA - ASCII adjust after addition
AAD - ASCII adjust AX before division
AAM - ASCII adjust AX after multiplication
AAS - ASCII adjust AL after subtraction
ADC - Add with carry
ADD - Integer addition
AND - Logical AND
ARPL - Adjusted Requested Privilege Level of selector
BOUND - Array index bound check
BSF - Bit scan forward
BSR - Bit scan reverse
BSWAP - Byte swap
BT - Bit test
BTC - Bit test with compliment
BTR - Bit test with reset
BTS - Bit test and set
CALL - Call subroutine
CBW - Convert byte to word
CDQ - Convert double to quad
CLC - Clear carry
CLD - Clear direction flag
CLI - Clear interrupt flag
CLTS - Clear task switched flag
CMC - Complement carry flag
CMP - Compare
CMPS - Compare string (byte, word or doubleword)
CMPXCHG - Compare and exchange
CPUID - CPU identification
CWD - Convert word to doubleword
CWDE - Convert word to extended doubleword
DAA - Decimal adjust AL after addition
DAS - Decimal adjust AL after subtraction
DEC - Decrement
DIV - Unsigned divide
ENTER - Make stack frame for procedure parameters
ESC - Escape
HLT - Halt CPU
IDIV - Signed integer division
IMUL - Signed multiply
IN - Input byte or word from port
INC - Increment
INS - Input string from port (byte, word or doubleword)
INT - Interrupt
INTO - Interrupt on overflow
INVD - Invalidate data cache
INVLPG - Invalidate translation look-aside buffer (TLB) entry
IRET - Interrupt return
IRETD - Interrupt return
Jcc - Jump on condition code (Jump Instructions Table below)
JMP - Unconditional jump
LAHF - Load register flags into AH
LAR - Load access rights
LDS - Load far pointer
LEA - Load effective address
LEAVE - Restore stack for procedure exit
LES - Load far pointer
LFS - Load far pointer
LGDT - Load Global Descriptor Table
LGS - Load far pointer
LLDT - Load Local Descriptor Table
LOCK - Lock bus
LODS - Load string (byte, word or doubleword)
LOOP - Decrement CX and loop if CX not zero
LOOPE/LOOPZ - Loop while equal / loop while zero
LOOPNZ/LOOPNE - Loop while not zero / loop while not equal
LIDT - Load Interrupt Descriptor Table
LMSW - Load Machine Status Word
LSL - Load segment limit
LSS - Load far pointer
LTR - Load task register
MOV - Move data
MOVS - Move string (byte, word or doubleword)
MOVSX - Move with sign extend
MOVZX - Move with zero extend
MUL - Unsigned multiply
NEG - Two's complement negation
NOP - No operation
NOT - One's compliment negation (Logical NOT)
OR - Inclusive logical OR
OUT - Output data to port
OUTS - Output string to port (byte, word or doubleword)
POP - Pop word off stack
POPA/POPAD - Pop all registers onto stack
POPF/POPFD - Pop flags off stack
PUSH - Push word onto stack
PUSHA/PUSHAD - Push all registers onto stack
PUSHF/PUSHFD - Push flags onto stack
RCL - Rotate through carry left
RCR - Rotate through carry right
REP - Repeat string operation
REPE/REPZ - Repeat while equal / repeat while zero
REPNE/REPNZ - Repeat while not equal / repeat while not zero
RET/RETF - Return from procedure
ROL - Rotate left
ROR - Rotate right
SAHF - Store AH register into flags
SAL - Shift arithmetic left
SAR - Shift arithmetic right
SBB - Subtract with borrow / carry
SCAS - Scan string (byte, word or doubleword)
SETCC - Set byte on condition
SGDT - Store Global Descriptor Table
SHL - Shift logical left
SHLD - Double precision shift left
SHR - Shift logical right
SHRD - Double precision shift right
SIDT - Store Interrupt Descriptor Table
SLDT - Store Local Descriptor Table
SMSW - Store Machine Status Word
STC - Set carry flag
STD - Set direction flag
STI - Set interrupt flag (enable interrupts)
STOS [opt. B,W,D] - Store string (byte, word or doubleword)
STR - Store task register
SUB - Subtract
TEST - Test for bit pattern (logical compare)
UD2 - Undefined instruction
VERR - Verify read
VERW - Verify write
WAIT - Wait for coprocessor
WBINVD - Write-back and invalidate data cache
XADD - Exchange and add
XCHG - Exchange
XLAT/XLATB - Translate
XOR - Exclusive OR


Jump Instructions Table
=======================
Mnemonic Meaning Jump Condition
-------- ------- --------------
JA Jump if Above CF=0 and ZF=0
JAE Jump if Above or Equal CF=0
JB Jump if Below CF=1
JBE Jump if Below or Equal CF=1 or ZF=1
JC Jump if Carry CF=1
JCXZ Jump if CX Zero CX=0
JE Jump if Equal ZF=1
JG Jump if Greater (signed) ZF=0 and SF=OF
JGE Jump if Greater or Equal (signed) SF=OF
JL Jump if Less (signed) SF != OF
JLE Jump if Less or Equal (signed) ZF=1 or SF != OF
JMP Unconditional Jump unconditional
JNA Jump if Not Above CF=1 or ZF=1
JNAE Jump if Not Above or Equal CF=1
JNB Jump if Not Below CF=0
JNBE Jump if Not Below or Equal CF=0 and ZF=0
JN Jump if Not Carry CF=0
JNE Jump if Not Equal ZF=0
JNG Jump if Not Greater (signed) ZF=1 or SF != OF
JNGE Jump if Not Greater or Equal (signed) SF != OF
JNL Jump if Not Less (signed) SF=OF
JNLE Jump if Not Less or Equal (signed) ZF=0 and SF=OF
JNO Jump if Not Overflow (signed) OF=0
JNP Jump if No Parity PF=0
JNS Jump if Not Signed (signed) SF=0
JNZ Jump if Not Zero ZF=0
JO Jump if Overflow (signed) OF=1
JP Jump if Parity PF=1
JPE Jump if Parity Even PF=1
JPO Jump if Parity Odd PF=0
JS Jump if Signed (signed) SF=1
JZ Jump if Zero ZF=1


I never thought I'd appreciate how much higher-level C programming really is! dizzy
Posted By: Nixer

Re: 70 weeks of intense self-learning - 06/27/20 11:28 PM

More power to ya Mark.

I got a headache just looking at the POI.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 07/01/20 05:50 PM

Maybe Unity/Blender is in my future (nothing Autodesk post-2000), but old-school nostalgia gives me the warm fuzzies...

XOR'ing out a register to clear it because it's somehow faster than simply assigning a value of zero, using bit-shifting to multiply (or divide) by powers of two because actual math functions are too slow without a math coprocessor, always using integers vs. floats when possible. Lol.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/07/20 06:16 PM

I feel like, in some small way, that I'm reliving game dev history (1990 to 1995). My material covers the transition from ASM to C to C++, at the same time from DOS to Windows.

I've completed all but one of my DOS-based game dev books. Although I haven't been able to compile most of the code examples (usually Borland), executables are always supplied so it's still possible to follow and run the example code. It's been fascinating how games are constructed, especially the timeline of my books (from pure ASM [insanely difficult and nerve-racking] to a little inline ASM in C [mostly for speedier pixel and math functions], to all C/C++).

This week I'll finish my last C book which includes a nice intro to C++ at the end of each chapter, and then it's all C++. I've been typing the exercises in plain DOS EDIT (under DOSBox) and compiling with Open Watcom for DOS (vs. using a dedicated IDE w/auto features and correction). This forces me not to get careless and to understand what I'm doing, especially for exercises with multiple source files. My only debugging is rudimentary warning and error messages when linking/compiling, but so far it's been enough. Thankfully, all examples and exercises in my C/C++ books have complied fine under Open Watcom for DOS.

Just my opinion, but for anyone wanting to learn C/C++ fundamentals without any heavy studio/IDE overhead, try Open Watcom (DOS version) under DOSBox. I've had no problem compiling C/C++ 16-bit and 32-bit DOS programs under current Win10, or even with using the 32-bit Windows IDE version of Open Watcom.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/08/20 12:55 AM

Final thought as my vacation comes to an end (was mending from multiple dental procedures)...

Nov 1, F-19 begins. And this time I know what I'm doing.
Will once again get web hosting to post regular progress/source.
Failure not an option.
Posted By: Nixer

Re: 70 weeks of intense self-learning - 09/08/20 01:37 AM

Way to hang in there mark.
Posted By: mikew

Re: 70 weeks of intense self-learning - 09/08/20 12:06 PM

I love these updates as I'd like to do something like this if I didn't have to work.

While I totally get the retro angle in using Open Watcom on Dosbox, you could get a similar effect with Notepad and the Windows SDK.
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 09/08/20 12:12 PM

Originally Posted by mikew
if I didn't have to work.

.



Yup. That's a big advantage Mark has that most of us here don't. wink
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/08/20 06:24 PM

Nixer, no one inspires me on this board like you do! cheers

++++++++++

mikew, I prefer an emulated DOS environment because my books, until now, have assumed pure DOS (with the last two introducing the unpopular WinG). DOS compiling has so little overhead and CPU registers are named/function as expected using the segment:offset memory model. Most C/C++ exercises are single-page source, so after compiling on the C-prompt you have only 3 files (source .C/.CPP, .OBJ and .EXE). Even game dev exercises don't include any Windows baggage.

But from here on out it's C++/DirectX which unfortunately assumes VS6 (which I have), although I'm going to try to complete with Watcom Win32 first (without MFC). For game math and standalone AI exercises (all in C++), I'm sticking with Watcom DOS.

++++++++++

PM, you make a good point, although I thought half of SimHQ posters were already retired old_simmer. I owe my wife a debt of gratitude for, once again, sponsoring my dreams. When your own mother is constantly reminding you to appreciate just how lucky you are... I do, mom. I do. yep
Posted By: mikew

Re: 70 weeks of intense self-learning - 09/09/20 06:09 PM

As it was a bit of a quiet day, I downloaded the DOS Open Watcom package to see what the fuss was about.
Works great! All the DOS and Win32 examples I tried compiled and ran OK.
In the Win32 case, it was compiled on Dosbox and run in Wine.

I couldn't get the DirectX examples to compile apart from the DINPUT one, but they were written in 2004 and I had the June 2010 DirectX SDK.
That's the only downside really. You may not be able to harness the full power of a GTX3090 from DOS due to planned obsolescence by Microsoft and Nvidia. wink
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/10/20 01:37 AM

cool

BTW, I'm still a fan of Blitz3D (now free and open source)...

BLEAK BETA 1.0 - ATMOSPHERICS - STAMINA - Blitz3D...


https://www.youtube.com/watch?v=FG7L9XO6ae4

...and I'll be using it for prototyping and initial stages, porting to C++ as I go.
Posted By: Fittop

Re: 70 weeks of intense self-learning - 09/10/20 02:31 AM

Congratulations, MarkG! I am impressed.
As an old man, permit me to remind you in those dark nights when frustration over a math problem hits, that math is just another language and learning it main mission is that it teaches you to think better.
Enjoy the learning! it will always come in handy.
Again, Congratulations and Good Luck!
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 09/10/20 11:20 AM

Originally Posted by MarkG

PM, you make a good point, although I thought half of SimHQ posters were already retired :


It's certainly an older demographic here at SimHQ but not that much older! biggrin
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/10/20 02:22 PM

No no, PM. Not so much older age, but early retirement from smarter living. smile

What I have going for me is that I'm simple, as I often remind my Mrs... "All's I need is an old PC, a stash of Costco sardines, and some occasional lovin's." biggrin I don't care about not having my neighbor's toys, except that I still drive a 2008 Honda Element (purchased new and paid off early, so many years ago). I usually don't replace/upgrade anything until it breaks, including my flip phone and a couple of 20" tube televisions with VCRs. smile

++++++++++

Thanks, Fittop. Other than lots of trigonometry, the trickiest math so far has been multiplying matrices (4x4...x,y,z + 1), iterating groups of vertices (translating, scaling, rotating) around each object's origin (so dealing with multiple coordinate systems). But that's what middleware engines make much easier (Unity, Unreal, AGK, etc.).

And I still love using Blitz3D (DX7) because it runs so smoothly on my Win 2000 and XP desktops, and it's so small and fast. Although the entire engine runtime gets compiled into a game executable, it zips to less than half the size of a 3.5" 1.4MB floppy!

In fact, this complete demo...

Blitz3D Water Demo (DirectX7)...


https://www.youtube.com/watch?v=qIfPHC3tisE

...compressed using Win10's built-in zipping (1.97MB -> 995KB) fits on a single floppy disk!

But somewhere along the line I'm probably going to have to purchase a new desktop and choose a more modern 3D engine, which is why from the start I'm making my game as portable as possible (Blitz Basic functions prototyped and then re-written to external Watcom C++ libraries). As long as you stay away from inlining ASM (not required these days), ANSI C is totally portable, even across operating systems. Just something I'm keeping in mind for the future.
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/11/20 04:26 AM

mikew, in case you're interested in this... smile

I've been reading about the Blitz3D SDK which I believe was meant to bypass Blitz Basic (C/BASIC hybrid for the Amiga...ported to Windows in 2000) and do all coding in C++.

My biggest hurdle is that everything I keep coming across that's recent (within last 3 years) is in freaking Russian and I've been a total slacker (still in the flash card stage...no more false starts)!


Blitz3D SDK C++ первое знакомство...


https://www.youtube.com/watch?v=4zpJ9JdepMo&list=PL0jO4UklAOf6YMBOgKIeX7577gWVVscc6&index=1


I like his IDE...

Свой Minecraft на Blitz3D - Часть 1...


https://www.youtube.com/watch?v=DJucmkSLKsM
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/11/20 05:27 AM

One more thing, mikew (then I have to put this away because I'm screwing up now)...

I haven't been keeping up, but apparently my favorite little game engine is getting upgraded (read text under file listing)...
https://github.com/blitz3d-ng/blitz3d-ng

I'll try the 64-bit Linux version at the end of the year, then check on the progress of Open Watcom for Linux. I'd love to drop Microsoft completely, except for compiling and testing my executables.


EDIT: The appeal of Blitz, I think, (besides the very modest requirement of Win9x/2k...I use Win2k/XP/10) is that it includes no point-and-click GUI interface w/auto-code generation. The IDE is simply a text-based editor (interchangeable), debugger and compiler.
Posted By: mikew

Re: 70 weeks of intense self-learning - 09/11/20 02:51 PM

Always interested in retro games and software. smile
I've thrown out all my retro PC hardware though as I can run anything I'm interested in with a VM, and modern hardware is just so powerful.
With a 4" square Intel NUC with Win10 I can run 3dFX EF2000 at 4k resolution using DosBox.
I use a similar machine running Linux for >90% of my hobby computing and that's what was used for the Open Watcom test.
The Watcom compiler works fine in DosBox, and all the non-DirectX Win32 samples I tried ran perfectly in Wine.
Any code editing or file handling is handled is done on the main OS though, and Microsoft's VS Code (oh, the irony) is a great free editor.

Anyway, I've waffled on enough probably because I don't want to admit that I haven't tried to set up the Blitz3D SDK. frown
Looks interesting, but a step too far right now. smile
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/11/20 04:38 PM

No problem, mikew. And I wouldn't mess with Blitz3D until my upcoming 'proof of concept'. smile

BTW, I'm always on the lookout for a modern replacement, I just don't care for today's heavy middleware drag-and-drop/point-and-click GUIs. Some game engines try to eliminate coding altogether! I want to manually write every line of code in my game (sans the built-in functions that make life easier, starting with initializing the graphics card and setting resolution...I'm done with registers/stack and interrupts). And I want that code to be easily portable to C++ and IMO, this is where the Blitz Basic language and compilers shine.

So my new love for Blitz3D is knowing now how easily I can leave it if I decide later to port to something else. I *hate* being locked in to anything, a lesson I learned years ago with VB6.
Posted By: mikew

Re: 70 weeks of intense self-learning - 09/11/20 08:10 PM

Blitz3D looks as good as anything if it builds on your previous experience with Blitz Basic and VB.

I have this dilemma myself, where there it feels like there is always something better just around the corner. smile

It depends what your interests are really. We're still playing around with the TFX series over at Combatsim, and Krycztij's 'TFXplorer' (krishty.com) is an excellent example of what can be done from the ground up just using the Win32 API and the existing TFX dataset.

For open source SW, I'd be looking at the following:
For avoiding the lowest level stuff, then SDL (libsdl.org) can handle the interface to the hardware, but after that you're on your own.

Higher up, you have things like 'Openscenegraph' (openscenegraph.org) to help with displaying your world.

Higher up still, you have the full game engines. From my point of view 'Godot' (godotengine.org), 'Panda3D' (panda3d.org) and 'Castle Game Engine' (castle-engine.io) look the most interesting. The latter uses Object Pascal which is a bit less scary than C++ IMHO. smile
I haven't done any more than download and run the examples for each of these as my C++ skills are still somewhat lacking.
Any day now, I'm going to properly learn C++

I'd avoid Unity and Unreal if you want to avoid lock in...
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/12/20 06:22 AM

Good advice, Mike.

What worries me about Unity is discussions like this one (started yesterday)...
https://forum.unity.com/threads/any...ther-engine-only-to-return-later.967983/

Could mainly be venting, or just grass being greener elsewhere? But I was surprised to see the moderator hippocoder abandon Unity for Unreal. BTW, hippocoder wrote the Blitz3D water demo on the previous page.

++++++++++

I understand that the hardest part of making a game (besides decent AI) is actually finishing it! I'm not one to chase technology, and I believe that the Blitz3D source code (for the once commercial product [IDE/compiler], not the SDK which I've never found) is in good hands for at least keeping it chugging along in current Windows. Besides all that 64-bit and Linux jazz, they do occasionally fix small issues that pop up, like the option of removing DirectPlay from the compiler so that a game doesn't complain about not finding it in Win10. They also keep the source code project current to the latest VS C++ (was originally VC++6).

Heck, I love that I can have nice weather effects like lightning strikes, rain and snow, but I won't be coming anywhere close to pushing the limits of the engine or DX7. My working resolution is only 640x480 (when I'm finished I might bump it up to 800x600 if I can keep the final installation package under 10MB, sans a PDF Manual). I want my game to look like it would be a great way to showcase the capabilities of the original 3dfx Voodoo bypass card (but with 32-bit color). I might even fake the card's switchover click with a nostalgic sound effect. biggrin

C/C++ is a must for old textbook support. Even my larger Game AI book, which uses pseudo-code in the printed material, includes only C++ code examples on the CD. BTW, my early-to-mid-90's books make plenty of references to 80's pop culture which has been awesome to me, also constantly mentioning flight sims since they were so popular at the time. biggrin

Nov. 1st the real fun begins!
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/12/20 03:11 PM

mikew, one more thing. smile

My dream game engine would be...

I obviously like Blitz Basic, Mark Sibly's hybrid C/BASIC language/compiler for Amiga (ported to Windows), but I want it for DOS. What I *really* want is a complete all-inclusive (editors and modelers) comprehensive game dev studio that makes developing DOS games as easy as Blitz3D does for Windows, with at least 640x480 3D hardware acceleration (like DOS versions of EF2000 [640x400]). How far can you push SVGA+ graphics in DOS? Was 800x600 or even 1024x768 possible? I know only of the video modes of the VGA, and I don't know how EF2000 supported SVGA cards in DOS, even the non-accelerated versions.

Why DOS? Infinite lifespan. So much Windows software fails over time and technology (not to mention DRM), whereas DOS emulation is here to stay. 30 years from now (assuming I'm still around), I have no doubt that whatever OS I'm using (even if it's not Windows), I'll get in the occasional game of Descent or Links 386. smile
Posted By: mikew

Re: 70 weeks of intense self-learning - 09/12/20 05:34 PM

I think VESA tried to standardize SVGA somewhat, but I'm not sure how that relates to DOS.

At least with DOS programs that use 3dFX, we can cheat and intercept the Glide commands that would normally be sent over the PCI bus, then use a Glide wrapper to scale the vertices up to the resolution of our modern monitors.
If the frame buffer has already been produced by the DOS program, all we can do is stretch it which doesn't look nearly as good.

As Dosbox is open source, and with an open source compiler, it should be possible to make up your own video modes if you produced a DOS program now.
...as a thought experiment at least. smile
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/13/20 12:20 AM

Well, now you're just putting bad ideas in my head! smile

I know I've been spinning my wheels for about the last 10 years, but during that time I've been collecting everything I could on retro game development. Included in my massive archives (which I'll be pulling out in November) are the Glide Programmer's Guide and References, along with the specs of the 3dfx/Voodoo cards. Man, you have me dreaming BIG now! I think I'm going to reference the 3dfx requirements for my game.

BTW, much of my motivation comes from the eras involved:

[X] F-19 Scenarios: Mid-80's.
[X] PC Technology: Y2K.
[X] PC Tech Simulated: Mid-90's.

It all checks out! Now if you will excuse me, I have to get back to some Epic Pinball...

Attached picture Apogee.jpg
Attached picture Pinball.jpg
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/14/20 02:35 PM

I'm on day 43 of my last 90, and I just finished my final book on C, now starting with C++ (although my last C book included an intermediate introduction to C++).

The book was "C by Dissection" which turned out to be mostly a rewrite of "A Book on C" by the same authors. Thus I've scratched the latter off my listings as well as a couple of others for the same reason. I purchased most of these books at my local Goodwill (~$1.00/book) or at the annual LSU book fair, not always noticing duplicates with different covers or even different names.

Anyway, I was glad to come across "C++ by Dissection" online, which I'll cover after my Dummies books (don't discount the Dummies books as good intros to difficult studies smile ).

You can find the PDF here...
https://7chan.org/pr/src/C++_By_Dissection_(2002).pdf

With possible source code (I haven't looked closely at it yet)...
https://users.soe.ucsc.edu/~pohl/code.htm

Posted By: mikew

Re: 70 weeks of intense self-learning - 09/19/20 02:40 PM

Don't want to distract you too much from your studies, but I've been playing around with 3dFX SDKs and found that the examples in the v2.1.1 SDK build fine with Open Watcom 1.9.
The first link here is the one i've been using:
https://3dfxarchive.com/reference.htm
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/20/20 01:43 AM

Yup, that is THE link for 3dfx goodies, and where I found my stuff years ago!

I'm going to re-explore all of my options in November. Thanks for the heads up with 3dfx Watcom success.
Posted By: PanzerMeyer

Re: 70 weeks of intense self-learning - 09/20/20 03:37 AM

3Dfx? You mean the video card company that went under 19 years ago?
Posted By: MarkG

Re: 70 weeks of intense self-learning - 09/20/20 04:12 AM

Originally Posted by PanzerMeyer
3Dfx? You mean the video card company that went under 19 years ago?


Yeah, but we're not talking 19 year-old graphics. More like 24. smile
© 2024 SimHQ Forums