Image Map Image Map
No More Results
About neilobremski

Basic Information

About neilobremski
I started programming in GW-BASIC by copying and manipulating example listings given to me by a friend. I didn't have access to any books or other references so my initial education was trial and error alone. It was enough to hook me and now I find myself looking back fondly on those early days of struggle and excitement.
Seattle, USA
Walking, Writing, Reading, Music
Computer Programmer



Total Posts
Total Posts
Posts Per Day
General Information
Last Activity
April 19th, 2017 07:35 AM
Join Date
October 9th, 2016
Home Page
View neilobremski's Blog

Recent Entries

ASCII / BIOS Character Graphics

by neilobremski on April 18th, 2017 at 01:26 PM
Even back on the original IBM PC you could get read-only access to the glyph pixel data for the standard ASCII character set, extended ASCII, and control characters with codes less than 32 (0x20) [1].

Each character glyph is 8 bytes where every byte represents a row and every bit represents a column. The horizontal bits start in the most significant bit, so the font pixel for column 0, row 0 is bit 7 in byte 0 which follows the style for monochrome graphics modes.


Read More


DDA Texture Mapping [Part 1]

by neilobremski on April 17th, 2017 at 10:22 AM
I am learning and working on a quadrilateral DDA texture mapper for CGA that uses the 8x8 monochrome BIOS characters for texels, for use in an optimized version of Magenta's Maze. Reading Mats and Abrash's tutorials [1] have given me new insights and I have fought not to scrap my triangle/line routines just yet until I make this next step.

Stepping is really the name of the game: adding the deltas found by linear interpolation. It has been difficult to integrate the term interpolate

Read More

Updated April 17th, 2017 at 03:46 PM by neilobremski


2D Outline of 3D Shape

by neilobremski on April 10th, 2017 at 09:35 AM
The goal here is to draw lines around the outside of a 3D rendered shape. For my purposes, all 3D to 2D rendering is done via triangles. The reason triangles are so awesome for 3D is that every triangle is always co-planar (flat) and the three points can be rearranged in any order. The method I've created works on projected triangles only, those that have already been converted from 3D to 2D and thus have only two axes: X and Y.

First I need to explain how the shapes are represented

Read More


Drawing Pixel Perfect Triangles (Part 3: X86 Assembler)

by neilobremski on March 31st, 2017 at 08:48 AM
In this final, third part blog post I present to you finished 16-bit X86 assembler code for CGA mode 4 (320x200x4) written as a DEBUG script [1]. This will give you a 556 byte routine starting at address 1300h.

a 1300
; ----------------------------------------------------------------------------
;	[params]	[stepping]	[drawing]
;     / AH = X1		/ StepA		/ XBeg
; AX /_ AL = Y1

Read More

Updated March 31st, 2017 at 08:55 AM by neilobremski


Drawing Pixel Perfect Triangles (Part 2: Pseudo Code)

by neilobremski on March 31st, 2017 at 08:41 AM
In my previous post I explained the purpose and high level algorithm. This time I'm going to show you some almost-actual code written in a pseudo-C language. Let's get straight to it ...

trifill(x1, y1, x2, y2, x3, y3, color) /* y coords must be sorted ascending */
	YDistA = y2 - y1 + 1; /* slope of side A (1 to 2) */
	if (x1 > x2) {
		XDirA = -1;
		XDistA = x1 - x2 + 1;
	} else {
		XDirA = 1;
		XDistA = x2 - x1 + 1;

Read More

Updated March 31st, 2017 at 08:55 AM by neilobremski