Skip to content
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

PC-98: Graphic LIO not implemented #930

Closed
hdk1983 opened this issue Nov 13, 2018 · 6 comments
Closed

PC-98: Graphic LIO not implemented #930

hdk1983 opened this issue Nov 13, 2018 · 6 comments

Comments

@hdk1983
Copy link

hdk1983 commented Nov 13, 2018

Describe the bug
Graphic LIO is a set of routines in BIOS ROM. I found it was used by the following games/applications:

Graphic LIO is in segment F990h. If you see some errors around in segment F990h, probably it is related to this issue. For example:

  • KATALITH: ERROR CPU:Write 0 to rom at f9900
  • MAZE_999: ERROR CPU:Write 20 to rom at f9900

To Reproduce
Steps to reproduce the behavior:

  1. Run a program that uses graphic LIO
  2. The program does not start

Expected behavior
The program works

Additional context
To verify the graphic LIO is used, I added a dummy implementation to DOSBox-X as follows:

dummyliopatch.txt

With this patch, KATALITH shows the following copyright screen:

katalith_000

And, MAZE_999 shows the following error (maybe because of the dummy implementation), looks like an error of Microsoft Basic:

game_999_000

I made a hello world program using MSGBOX statement of Visual Basic for DOS:

HELLO2.zip

With the above patch, this program starts with broken graphic screen (maybe because of the dummy implementation):

hello2_000

The hello world works on Neko Project:

hello2_np21w

@joncampbell123
Copy link
Owner

Actually, yes, I noticed "Sword of Legend" is quite consistent at jumping to segment F990, evidently without checking properly.

@joncampbell123
Copy link
Owner

If anyone has a PDF or link to documentation on the LIO interface that would be helpful.

The source code of Neko Project II appears to explicitly implement the LIO interface in bios_lio()

@joncampbell123
Copy link
Owner

joncampbell123 commented Nov 13, 2018

Hm, "Sword of Legend" doesn't seem to really be looking for LIO.

EDIT: It does, it crashed because my initial implementation had a mistake.

EDIT: This is apparently why WINGS also crashed at startup. Now it just sits with a blank screen with debug output indicating that LIO was called.

EDIT: This is also why Balance of Power was crashing. Now it runs, minus many graphics of course.

@yksoft1
Copy link
Contributor

yksoft1 commented Nov 15, 2018

Hm, "Sword of Legend" doesn't seem to really be looking for LIO.

EDIT: It does, it crashed because my initial implementation had a mistake.

EDIT: This is apparently why WINGS also crashed at startup. Now it just sits with a blank screen with debug output indicating that LIO was called.

EDIT: This is also why Balance of Power was crashing. Now it runs, minus many graphics of course.

Hell Ogre also require it to work.

@hdk1983
Copy link
Author

hdk1983 commented Mar 18, 2023

Fixed by #3508. Thanks.

@hdk1983 hdk1983 closed this as completed Mar 18, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants