A ZZT Disassembly? You are awesome! That is just what I need help to redo ZZT on my own,
In important business: Can I please use the disassembly for remodeling my DOS binaries or such?
(but I can distribute the binaries of the ASM file)
I was to make a new hack that I attempted years ago but never got anywhere! (because it's Graphics mode, and trying to convert my old, archived ASM/BASIC pseudo-code is a pain in the buttocks!%$#@)
This is all I need for redoing ZZT, via PM or my Email if possible,
Thank you, Will give credit if it's ever used!
EDIT: If so, Also want SuperZZT stuff, Optional for SZZT Hacks for my games!
EDIT2: Typo Fixed!
EDIT3: Added Prototype Pseudo-code, From a thread at DigitalMZX,
WARNING: This is very hard to put in QB45, I tried, but sucked at it:
; Arguments: cx = character-cell X, cy = character-cell Y
; c = character code, f = foreground color, b = background color
videooffset = ((cy * 80) * 14) + cx; base address of the character cell on each plane
videobase = $A000; the start of EGA memory
characterseg = (? >> 4); where ? = the base address of your character set
characterbase = (? & $0F) + (c * 14); as above
for i = 0 to 13
DEF SEG characterseg; or however this is represented in x86 assembly
load A, (characterbase + i); the register names are all dummies here, use whatever works
DEF SEG videobase; set to write to video RAM
for j = 0 to 3
out $3C4, 2; a bit of voodoo programming to select the plane to access, since low-level EGA documentation
out $3C5, (1 << i); seems very hard to find
if (f & (1 << j) != 0) and (b & (1 << j) != 0) then store $FF, (videooffset + lineoffset)
else if (f & (1 << j) != 0) then store A, (videooffset + lineoffset)
else if (b & (1 << j) != 0) then store (A XOR $FF), (videooffset + lineoffset)
else store $00, (videooffset)
videooffset += 80
EDIT 4: Woohoo! 50th Post,