VOGONS


First post, by NewRisingSun

User metadata
Rank Oldbie
Rank
Oldbie

... is not properly emulated in DOSBox. It wants to detect a Tandy 1000 when FFFFE and FFFFF are both FF. A standard PC or PC/XT has FFFFE as FF and FFFFF as a checksum byte, which is not FF. DOSBox always sets FFFFF to 55 as a "signature".

In src/ints/bios.cpp, this section:

		// write system BIOS date
const char* const b_date = "01/01/92";
for(Bitu i = 0; i < strlen(b_date); i++) phys_writeb(0xffff5+i,b_date[i]);
phys_writeb(0xfffff,0x55); // signature

needs to be changed to:

		// write system BIOS date
const char* const b_date = "01/01/92";
for(Bitu i = 0; i < strlen(b_date); i++) phys_writeb(0xffff5+i,b_date[i]);
if (machine==MCH_TANDY)
phys_writeb(0xfffff,0xFF); // Needed for Ninja (1986)
else
phys_writeb(0xfffff,0x55); // signature

This will allow Ninja to detect that it is running on a Tandy 1000, and have it display 160x200 16-color graphics instead of 320x200x4 color graphics, without using the common patched version. I have verified that all original Tandy 1000 BIOS ROMs have these values at FFFFE and FFFFF, so it is the "correct" thing to do as well.

Reply 2 of 2, by DosFreak

User metadata
Rank l33t++
Rank
l33t++

Okay, not sure what that has to do with this thread. If you feel it necessary to post such things then post it in the dosbox-x thread. This forum is for dosbox, not dosbox forks.
Tracking patch integration should be done on each project version control site.

How To Ask Questions The Smart Way
Make your games work offline