VOGONS


First post, by ludicrous_peridot

User metadata
Rank Member
Rank
Member

I have been revisiting Fables & Fiends Book 1 lately with MT-32 music, and my enjoyment sadly only lasted until I passed the note to Brynn in the temple (roughly 5 minutes into the game post intro).
It turned out that the game had some sort of "paging" achieved by giving DOS command to save A000 into file called SEENPAGE.TMP and then restoring the screen directly by loading the file into A000, again with int 21 call. Well, this (both reads and writes) locked up the PC I have set up to play the game. One could say I should get a better PC, but sadly it's not quite realistic for me at this stage, so I had no other option but to modify the game.

I have patched out the A000 bit, and had to make the game skip the part where the note is actually shown on the screen, because otherwise the screen was not restored correctly afterwards.
Instead Brandon is shown holding the note in his hands while Kallak's voice is heard reading the text, and pressing the button afterwards makes the dialog continue.

The attachment main_000.raw1.png is no longer available

Not sure how many of you have run into the lockup, but the patch is attached for those curious. This one is for English language CD-ROM version.

The attachment k1lockup.zip is no longer available

Note to those trying this: The patch also changes the timer ISR slightly, but if that bothers you, please give a shout and I can make a more targeted version.

GA-G41M-Combo G41/ICH7 - Core 2 Quad Q9550 - DDR3 1033 - Radeon RX570 - CMI-8738 - X3MB - CM-300 - Saitek ST-30
Beetle/M/i815+ICH2 - Celeron 566Mhz - Opti 924 - YMF740 - MT-100
https://archive.org/details/peridot-26

Reply 1 of 2, by carlostex

User metadata
Rank l33t
Rank
l33t

Kyrandia 1 is probably the adventure game I love the most, and I’ve run it on several systems, the CD-ROM version, and never encountered this issue either on that specific screen or any other.

In any case, great job! Which version of DOS are you using? Which particular INT 21h call are we talking about? What is the value on AX before the call?

Reply 2 of 2, by ludicrous_peridot

User metadata
Rank Member
Rank
Member

The exact call that I got from DOSBox debugger log was:

0823:00003A82  int  21                                                EAX:A0004001 EBX:333A0005 ECX:00007D00 EDX:502F0000 ESI:00000000 EDI:00000005 EBP:00000E70 ESP:00000E6E DS:A000 ES:3246 FS:0000 GS:0000 SS:3CFC CF:0 ZF:1 SF:0 OF:0 AF:0 PF:1 IF:1..

I have not kept the read, but on the high level read and write look like:

0BE1:0000236A 6A00                push 0000                                     
0BE1:0000236C 1E push ds
0BE1:0000236D 686E37 push 376E ; seenpage
0BE1:00002370 9A1B015B16 call 165B:011B
0BE1:00002375 83C406 add sp,0006
0BE1:00002378 6A02 push 0002
0BE1:0000237A 1E push ds
0BE1:0000237B 687B37 push 377B ;hidpage
0BE1:0000237E 9A1B015B16 call 165B:011B
0BE1:00002383 83C406 add sp,0006
0BE1:0000229A 6A02                push 0002                                     
0BE1:0000229C 1E push ds
0BE1:0000229D 683C37 push 373C ;hidpage
0BE1:000022A0 9A84005B16 call 165B:0084
0BE1:000022A5 83C406 add sp,0006
0BE1:000022A8 6A00 push 0000
0BE1:000022AA 1E push ds
0BE1:000022AB 684837 push 3748 ;seenpage
0BE1:000022AE 9A84005B16 call 165B:0084
0BE1:000022B3 83C406 add sp,0006

This corresponds to this old commit from SCUMMVM that Google has indexed under SEENPAGE.TMP

Now, I will not be surprised if this issue is specific to the motherboard I have. After all this was supposed to be used as a cashier's machine, and here I am using it to play old games just because it has an operational ISA slot. Still after the patching, I have played through the game and thoroughly enjoyed it (even though I must admit I remember all the puzzles).

GA-G41M-Combo G41/ICH7 - Core 2 Quad Q9550 - DDR3 1033 - Radeon RX570 - CMI-8738 - X3MB - CM-300 - Saitek ST-30
Beetle/M/i815+ICH2 - Celeron 566Mhz - Opti 924 - YMF740 - MT-100
https://archive.org/details/peridot-26