Cxbx-Reloaded / game-compatibility

Cxbx-Reloaded game compatibilty list, using GitHub issues
GNU General Public License v2.0
114 stars 29 forks source link

Star Wars - Starfighter SE [LA-002] [1.01] #165

Open PatrickvL opened 7 years ago

PatrickvL commented 7 years ago

Wikipedia

Issues

From @jarupxx on March 26, 2017 2:38

Star Wars - Starfighter SE - crashed on the first intro EmuX86_Read32 is generated due to missing D3DDevice_GetPixelShader. sw Xbe.txt

LOG

[0x1F34] EmuKrnlRtl.cpp: RtlInitAnsiString(
 OUT DestinationString  : 0xBEFBF38
   SourceString         : (char *)0x04662448 = "D:\\streams\\video\\lecintro.bik"
);
[0x1F34] EmuKrnlNt.cpp: NtQueryFullAttributesFile(
   ObjectAttributes     : 0x0BEFBF2C -> POBJECT_ATTRIBUTES {
   .RootDirectory      : FFFFFFFD
   .ObjectName         : 0x0BEFBF38 -> PSTRING {
   .Length             : 29
   .MaximumLength      : 30
   .Buffer             : (char *)0x04662448 = "D:\\streams\\video\\lecintro.bik"}
   .Attributes         : 40}
 OUT Attributes         : 0xBEFBEF4
);
[0x1F34] EmuKrnl : NtQueryFullAttributesFile Corrected path...
[0x1F34]   Org:"D:\streams\video\lecintro.bik"
[0x1F34]   New:"$XbePath\streams\video\lecintro.bik"
[0x1F34] EmuKrnlNt.cpp: NtQueryFullAttributesFile returns 0
[0x1F34] EmuWarn: EmuX86_Read32(0x00000414) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000414) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA0) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA0) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA0) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA0) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA4) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA4) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA4) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA4) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA8) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA8) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BA8) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BA8) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BAC) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BAC) = 0x0000[0x1F34] EmuWarn: EmuX86_Read32(0x00000BAC) [Unknown address]
[0x1F34] EmuX86_Read32(0x00000BAC) = 0x0000
[0x1F34] EmuD3D8: EmuD3DDevice_SetPixelShader
(
   Handle              : 0x00000000
);
[0x1F34] EmuD3D8: EmuD3DDevice_SetRenderState_ZEnable
(
   Value               : 0x00000000
);

Copied from original issue: Cxbx-Reloaded/Cxbx-Reloaded#282

PatrickvL commented 7 years ago

From @jarupxx on March 26, 2017 2:42

Apply #281 Improves EmuX86_Read32, but it causes a crash.

LOG

[0x24B4] EmuKrnlRtl.cpp: RtlInitAnsiString(
 OUT DestinationString  : 0xBEFBF38
   SourceString         : (char *)0x04662448 = "D:\\streams\\video\\lecintro.bik"
);
[0x24B4] EmuKrnlNt.cpp: NtQueryFullAttributesFile(
   ObjectAttributes     : 0x0BEFBF2C -> POBJECT_ATTRIBUTES {
   .RootDirectory      : FFFFFFFD
   .ObjectName         : 0x0BEFBF38 -> PSTRING {
   .Length             : 29
   .MaximumLength      : 30
   .Buffer             : (char *)0x04662448 = "D:\\streams\\video\\lecintro.bik"}
   .Attributes         : 40}
 OUT Attributes         : 0xBEFBEF4
);
[0x24B4] EmuKrnl : NtQueryFullAttributesFile Corrected path...
[0x24B4]   Org:"D:\streams\video\lecintro.bik"
[0x24B4]   New:"$XbePath\streams\video\lecintro.bik"
[0x24B4] EmuKrnlNt.cpp: NtQueryFullAttributesFile returns 0
[0x24B4] EmuD3D8: EmuD3DDevice_GetPixelShader
(
   Name               : 0x0C963DC8
   pHandle            : 0x0000000C
);
[0x24B4] EmuMain: Recieved Exception (Code := 0xC0000005)

 EIP := 0x04045D51 EFL := 0x00010246
 EAX := 0x00000000 EBX := 0x00000000 ECX := 0x0000000C EDX := 0x00000000
 ESI := 0x0BEFBF00 EDI := 0x0000000C ESP := 0x0BEFBF08 EBP := 0x0BEFBF0C
 CR2 := 0x00000000

  0:          0x04045D51
  1:          0x002AE1ED
  2:          0x002B034D

[0x24B4] EmuMain: Aborting Emulation
Voxel9 commented 6 years ago

Now gets in-menus and completely broken in-game, where there are some missing menu UI parts and in-game is just a completely grey screen (through you can hear in-game sounds and can interact). There are some audio issues in the FVMs.

KrnlDebug.txt


Menus/Intros:

image image image

In-game:

image

ancient-animal commented 5 years ago

The information below is based on the "a9d1abcf" build of Cxbx-Reloaded.

I enabled the setting called "Disable mute on unfocus" in the "Settings -> Config Audio" menu, and I set my own controller mappings. I didn't change other settings.

I used the NTSC version of the game.

Gameplay works correctly in all main levels. I didn't try the levels in the "Bonus Missions" section.

During gameplay, all sounds and music work except voices. The voices during gameplay appear as static. Using the D-pad to give commands to team-mates will play short blurbs of static.

In the cutscenes within levels, ALL sounds work, including voices, but they become silent before the cutscenes end. Think of it like this: During the first 90 percent of a cutscene, all audio will work, and during the last 10 percent, all audio will be silent.

During those cutscenes within levels, the volume of voices is much lower than the volume of other sounds, even with the volume slider for voices in the settings menu placed at its highest point and the other two volume sliders set to their lowest points. (I didn't notice changes when I changed those sliders. They may not work.) I don't know if this is a problem with my computer or the emulator.

These five levels are videos without gameplay (I call them "levels" because they have their own entries in the campaign menu): 1, 4, 7, 11, 19 In those videos, ALL sounds are static, but all visuals work.

In the "Contract Infraction" level (Level 5), gameplay froze during the beginning of the final objective. Pressing the Start button caused the "Pause" chime to play, but the game was still frozen. The image in the emulator's window didn't change. I don't remember if the other buttons still played sounds while frozen. This may be related to a cutscene that happens near the start of the final objective. (The enemies for the final objective are viewable far in the distance, and the targeting buttons allow them to appear as targets, but they're too far to shoot, even with the zoom feature. When they start moving close enough to shoot, a short cutscene will play. I don't remember all of the details. I don't remember if the freeze happened during the cutscene or immediately after.)

After that problem happened, I played the level again and it didn't freeze. I completed the level. I don't know why it worked the second time. I eventually finished it many more times and it didn't freeze.

The final level (level 19) is called "Farewell", which is only a cutscene WITHOUT gameplay. After I finished the real level before it, called "The Final Assault", the game automatically switched to the "Farewell" cutscene automatically, and during that time, the music in the "Farewell" cutscene seemed to work while the voices were still static. After the credits finished, I went back to the "Farewell" level by clicking it manually instead of finishing "The Final Assault" and being redirected to "Farewell". During this time, the whole cutscene was static, including the music.

The music seemed to play correctly during the credits, which are included in the "Farewell" level.

During both times that I finished "Farewell" (and the credits), the main menu appeared. When I clicked "Play", which leads back to the level-selection menu, the text descriptions and names of the levels were missing. The text in the Save menu was also missing. I didn't check the text of the whole game. This does not affect playability because I used the save menu to save my progress, even thought it didn't have text, and I restarted emulation by pressing "Emulation - > Stop" and then "Emulation -> Start", and my progress in the game was still saved, including the gold medal for "The Final Assault", and the text of the game was displayed accurately again.

Important Note: After I wrote the paragraph above, I played the "Contract Infraction" level again (level 5), and after it finished, I pressed "Quit" to go back to the main menu, and the "missing text" problem happened again. Maybe that invisible text problem happens during every return to the menu after a level has been accessed, and doesn't require the completion of level 19. Maybe I didn't notice because I previously continued to play a new level immediately after finishing a previous one, instead of pressing "Quit" and entering the level menu again. (The game allows instant access to the next level instead of transporting people back to the level-selection screen every time.)

These are pictures that show the text problem:

Level Selection Menu - correctly rendered:

when first viewing this menu

Level Selection Menu - after a level is finished, then "Quit" is pressed:

after playing a level and returning to this menu

Menu for Saving Progress - correctly rendered:

when first viewing this menu

Menu for Saving Progress - after a level is finished, then "Quit" is pressed:

after playing a level and going back to this menu

I didn't study the frame-rate counter because I was busy enjoying the game, but it all played smoothly. It seemed like full-speed. I didn't notice slow-motion.

My computer: Windows 10 Pro (with the "1809" update) Intel i5-2400 (I limited it to 2.5 GHz in the "Power Options" menu of Windows 10) Nvidia GTX 750 Ti 8 GB RAM - DDR3 1333 MHz Hard Drive that's not an SSD

ancient-animal commented 5 years ago

Since my last post, I gained a few gold medals, which I didn't have previously, and the two options after winning were "Retry" and "Quit". I pressed "Quit" after every new gold medal, and that brought me to the main menu, and the missing-text problem didn't happen. It was displayed correctly. Maybe the text will be missing only when a level is finished or exited without new progress happening. Maybe the automatic saving process that's built into this game needs to be triggered to avoid the missing-text problem, and that process won't happen unless a new medal is received or a level that hasn't been beaten previously is beaten.

This is probably what happened during the first time I noticed the missing-text problem: I finished level 18 and the game was saved automatically, but I chose to continue directly to level 19 instead of returning to the main menu. So the game saved after level 18, then was redirected to level 19, and after level 19 finished, the game was not saved, since level 19 is just a video. After level 19 finished, I was returned to the main menu, and since a level was finished without the automatic saving process happening, the missing-text problem happened.

I hope my information helps the developers narrow down the causes of these issues.

Just to be clear to people who want to play this game, it's fully enjoyable unless you care about the in-game chatter of the characters.

ancient-animal commented 5 years ago

New information: I played a level, and exited without finishing, and the missing-text problem happened again. Then I replayed the same level WITHOUT stopping and restarting the emulation. I entered the level-selection screen and clicked the level, even though the text was missing. I finished it and gained a gold medal that I didn't have previously, then entered the level-selection menu, and the text-descriptions were displayed! The activation of the auto-save feature restores the missing text every time.

I tried this over and over, without restarting the emulator. I started a level and exited (or finished it without gaining a medal that I didn't already have), and the auto-save message wasn't displayed and the missing-text problem happened. Then when I gained a new medal, I saw the auto-save process, and the text was restored. This loop of actions happened every time, without restarting the emulator in-between. Missing text -> restored text -> missing text -> restored text.

Now I have every gold medal for every single-player mission, including the bonus missions. I didn't try the multi-player levels, so I don't know if medals can be gained for them.

Note: The completion of any mission in the "Bonus Missions" menu won't ever trigger the auto-save feature, even when new medals are obtained, so I saved manually after those.