Romhacking.net

Romhacking => Programming => Topic started by: Hamtaro126 on September 07, 2011, 02:48:55 am

Title: BASIC and ZZT hacking: Need DOS Basic compiler that can use actual ASM in code.
Post by: Hamtaro126 on September 07, 2011, 02:48:55 am
EDIT: Even though ZZT can be hackable, and many people do hack it, That ZZT and SuperZZT is a Hackable Freeware, Tim Sweeny and Epic allows it because of no source code. And therefore, using utilities like UNLZEXE and TSRs are allowed.

So that means that it is not a bad thing to post help here for ZZT and SuperZZT, Hopefully...

---------------------------------

I'm using the pseudo-code for hacking ZZT to graphics mode as a TSR...

Code: [Select]
; 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)
next
videooffset += 80
next

First, What (free) BASIC for DOS can combine Basic and ASM in one source? Need to have a way to convert both.

Second, can use DIM on the equals signs, but I must know how to convert it,

Third, This utility can be modded for better color palette options and SZZT support...
Title: Re: BASIC and ZZT hacking: Need DOS Basic compiler that can use actual ASM in code.
Post by: syntax error on September 07, 2011, 05:48:05 am
Wasnt ZZT written in Turbo Pascal?
Title: Re: BASIC and ZZT hacking: Need DOS Basic compiler that can use actual ASM in code.
Post by: Jorpho on September 07, 2011, 10:56:50 am
Wasnt ZZT written in Turbo Pascal?
Yes, but I believe Mr. Hamtaro is seeking to write an external program that modifies the ZZT program once it is loaded into memory, and is using BASIC for lack of alternative programming knowledge, amirite?

Didn't someone do something similar a few years back?  Something called "Enhanced ZZT" ?  It featured a partial remake of Caverns of Zeux.
Title: Re: BASIC and ZZT hacking: Need DOS Basic compiler that can use actual ASM in code.
Post by: Hamtaro126 on September 07, 2011, 03:19:23 pm
BASIC can be simple, But 6502/Partial X86 Hacking/ASM is understandable to me,

EZZT is a dead project since most projects using it is pretty much uneditable, and no source code for that either, I can try to make a disassembly using the Open-Source TatraDAS Interactive Disassembler, Since it is what I am originally after,

And since I use Dosbox, a lack of a DEBUGGER with good features and a screen viewer does not help... I may ask the author for a debugger, but focusing on the main task is my concern...

http://tatradas.sourceforge.net/

The problem is remaking and reassembling the Extended DOS Header in the binary at 0x00000000-0x00001c00 for ZZT and SuperZZT, is it in Relocatible Format?

Current header format explanation from my notes:

0x0000-0x001f = DOS Header
0x0020-0x1c00 = ZZT/SZZT/TurboPascal7 Header Extention? (Unknown addresses loaded in exeecutable RAM)
Title: Re: BASIC and ZZT hacking: Need DOS Basic compiler that can use actual ASM in code.
Post by: Azkadellia on September 07, 2011, 03:43:21 pm
There is a DOS Box build with the debugger enabled. (http://vogons.zetafleet.com/viewtopic.php?t=7323)