thorfdbg
Members-
Posts
1,171 -
Joined
-
Last visited
thorfdbg's Achievements
Stargunner (7/9)
558
Reputation
-
Frankly, I don't consider this mode as very attractive for point and click - the problem is the rather poor horizontal resolution. Thus, you would have a hard time of recognizing objects which is quite central for this type of genre. Look for example at Koronis Rift: The way how the game is designed is that it does not suffer from poor horizontal resolution. The landscape is mostly flat, and objects extend more in horizontal direction than in vertical direction. You typically do not have this freedom in point and click games. Such games typically suffer less from fewer colors, but need objects in the scene.
-
PAL means that every other line the phase encoding of color changes, and of course the decoder of the PAL signal needs to be aware of this. Apparently, this does not seem to be the case, i.e. phase alternation does not seem to be taken into account when interpreting colors. To put it simple: Spectre AV seems to not support PAL color encoding.
-
Almost. WARMST is not an input flag that controls a function, it is an output indicator that is set by the Os providing information whether the latest reset was a warmstart or a coldstart. For example, if BASIC sees that this flag is 0, it knows that it has to initialize its zero-page pointers and its memory management. If it is non-zero, the pointers are still ok and the source code remains in RAM. It does not control what the next reset will do, whether it will execute a coldstart or a warmstart, i.e. the Os does not read its value, it rather sets it. The PUPBT variables are, however, tested for when receiving a hardware reset to determine whether to go through a warmstart or a coldstart. If they do not have their magic values, the Os assumes that RAM has not been initialized, and thus a full coldstart is required. It does so by setting the input flag at $244 to non-zero. Then the Os initializes all its functions, sets as result WARMST to 0, and then runs the cartridge. Thus, you have these three magic bytes to allow testing for a powerup vs. a reset, the input flag at $244 which you can set under program control to turn the next warmstart into a coldstart, and the output indicator at $8 that the previous reset was a coldstart or a warmstart.
-
This alone is not sufficient to adjust the baud rate for the tape. You also need to adjust the algorithm (and its lookup table) that computes a baud rate from measuring the incoming signal.
-
If I remember correctly, you had to use the colors you used in the levels before. The color of the ball would need to be the complementary color of the dragon, something like this. But it is more than 20 years ago I played the game...
-
It is necessary to denormalize numbers because you can only add two floating point numbers if their exponents are identical. Thus, you shift the mantissa of the number of the smaller exponent to the right while increasing the exponent, until the exponents of the two numbers are identical, and then you add or substract the two mantissas. Afterwards, you need to normalize again. This can lead to situations were any precision is lost because you shift the smaller number by a large amount, or you subtract two numbers that are approximately equal, reducing the precision of the result to the number of digits remaining in the mantissa that are not equal. Thus, addition and subtraction of floating point numbers cause loss of precision, and the "coarser" the shfit is (e.g. in pairs of digits instead of digits) the more you can loose. Thus, you do not "gain anything"by using BCD, you are just moving the error away from the decimal/binary conversion into the addition/subtraction part. The system has a higher precision if the data is kept in binary and stays in binary. Mixing numerical basis (i.e. binary and decimal) and converting back and front of course creates an additional loss.
-
And so does Dos 2, and Dos 2.5. It is not so unique as feature, really.
-
Restore variable table in BASIC?
thorfdbg replied to freetz's topic in Atari 5200 / 8-bit Programming
Here is an untokenizer that generates from a tokenized source an ATASCII listing. It also repairs the variable table. If I remember correctly, it runs on TurboBasic, but this was ages ago I wrote it. untok.zip -
The trouble is that depending on the Os version, DISKINTERF is incomplete in multiple regards. It does not support the "format extended" command of the 1050, and (in some older versions) did neither support the 'P' command to write a sector without verify. It's good enough for read and status, though.
-
The status command only reads 4 bytes, not 128 bytes.
-
Understanding CMP as described on the ALP book
thorfdbg replied to lbaeza's topic in Atari 5200 / 8-bit Programming
Yes, but... BCS/BCC implement unsigned comparisons, and there are neither branches for signed comparisons, which requires a pair of branches. -
The PSU you have here is actually one of the good quality ones, they don't fail that easily. If you measure voltage, please also put some load on it (probably some 100 Ohm or so). Potentially, the output regulator of the PSU went bust (internal short), but that's really relatively rare. I have still two of these units, and they are still good.
-
Simplest way to test disk density
thorfdbg replied to whomper's topic in Atari 5200 / 8-bit Programming
The simplest way is to send a SIO status command 'S', and analyze the four bytes you receive back. The first byte is the command status: // Bit 0 = 1 indicates an invalid command frame was received // Bit 1 = 1 indicates an invalid data frame was received // Bit 2 = 1 indicates that a PUT operation was unsuccessful // Bit 3 = 1 indicates that the disk is write protected // Bit 4 = 1 indicates active/standby // Bit 5 = 1 indicates double density // Bit 7 = 1 indicates enhanced density disk (1050 format)- 1 reply
-
- 3
-
The issue appears for addition and subtraction, requiring denormalization and normalization.