Opened 12 years ago
Last modified 2 months ago
#9301 assigned bug
Corum III don't work in Haiku.
Reported by: | Premislaus | Owned by: | nobody |
---|---|---|---|
Priority: | normal | Milestone: | R1 |
Component: | Kits/Media Kit | Version: | R1/Development |
Keywords: | Corum III | Cc: | |
Blocked By: | Blocking: | ||
Platform: | x86 |
Description
Corum III is a commercial game for BeOS. I have a demo version. This game was distributed by Gobe Software.
Videos do not work. You can hear the sound, but instead of the image are artifacts. When the videos are gone, in the game window is a black image. Nothing more. When you close an application crash occurs.
I tried to play in the Alpha 2, 3, and now 4.1.
https://docs.google.com/open?id=0BxfU61SfLpMjRnZSVVR3TWp5R3M - archive file with two demo versions and patch.
Attachments (8)
Change History (16)
by , 12 years ago
Attachment: | syslog_with_threads_and_bt added |
---|
by , 12 years ago
Attachment: | Corum3_crash_after_quit added |
---|
by , 10 years ago
Attachment: | Corum III Title Video works.png added |
---|
Corum III title video does work in Haiku.
by , 10 years ago
Attachment: | Corum III crash in AVCodecDecoder when video finishes normally.png added |
---|
Corum III crashes in AVCodecDecoder when video finishes normally.
by , 10 years ago
Attachment: | Corum III crash in BDirectWindow memory allocation when video manually skipped.png added |
---|
Corum III crashes with memory allocation corruption when video skipped.
comment:2 by , 10 years ago
I tried running and installing Corum III (the full commercial version from Gobe) in Haiku hrev48961 (March 30 2015). It just goes into an infinite loop when run off the CD (one CPU at 100%). The installer does work nicely, and I installed the full version to the Home directory. When run off the hard drive, it does start up and displays the title video (including sound). However, it crashes after the video finishes, in AVCodecDecoder. If you skip the video by pressing ESC, the window fills with binary garbage (black with white vertical stripes) and it then crashes in BDirectWindow's daemon, doing a memory allocation. Both crashes are repeatable.
comment:3 by , 10 years ago
Please save a debug report from Debugger instead of including a screenshot, so we get all the useful information to debug the problem.
by , 10 years ago
Attachment: | Corum3-NormalTitleVideoFinishedCrash.report added |
---|
Crash report when title video is allowed to finish.
by , 10 years ago
Attachment: | Corum3-SkippedTitleVideoCrash.report added |
---|
Crash report when Corum III title video is skipped. Oddly, this time it crashes in the AVCodecDecoder rather than the BDirectWindow daemon.
comment:4 by , 8 years ago
Component: | - General → Kits/Media Kit |
---|---|
Owner: | changed from | to
comment:5 by , 6 years ago
Owner: | changed from | to
---|---|
Status: | new → assigned |
comment:6 by , 4 years ago
I confirm that the crash with the video is still here.
I investigated the first one (with the videos) a bit. There are two threads crashing at the same time, actually ("game" and "artist"). I looked at the "game" thread, which, at this stage, is decoding the videos.
The first video is the NGE logo and is in 320x240 resolution. The second video should be the Hicom logo and this one is a 640x480 one. We are decoding it to RGBA32, meaning the result should be of size 1228800 (640x480x4) per frame. But, the allocated buffer is smaller than that. I would guess 640x480x1 = 307200 bytes (the crash happens after copying 355688 bytes, at a page boundary close to that). Probably the overwriting of stuff in the page after the buffer makes other things crash.
However, I tried tracing this inside BMediaTrack, and as far as I can see, BMediaTrack::DecodedFormat is never called. Which means the codec is free to pick whichever format it is happy with. It just seems the Indeo codec in BeOS did not default to the same thing as our ffmpeg codec, and the game does not take that into account and hardcodes the size of the buffer?
I tried removing the "movies" directory from the data (you can also do this by using the "minimal install" in the installer or using the "no movies" pkg to save on download size :) ). In that case I get image logos instead of the videos, and then I get a frozen black window.
comment:7 by , 4 years ago
Tested on Haiku R1B3 (hrev55181+55 x86_gcc2) with Corum III v1.1.0. Same issue with crash after playing AVI intro movie file. Disabling movie folder will show another intro video and then lead to the black window - of no return...
Seems to hit a guarded page area.
by , 3 years ago
Attachment: | Corum3-3243-debug-20-08-2021-20-08-30.report added |
---|
Corum III - accessing memory address 0x2bbab000 hits a guarded page on Haiku R1B3 x86
comment:8 by , 2 months ago
Update on hrev58097 x86_gcc2:
Retesting Corum III v1.1.0 (Dec 18, 1999).
Note:
Using MediaPlayer, I can play all Corum III AVI movies with sound. No issues. Seems a legacy compatibility API issue (i.e. AVI decode playback, BPrivateGame*) with Corum III w/ BeOS 5.0 versus on Haiku x86_gcc2.
Mentions "full screen mode [1920x1080]" not compatible with rgaphics hardware. Return to desktop in highest screen mode (1920x1080), not the original screen settings) Seems 1920x1080 is too high a resolution.
~/Desktop> ls -al /system/lib/*net*
~r-xr-xr-x 1 user root 322179 Sep 8 23:27 /system/lib/libbnetapi.so lr-xr-xr-x 1 user root 13 Sep 8 23:32 /system/lib/libnet.so -> libnetwork.so lr-xr-xr-x 1 user root 13 Sep 8 23:32 /system/lib/libnetapi.so -> libbnetapi.so -r-xr-xr-x 1 user root 215683 Sep 8 23:27 /system/lib/libnetwork.so
runtime_loader: Cannot open file libnet.so (needed by /boot/system/non-packaged/apps/Corum III Demo/Corum3): No such file or directory
BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer)
Detailed run:
BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) BMediaTrack::ReadFrames: decoder returned error 0x80000000 (Out of memory)
Full demo installation retesting (v1.0.3, Dec 4, 1999) full demo installation:
~/Desktop> /boot/system/non-packaged/apps/Corum*/Corum3
Note: plays intro video very fast with no sound.
BMediaTrack::ReadFrames: decoder returned error 0x80004007 (Last buffer) Corum3: ../haiku-git/src/system/libroot/posix/malloc_hoard2/superblock.h:272:int BPrivate::superblock::isValid(): _numBlocks > 0 Corum3: ../haiku-git/src/system/libroot/posix/malloc_hoard2/superblock.h:272:int BPrivate::superblock::isValid(): _numBlocks > 0 Kill Thread
Anevilyak this game is for BeOS R5 ;).
http://web.archive.org/web/20011209221443/http://www.gobe.com/~kurt/c3/
Machine Specs:
1 Intel PentiumIII 550 128MB RAM Voodoo3 3000 AGP graphics Creative SB PCI512 sound
and of course
BeOS Release 5 Professional rev5.0.3
http://web.archive.org/web/20011223101548/http://www.gobe.com/storecorum3.html