DSx86 v0.15 Beta - 模擬器
By Dinah
at 2010-06-21T15:38
at 2010-06-21T15:38
Table of Contents
DSx86 v0.15 Beta is released. DSx86 is a PC emulator for Nintendo DS. It's
purpose is to allow you to run old DOS games on your Nintendo DS game console.
DSx86 v0.15 Beta Changelog:
This version has the following major changes:
No more need for the LOADFIX command! See the previous blog post for more
info about how I changed the code to enable this, if you are interested.
EGA horizontal smooth scrolling fixed. The horizontal scrolling was very
jittery in games like Supaplex, Heimdall and Crystal Caves, for example.
Again more info in my previous blog post.
The BIOS window scrolling functions (up/down) are now implemented for each
supported graphics mode and for both directions.
Removed the check for running zeroed data, as this prevented the Great Escape
game from starting. Now you won't get an Unsupported Opcode error in this
situation, the game will probably just hang.
Fixed a bug in MOV SP,SReg opcode. For example a game called Berlin 1948 used
SP as a loop index with SS as the initial value, and the buggy opcode caused
SP to get zeroed, which in turn caused the game to fill the entire screen
when it only wanted to write a few pixels.
Various game-specific fixes, as mentioned in my previous blog post.
All the missing opcodes (that weren't caused by the game executing data) in
the debug logs I have received have been implemented. So quite a few games
should now progress further than before.
Since the last blog post I have also debugged a couple of new games. I spent
many hours (including the whole of yesterday) debugging the memory allocation
problem in Abandoned Places, but still could not figure out why it skips
allocating a 64KB block of memory (that it does allocate in DOSBox) and then
crashes when it clears this block that it never allocated in the first place!
It is quite difficult to trace something that does not happen, so I still
need to think up new ways to approach this problem.
Another game that I only started debugging today is Gods. It seemed to hang
at the beginning with a black screen, and it didn't even respond to the user
breakpoint request. Luckily this was not a problem when running it in iDeaS,
and with it I was able to find out that my VGA Display Status Register
emulation was still not correct. The bit that returns whether the display is
in Horizontal Blank should also return the Vertical Blank time. When I added
that, I got Gods to progress up to the start menu, but the graphics were
completely garbled. After some debugging I noticed that it goes to 640x350
EGA mode, but then directly writes new values to the CRTC registers so that
the display size is actually 320x200! My screen blitting functions are based
on the graphics mode byte, so the game used the graphics memory like it was
320x200 pixels while my blitting routines used it like a 640x350 layout. Btw,
the game does not look correct on DOSBox either (at least on my rather old
version), but as DOSBox uses the real CRTC registers it is not as broken as
it was in DSx86.
I added a quick hack to the CRTC register setting so that if the mode is
640x350 but the new CRTC register value tells the horizontal size to be 320,
I change the graphics mode to 320x200. This allowed the game to display a
properly-sized screen, but there are still some severe problems with
scrolling and paging, so the game is not playable yet. I believe I need to
change my blitting method completely to read the current CRTC register values
instead of the graphics mode, to properly handle situations where the game
accesses the CRTC registers directly.
Anyways, this version is yet another fix version without any major new
features. My summer vacation starts within a week (Yippee!), so after next
week I'll start working on the bigger issues, like improving the AdLib
emulation, implementing the missing SB DSP commands, adding better screen
scaling methods, improving the mouse emulation etc etc. I am very much
looking forward to being able to really focus on adding the missing features
to DSx86.
Thanks for your interest in DSx86, and please send me debug logs and update
the Compatibility Wiki as you test games on this new version! Here below are
pictures of the Great Escape and Berlin 1948, which should now run in DSx86.
--
purpose is to allow you to run old DOS games on your Nintendo DS game console.
DSx86 v0.15 Beta Changelog:
This version has the following major changes:
No more need for the LOADFIX command! See the previous blog post for more
info about how I changed the code to enable this, if you are interested.
EGA horizontal smooth scrolling fixed. The horizontal scrolling was very
jittery in games like Supaplex, Heimdall and Crystal Caves, for example.
Again more info in my previous blog post.
The BIOS window scrolling functions (up/down) are now implemented for each
supported graphics mode and for both directions.
Removed the check for running zeroed data, as this prevented the Great Escape
game from starting. Now you won't get an Unsupported Opcode error in this
situation, the game will probably just hang.
Fixed a bug in MOV SP,SReg opcode. For example a game called Berlin 1948 used
SP as a loop index with SS as the initial value, and the buggy opcode caused
SP to get zeroed, which in turn caused the game to fill the entire screen
when it only wanted to write a few pixels.
Various game-specific fixes, as mentioned in my previous blog post.
All the missing opcodes (that weren't caused by the game executing data) in
the debug logs I have received have been implemented. So quite a few games
should now progress further than before.
Since the last blog post I have also debugged a couple of new games. I spent
many hours (including the whole of yesterday) debugging the memory allocation
problem in Abandoned Places, but still could not figure out why it skips
allocating a 64KB block of memory (that it does allocate in DOSBox) and then
crashes when it clears this block that it never allocated in the first place!
It is quite difficult to trace something that does not happen, so I still
need to think up new ways to approach this problem.
Another game that I only started debugging today is Gods. It seemed to hang
at the beginning with a black screen, and it didn't even respond to the user
breakpoint request. Luckily this was not a problem when running it in iDeaS,
and with it I was able to find out that my VGA Display Status Register
emulation was still not correct. The bit that returns whether the display is
in Horizontal Blank should also return the Vertical Blank time. When I added
that, I got Gods to progress up to the start menu, but the graphics were
completely garbled. After some debugging I noticed that it goes to 640x350
EGA mode, but then directly writes new values to the CRTC registers so that
the display size is actually 320x200! My screen blitting functions are based
on the graphics mode byte, so the game used the graphics memory like it was
320x200 pixels while my blitting routines used it like a 640x350 layout. Btw,
the game does not look correct on DOSBox either (at least on my rather old
version), but as DOSBox uses the real CRTC registers it is not as broken as
it was in DSx86.
I added a quick hack to the CRTC register setting so that if the mode is
640x350 but the new CRTC register value tells the horizontal size to be 320,
I change the graphics mode to 320x200. This allowed the game to display a
properly-sized screen, but there are still some severe problems with
scrolling and paging, so the game is not playable yet. I believe I need to
change my blitting method completely to read the current CRTC register values
instead of the graphics mode, to properly handle situations where the game
accesses the CRTC registers directly.
Anyways, this version is yet another fix version without any major new
features. My summer vacation starts within a week (Yippee!), so after next
week I'll start working on the bigger issues, like improving the AdLib
emulation, implementing the missing SB DSP commands, adding better screen
scaling methods, improving the mouse emulation etc etc. I am very much
looking forward to being able to really focus on adding the missing features
to DSx86.
Thanks for your interest in DSx86, and please send me debug logs and update
the Compatibility Wiki as you test games on this new version! Here below are
pictures of the Great Escape and Berlin 1948, which should now run in DSx86.
--
Tags:
模擬器
All Comments
Related Posts
OpenBOR v3.0 Build 2831
By Puput
at 2010-06-21T15:37
at 2010-06-21T15:37
ValDanX r74(3210)
By Annie
at 2010-06-21T10:39
at 2010-06-21T10:39
三國志大戰V3.0
By Oscar
at 2010-06-21T01:06
at 2010-06-21T01:06
三國志大戰V3.0
By Valerie
at 2010-06-21T00:32
at 2010-06-21T00:32
FFT簡易版
By Xanthe
at 2010-06-21T00:00
at 2010-06-21T00:00