-
-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SCI: Fixed KGetTime with SYSDATE subop in SCI0-LATE. #770
Conversation
I tried the Amiga version of Iceman, and it also seems to return the date instead of the time, when you ask a girl for the date. Are you sure that this only applies to the DOS version? |
The (decompiled) Amiga and DOS functions for displaying the "date" response are the same:
The Atari ST one is different in how it calculates the displayed year:
|
I've just tried the Amiga and DOS versions. The older base year seems to be 1940 (not 1920), and the newer 1980. The check you got for DOS should also be applied for the Amiga version. So, here's the code that works for me:
Does that look better? |
No, according to the disassembly done by m_kiewitz, the older base year is 1920. The kernel is calling DOS interrupt 21/AH=2Ah. The newer (base 1980) kernel is doing the following:
The older (base 1920) kernel is doing the following:
The fidelity of the year part in this kernel function is 7 bits. I do like your code comment - so I'll update mine accordingly. |
SSCI implementation of the SYSDATE subop of the GetTime kernel function was changed between SCI0-LATE and SCI01: The base year used was changed from 1920 to 1980. This subop is used in "Codename: Iceman" (Say "ask for date" to a passing girl on the beach). The Atari ST version of "Codename: Iceman" use the 1980 base year. The Amiga version of "Codename: Iceman" appears to return the time instead of date, with 0 for the YEAR part.
Looks good! I still disagree on the base year for ICEMAN. Try asking the girl for a date, you get "06/30/36" (for today's date). So, the base looks to be 40 instead of 20 for ICEMAN. |
The girl is not supposed to give you today's date. The game is futuristic and was supposed to be happening in 2010, as evident in this comic from InterAction magazine. Since the game was out around 1990, they programmed her to give you the date 20 years in the future. |
That makes sense, thanks! Merging as-is |
Thanks! |
I believe the game is officially set in 2004. |
The game's in-package "Tenth Anniversary" ad says "Terror in the Year 2000", but that could be a rough mentioning that the story is set in the "2000s" |
I couldn't find any reference to the year 2004, including in the game's resources.
I believe it's a typo for 2010. |
SSCI implementation of the SYSDATE subop of the GetTime kernel function was
changed between SCI0-LATE and SCI01: The base year used was changed from 1920 to
1980.
This subop is used in "Codename: Iceman" (Say "ask for date" to a passing girl
on the beach).
The Atari ST version of "Codename: Iceman" use the 1980 base year.
The Amiga version of "Codename: Iceman" appears to return the time instead of
date, with 0 for the YEAR part.