xmame 를 16bpp, Xv 확장을 사용해서 실행할 때 red 와 blue 가 뒤바뀌는 현상이 있는 경우

체스맨의 이미지

xmame 는 다들 아실 겁니다. http://x.mame.net/

도시바 3440ct
CPU: PIII 500 MHz
RAM : 128 MB RAM
Video : S3 MobileSavage Savage/IX-MV, 8MB

정도 사양에서 빌드했습니다. 크게 문제는 없었는데, 16 bpp ( bits per pixel ) 모드에서 실행할 때 red 와 blue 컴포넌트가 뒤바뀌어 나오는 문제가 있어서, 소스상에서 수정하는 방법에 대해 적어보려 합니다. 이게 버그가 아니고, 소스 수정없이 프로그램 옵션으로 해결 가능한지는 잘 모르겠습니다. 뭐, 가능하다면 쓸데 없는 글이 되겠군요... -_-; 방법을 아시면 알려주셨으면 합니다. 게시판을 잘 못 찾은 글이 돼 버리겠습니다만...

xv 확장을 사용하는 비디오 드라이버를 지정하면 ( -vidmod 1 ) 이와 같은 문제가 발생했습니다. 이 옵션을 사용하지 않으면 전체화면에서 플레이를 할 수가 없었습니다. 제가 사용한 실행 옵션은 다음과 같습니다.

xmame.x11 -rompath my_rom_path -vidmod 1 -fullscreen -brightness 0.7 rom_file

서두가 길었습니다만, 문제 해결 방법은...
아주 간단합니다. -_-;

src/unix/video-drivers/xv.c
FindRGBXvFormat 함수에서, 다음 부분을

sysdep_display_properties.palette_info.red_mask  =fo[j].red_mask;
sysdep_display_properties.palette_info.green_mask=fo[j].green_mask;
sysdep_display_properties.palette_info.blue_mask =fo[j].blue_mask;

다음과 같이 수정하면 됩니다. 16 bpp 일 때 빨강과 파랑의 마스크값을 뒤바꿉니다.

if( fo[j].bits_per_pixel==16 ) {
        sysdep_display_properties.palette_info.red_mask  =fo[j].blue_mask;
        sysdep_display_properties.palette_info.blue_mask =fo[j].red_mask;
}
else {
        sysdep_display_properties.palette_info.red_mask  =fo[j].red_mask;
        sysdep_display_properties.palette_info.blue_mask =fo[j].blue_mask;
}
sysdep_display_properties.palette_info.green_mask=fo[j].green_mask;

아무튼 제 비디오 카드용 X 드라이버가, OpenGL 기능 중에도 미진하게 지원하는 부분이 있는 것 같고, 문제점이 있어보여서, 제 시스템 문제일 가능성이 클 것 같습니다만, 어쨌든 이렇게 하면 문제 없이 색상이 표시 됩니다.

그리고, SDLmame 가 성능이 더 좋다해서, 빌드해봤는데, 제 시스템에서는 성능이 좋지 못했습니다. 일단 음성이 절면서 나오고 화면은 느립니다. xmame 에서 위와 같이 xv 를 사용하는 경우, 60 FPS 에 음성도 끊김 없이 나오거든요. 게다가 xmame 에서는 잘 되던 게임이 , 잘 안되는 경우도 있더군요.

Forums: 

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.