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)

syslog_with_threads_and_bt (181.2 KB ) - added by Premislaus 12 years ago.
Corum3_crash_after_quit (3.6 KB ) - added by Premislaus 12 years ago.
Corum III Title Video works.png (66.7 KB ) - added by AGMS 10 years ago.
Corum III title video does work in Haiku.
Corum III crash in AVCodecDecoder when video finishes normally.png (83.3 KB ) - added by AGMS 10 years ago.
Corum III crashes in AVCodecDecoder when video finishes normally.
Corum III crash in BDirectWindow memory allocation when video manually skipped.png (80.1 KB ) - added by AGMS 10 years ago.
Corum III crashes with memory allocation corruption when video skipped.
Corum3-NormalTitleVideoFinishedCrash.report (18.9 KB ) - added by AGMS 10 years ago.
Crash report when title video is allowed to finish.
Corum3-SkippedTitleVideoCrash.report (19.9 KB ) - added by AGMS 10 years ago.
Crash report when Corum III title video is skipped. Oddly, this time it crashes in the AVCodecDecoder rather than the BDirectWindow daemon.
Corum3-3243-debug-20-08-2021-20-08-30.report (32.3 KB ) - added by cocobean 3 years ago.
Corum III - accessing memory address 0x2bbab000 hits a guarded page on Haiku R1B3 x86

Download all attachments as: .zip

Change History (16)

by Premislaus, 12 years ago

Attachment: syslog_with_threads_and_bt added

by Premislaus, 12 years ago

Attachment: Corum3_crash_after_quit added

comment:1 by Premislaus, 12 years ago

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

Last edited 12 years ago by Premislaus (previous) (diff)

by AGMS, 10 years ago

Corum III title video does work in Haiku.

by AGMS, 10 years ago

Corum III crashes in AVCodecDecoder when video finishes normally.

by AGMS, 10 years ago

Corum III crashes with memory allocation corruption when video skipped.

comment:2 by AGMS, 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 pulkomandy, 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 AGMS, 10 years ago

Crash report when title video is allowed to finish.

by AGMS, 10 years ago

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 diver, 8 years ago

Component: - GeneralKits/Media Kit
Owner: changed from nobody to Barrett

comment:5 by korli, 6 years ago

Owner: changed from Barrett to nobody
Status: newassigned

comment:6 by pulkomandy, 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 cocobean, 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.

Last edited 3 years ago by cocobean (previous) (diff)

by cocobean, 3 years ago

Corum III - accessing memory address 0x2bbab000 hits a guarded page on Haiku R1B3 x86

comment:8 by cocobean, 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
Version 5, edited 2 months ago by cocobean (previous) (next) (diff)
Note: See TracTickets for help on using tickets.