mirror of
https://github.com/kichikuou/xsystem35-sdl2.git
synced 2026-09-25 07:58:04 +03:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c4e8205d6c | ||
|
|
dd09f54329 | ||
|
|
435ceb31d3 | ||
|
|
e40de66821 | ||
|
|
73c79b7a2e | ||
|
|
a825ee80b3 | ||
|
|
eeeab6e054 | ||
|
|
875b233f32 | ||
|
|
bcaed3a687 | ||
|
|
894e8e26a6 | ||
|
|
7206b0a4f7 | ||
|
|
343f3bb7c5 | ||
|
|
d3650ce293 | ||
|
|
386cfeb60c | ||
|
|
9cd66c83ef | ||
|
|
065e16a082 | ||
|
|
3699aa5c2d | ||
|
|
20914970c9 | ||
|
|
3f2f555aa6 | ||
|
|
095da0bb86 | ||
|
|
7b8acd6e05 | ||
|
|
1b13e331e4 |
@@ -2,7 +2,7 @@ name: Emscripten Build
|
||||
on: [push, pull_request]
|
||||
|
||||
env:
|
||||
EM_VERSION: 3.1.54
|
||||
EM_VERSION: latest
|
||||
EM_CACHE_FOLDER: 'emsdk-cache'
|
||||
|
||||
jobs:
|
||||
|
||||
@@ -15,7 +15,7 @@ jobs:
|
||||
- name: Install Deps
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install libgtk-3-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libportmidi-dev libcjson-dev
|
||||
sudo apt install libgtk-3-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libportmidi-dev libcjson-dev asciidoctor
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
||||
@@ -44,7 +44,7 @@ jobs:
|
||||
cp fonts/*.license dist/licenses/
|
||||
|
||||
- name: Install dev dependencies
|
||||
run: pacboy --noconfirm -S --needed gcc:p cmake:p ninja:p
|
||||
run: pacboy --noconfirm -S --needed gcc:p cmake:p ninja:p asciidoctor:p
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@@ -59,7 +59,7 @@ jobs:
|
||||
|
||||
- name: Package
|
||||
run: |
|
||||
cp out/release/src/xsystem35.exe *.md COPYING xsys35rc.sample dist/
|
||||
cp out/release/src/xsystem35.exe out/release/doc/*.html *.md COPYING xsys35rc.sample dist/
|
||||
|
||||
- name: Upload
|
||||
uses: actions/upload-artifact@v4
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
out
|
||||
android/.gradle
|
||||
android/.idea
|
||||
android/app/.cxx
|
||||
android/app/.externalNativeBuild
|
||||
android/app/build
|
||||
android/app/src/main/assets
|
||||
android/build
|
||||
android/keystore.jks
|
||||
android/local.properties
|
||||
.ccls-cache
|
||||
.dir-locals.el
|
||||
compile_commands.json
|
||||
|
||||
+112
@@ -0,0 +1,112 @@
|
||||
# Changelog
|
||||
|
||||
## 2.11.6 - 2024-07-22
|
||||
- Fixed strange behavior when canceling the battle selection menu in Kichikuou Rance. (#56)
|
||||
- Use system mouse cursors whenever possible. They look better on high dpi displays.
|
||||
- Added manual page for the xsystem35 command.
|
||||
|
||||
## 2.11.5 - 2024-06-10
|
||||
- Android: Fixed a black screen issue in the MangaGamer version of Rance 5D.
|
||||
- Fixed `fileCheckExist` command. (#55)
|
||||
|
||||
## 2.11.4 - 2024-05-22
|
||||
- Windows: In full-screen mode, the menu bar now appears only when the mouse pointer is at the top of the screen. (#53)
|
||||
- Fixed text rendering issue in Rance 3 intro. (#54)
|
||||
|
||||
## 2.11.3 - 2024-04-11
|
||||
- Android: Fixed a bug where save files from older versions could not be loaded in version 2.11.2.
|
||||
|
||||
## 2.11.2 - 2024-04-10
|
||||
- Added `-savedir` option to specify save directory.
|
||||
- Android: Fixed a bug where .xsys35rc in a subdirectory of ZIP was not loaded. (#51)
|
||||
|
||||
## 2.11.1 - 2024-02-18
|
||||
- Windows: Fixed a black screen issue in the MangaGamer version of Rance 5D (#45).
|
||||
- Fixed a crash bug in command-line debugger.
|
||||
|
||||
## 2.11.0 - 2024-01-20
|
||||
- Windows: Now `xsystem35.exe` is a standalone executable. You can just copy it to the game folder and run it.
|
||||
- Windows: The installer is no longer provided. If you have an earlier version installed, please uninstall it.
|
||||
- Windows: The debugger is no longer available in the 32-bit version. Please use the 64-bit version if you need it.
|
||||
- Added experimental `enable_zb` option (#44). See `xsys35rc.sample` for details.
|
||||
|
||||
## 2.10.1 - 2024-01-01
|
||||
- Windows: Added "Integer Scaling" menu option
|
||||
- Fixed initial palette colors (to match System3.9)
|
||||
- Fixed a bug where palette 246 to 249 were unintentionally changed after loading 256-color CGs
|
||||
|
||||
## 2.10.0 - 2023-12-09
|
||||
- Breaking change: A [bug](https://github.com/kichikuou/xsystem35-sdl2/issues/41) has been fixed in which save format for 大悪司 and かえるにょ国にょアリス was not compatible with System3.9. As a result, save files for these games created with older versions of xsystem35 are no longer usable. (Loading will not fail, but wrong values will be loaded.)
|
||||
- Now the 64-bit executable supports Windows 10 or later. For older Windows, please use the 32-bit version.
|
||||
- Fixed a problem with the download edition of Daiakuji requiring insertion of Disk 2. (#43)
|
||||
- Debugger: Added debug commands for monitoring the color palette.
|
||||
- Minor bug fixes.
|
||||
|
||||
## 2.9.1 - 2023-06-22
|
||||
- Fixed a bug where the `CX 1` command (copy with transparent color) did not work in some games (e.g. Daiakuji)
|
||||
- Debugger: Now breakpoints do not make the window completely unresponsive
|
||||
- Debugger: Fixed a conditional breakpoint crash bug
|
||||
|
||||
## 2.9.0 - 2023-05-04
|
||||
- Now xsystem35 uses the System3.9 save file format (unless `-saveformat` command line flag is specified). Old save files can still be loaded.
|
||||
- Changed the default naming convention for save files from `[a-z]sleep.asd` to `<gamename>s[a-z].asd`.
|
||||
- Fixed a bug where SACT games (e.g. Rance 5D) were not responding to touch.
|
||||
- Fixed memory leaks in debugger.
|
||||
|
||||
## 2.8.0 - 2023-02-12
|
||||
- Added support for Rance 4.1/4.2 ver1.05
|
||||
- Fixed movement animation in rooms in Rance 4 v2.05 (#35)
|
||||
- Added `-game` option which can be used to enable game-specific hacks in translated games
|
||||
|
||||
## 2.7.0 - 2023-01-28
|
||||
- Added support for Rance4 ver.2.05
|
||||
- Now supports BGM playback for the download edition of Daiakuji
|
||||
- Bug fixes
|
||||
|
||||
## 2.6.0 - 2023-01-01
|
||||
- Android: Introduced a new way to simulate right-click; tapping on the black bars at the left/right or top/bottom of the screen is treated as a right click. (Two-finger touch, the old way to simulate a right click, still works.)
|
||||
- Windows: Added a menu command to enable/disable automatic mouse movements.
|
||||
|
||||
## 2.5.1 - 2022-07-31
|
||||
- Implemented "palette shift" graphic effect (used in 闘神都市II).
|
||||
- Implemented `grDrawFillCircle` command (used in グレイメルカ).
|
||||
- Fixed color update bug in 256-color games.
|
||||
- Fixed crash by out-of-bounds variable access in debugger.
|
||||
|
||||
## 2.5.0 - 2022-07-17
|
||||
- Supported JPEG image format on Android.
|
||||
|
||||
## 2.4.0 - 2022-07-02
|
||||
- Windows: Added "Restart" menu command.
|
||||
- Fixed a bug where wrong music is played in Kichikuou Rance (System3.9 version). #32
|
||||
- Supported mouse wheel input.
|
||||
- Fixed a bug in `MF` command.
|
||||
- Implemented `grEffectMoveView` command.
|
||||
|
||||
## 2.3.0 - 2022-04-08
|
||||
- Code for screen transition effects have been substantially rewritten (but you probably wouldn't notice any difference).
|
||||
- Fixed bugs in System3.9 games.
|
||||
- Android: Enabled joystick input.
|
||||
- Debugger improvements.
|
||||
|
||||
## 2.2.0 - 2021-12-03
|
||||
From now on, the Android and Windows versions will use a common version number.
|
||||
|
||||
- Android: Use custom fonts specified in `.xsys35c`. (#20)
|
||||
- Supported "王子さまLv1".
|
||||
- Debugger improvements.
|
||||
- Fixed some bugs and compatibility issues.
|
||||
|
||||
## 2.1.0 - 2021-11-07
|
||||
- Fixed issues with MangaGamer version of Rance 5D.
|
||||
- Fixed garbled text in some System3.9 games with Unicode mode.
|
||||
- Display a message box on fatal errors.
|
||||
- Various debugger improvements.
|
||||
|
||||
## 2.0.1 - 2021-10-24
|
||||
- Fixed crash during shutdown.
|
||||
|
||||
## 2.0.0 - 2021-10-23
|
||||
- Added window menubar from which you can save screenshots, change fullscreen mode, and enable message skipping.
|
||||
- Added debugger support that can be used from Visual Studio Code. See [vscode-system3x](https://github.com/kichikuou/vscode-system3x) for details.
|
||||
- Many bug fixes and compatibility fixes.
|
||||
@@ -5,7 +5,10 @@ set(CMAKE_C_STANDARD 99)
|
||||
enable_testing()
|
||||
set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE)
|
||||
|
||||
set(XSYSTEM35_VERSION "2.11.6")
|
||||
|
||||
include(CheckSymbolExists)
|
||||
include(FetchContent)
|
||||
|
||||
# A wrapper around pkg_check_modules() that skips the check if ENABLE_<prefix> is false
|
||||
macro (optional_pkg_check_modules prefix)
|
||||
@@ -26,6 +29,27 @@ function(add_static_library name pkg)
|
||||
INTERFACE_LINK_OPTIONS "${${pkg}_STATIC_LDFLAGS_OTHER}")
|
||||
endfunction()
|
||||
|
||||
function(fetch_webp)
|
||||
FetchContent_Declare(
|
||||
libwebp
|
||||
URL https://storage.googleapis.com/downloads.webmproject.org/releases/webp/libwebp-1.4.0.tar.gz
|
||||
URL_HASH SHA1=0b1c8bea200caaa010182609dbaaa91aec69b64d
|
||||
)
|
||||
set(WEBP_BUILD_ANIM_UTILS OFF CACHE BOOL "Build animation utilities." FORCE)
|
||||
set(WEBP_BUILD_CWEBP OFF CACHE BOOL "Build the cwebp command line tool." FORCE)
|
||||
set(WEBP_BUILD_DWEBP OFF CACHE BOOL "Build the dwebp command line tool." FORCE)
|
||||
set(WEBP_BUILD_GIF2WEBP OFF CACHE BOOL "Build the gif2webp conversion tool." FORCE)
|
||||
set(WEBP_BUILD_IMG2WEBP OFF CACHE BOOL "Build the img2webp animation tool." FORCE)
|
||||
set(WEBP_BUILD_VWEBP OFF CACHE BOOL "Build the vwebp viewer tool." FORCE)
|
||||
set(WEBP_BUILD_WEBPINFO OFF CACHE BOOL "Build the webpinfo command line tool." FORCE)
|
||||
set(WEBP_BUILD_LIBWEBPMUX OFF CACHE BOOL "Build the libwebpmux library." FORCE)
|
||||
set(WEBP_BUILD_WEBPMUX OFF CACHE BOOL "Build the webpmux command line tool." FORCE)
|
||||
set(WEBP_BUILD_EXTRAS OFF CACHE BOOL "Build extras." FORCE)
|
||||
set(WEBP_BUILD_WEBP_JS OFF CACHE BOOL "Emscripten build of webp.js." FORCE)
|
||||
FetchContent_MakeAvailable(libwebp)
|
||||
add_library(WebP ALIAS webp)
|
||||
endfunction()
|
||||
|
||||
check_symbol_exists(getlogin "unistd.h" HAVE_GETLOGIN)
|
||||
check_symbol_exists(mmap "sys/mman.h" HAVE_MMAP)
|
||||
check_symbol_exists(sigaction "signal.h" HAVE_SIGACTION)
|
||||
@@ -41,6 +65,8 @@ if (EMSCRIPTEN)
|
||||
add_emscripten_library(sdl2 -sUSE_SDL=2)
|
||||
add_emscripten_library(sdl2_ttf -sUSE_SDL_TTF=2)
|
||||
set(DEFAULT_FONT_PATH /fonts/)
|
||||
fetch_webp()
|
||||
set(HAVE_WEBP 1)
|
||||
|
||||
elseif (ANDROID)
|
||||
add_library(sdl2 ALIAS SDL2)
|
||||
@@ -50,6 +76,8 @@ elseif (ANDROID)
|
||||
find_library(ndk_zlib z)
|
||||
add_library(zlib INTERFACE)
|
||||
set_target_properties(zlib PROPERTIES INTERFACE_LINK_LIBRARIES ${ndk_zlib})
|
||||
fetch_webp()
|
||||
set(HAVE_WEBP 1)
|
||||
|
||||
else() # non-emscripten, non-android
|
||||
if (WIN32)
|
||||
@@ -206,6 +234,9 @@ add_compile_definitions($<$<CONFIG:Debug>:DEBUG>)
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(tools)
|
||||
add_subdirectory(fonts)
|
||||
if (NOT ANDROID AND NOT EMSCRIPTEN)
|
||||
add_subdirectory(doc)
|
||||
endif()
|
||||
if (ENABLE_NLS)
|
||||
add_subdirectory(po)
|
||||
endif()
|
||||
|
||||
@@ -73,7 +73,7 @@ Copy `xsystem35.exe` to the game folder and run it.
|
||||
|
||||
### Android
|
||||
|
||||
See [android/README.md](android/README.md#use).
|
||||
See [android/README.md](android/README.md#usage).
|
||||
|
||||
### Other Platforms
|
||||
|
||||
@@ -84,11 +84,13 @@ $ cd /path/to/game_directory
|
||||
$ xsystem35
|
||||
```
|
||||
|
||||
See [xsystem35 command manual](doc/xsystem35.6.adoc) for detailed usage.
|
||||
|
||||
## Building
|
||||
### Linux (Debian / Ubuntu)
|
||||
|
||||
```bash
|
||||
$ sudo apt install build-essential cmake libgtk-3-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libcjson-dev
|
||||
$ sudo apt install build-essential cmake libgtk-3-dev libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev libwebp-dev libcjson-dev asciidoctor
|
||||
$ mkdir -p out/debug
|
||||
$ cd out/debug
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Debug ../../
|
||||
@@ -100,7 +102,7 @@ $ make && make install
|
||||
[Homebrew](https://brew.sh/) is required.
|
||||
|
||||
```bash
|
||||
$ brew install cmake pkg-config sdl2 sdl2_mixer sdl2_ttf webp cjson
|
||||
$ brew install cmake pkg-config sdl2 sdl2_mixer sdl2_ttf webp cjson asciidoctor
|
||||
$ mkdir -p out/debug
|
||||
$ cd out/debug
|
||||
$ cmake -DCMAKE_BUILD_TYPE=Debug ../../
|
||||
|
||||
@@ -16,8 +16,8 @@ android {
|
||||
defaultConfig {
|
||||
minSdkVersion 19
|
||||
targetSdkVersion 34
|
||||
versionCode 20
|
||||
versionName "2.11.2" + gitRevision()
|
||||
versionCode 24
|
||||
versionName "2.11.6" + gitRevision()
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_APP_PLATFORM=android-19", "-DANDROID_STL=c++_static"
|
||||
|
||||
@@ -33,9 +33,7 @@ set(SDL2MIXER_WAVPACK OFF CACHE BOOL "Enable WavPack music" FORCE)
|
||||
set(SDL2MIXER_SAMPLES OFF CACHE BOOL "Build the SDL2_mixer sample program(s)" FORCE)
|
||||
set(SDL2MIXER_INSTALL OFF CACHE BOOL "Enable SDL2_mixer install target" FORCE)
|
||||
|
||||
FetchContent_MakeAvailable(SDL)
|
||||
FetchContent_MakeAvailable(SDL_ttf)
|
||||
FetchContent_MakeAvailable(SDL_mixer)
|
||||
FetchContent_MakeAvailable(SDL SDL_ttf SDL_mixer)
|
||||
|
||||
# The main CMakeLists.txt of xsystem35
|
||||
add_subdirectory(${PROJECT_ROOT_DIR} xsystem35)
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
#cmakedefine PACKAGE "@PACKAGE@"
|
||||
#define VERSION "2.11.2"
|
||||
#define VERSION "@XSYSTEM35_VERSION@"
|
||||
|
||||
#cmakedefine CACHE_TOTALSIZE @CACHE_TOTALSIZE@
|
||||
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
set(SOURCES
|
||||
xsystem35.6.adoc
|
||||
xsystem35.gr.5.adoc
|
||||
)
|
||||
|
||||
find_program(ASCIIDOCTOR asciidoctor)
|
||||
if (NOT ASCIIDOCTOR)
|
||||
message(WARNING "asciidoctor not found, manpages will not be generated")
|
||||
else()
|
||||
if (WIN32)
|
||||
set(BACKEND html)
|
||||
else()
|
||||
set(BACKEND manpage)
|
||||
include(GNUInstallDirs)
|
||||
endif()
|
||||
|
||||
set(MANUALS "")
|
||||
foreach(SRC ${SOURCES})
|
||||
string(REGEX MATCH "^(.*)\\.([0-9])\\.adoc$" _ ${SRC})
|
||||
set(NAME ${CMAKE_MATCH_1})
|
||||
set(SECTION ${CMAKE_MATCH_2})
|
||||
if (WIN32)
|
||||
set(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.html)
|
||||
else()
|
||||
set(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${NAME}.${SECTION})
|
||||
install(FILES ${OUTPUT} DESTINATION ${CMAKE_INSTALL_MANDIR}/man${SECTION})
|
||||
endif()
|
||||
add_custom_command(
|
||||
OUTPUT ${OUTPUT}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/${SRC}
|
||||
COMMAND ${ASCIIDOCTOR}
|
||||
--attribute xsystem35-version=${XSYSTEM35_VERSION}
|
||||
--backend ${BACKEND}
|
||||
--out-file ${OUTPUT}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/${SRC}
|
||||
)
|
||||
list(APPEND MANUALS ${OUTPUT})
|
||||
endforeach()
|
||||
|
||||
add_custom_target(manual ALL DEPENDS ${MANUALS})
|
||||
endif()
|
||||
|
||||
@@ -1,80 +0,0 @@
|
||||
ゲームリソースファイル(*.gr)の書き方
|
||||
|
||||
|
||||
xsystem35ではゲームデータの置き場所をテキストファイルに保存しておき、
|
||||
それをxsystem35に指定してやる事でデータの置き場所を知らせます。
|
||||
|
||||
# このファイルのファイル名はxsystem35を起動する時に指定できますので、hoge.gr
|
||||
# である必要は無く、自由につける事が出来ます。
|
||||
|
||||
ここでは、このテキストファイル(ゲームリソースファイル)の書式を説明します。
|
||||
|
||||
|
||||
1つのデータにつき1行で記述します。例を見て下さい。
|
||||
|
||||
ScenarioA /home/chikama/game/rance4/rance4_sa.ald
|
||||
|
||||
キーワード データのフルパス
|
||||
|
||||
の順に書きます。キーワードは行の先頭から書き、データのフルパスとの間は半角
|
||||
スペースです。(セーブデータのみ、ホームディレクトリを表す ~ を評価します。)
|
||||
|
||||
キーワードには次の7つがあります。
|
||||
|
||||
Scenario : シナリオ
|
||||
Graphics : グラフィック
|
||||
Wave : PCMデータ
|
||||
Midi : MIDIデータ
|
||||
Data : その他データ
|
||||
Save : セーブデータ
|
||||
Resource : リソースファイル(マウスカーソル形状)
|
||||
Ain : DLL とその関数の情報のかかれた System39.ain
|
||||
BGM : BGMデータ(エスカレイヤー以降のBGMデータファイル)
|
||||
WAI : PCMデータの追加情報 (mixer channel 情報等)
|
||||
BGI : BGMデータの追加情報 (ループ位置等)
|
||||
SACT01 : SACT.DLL用データ (SACTEFAM.KLD)
|
||||
ALK : デモ用アーカイブファイル
|
||||
Init : System39.ini
|
||||
|
||||
同じ種類のデータが複数ある場合はキーワードの次にA,B,C...をつけます。
|
||||
(Ain を除く)
|
||||
|
||||
CD-ROM上のどれがどの種類のファイルかは、ファイル名で判別します。
|
||||
*SA.ALD ならシナリオの1番目、*GA.ALDはグラフィック、*WA.ALDはPCM、
|
||||
*MA.ALD はMIDI、*DA.ALDはその他データです。
|
||||
|
||||
Ain は System39.ain へのパスを書きます。例えば
|
||||
Ain /home/chikama/game/20cKaeru/System39.ain
|
||||
のように書きます。
|
||||
|
||||
Init は System39.ini へのパスを書きます。例えば
|
||||
Init /home/chikama/game/esuka/System39.ini
|
||||
のように書きます。
|
||||
|
||||
WAI/BGI は通常1ファイルだけですので
|
||||
WAIA /home/chikama/game/esuka/DOKI_WA.WAI
|
||||
BGIA /home/chikama/game/esuka/DOKI_BA.BGI
|
||||
のように書きます。
|
||||
|
||||
SACT01 は SACTシステム固有のデータファイル(SACTEFAM.KLD)へのパスを
|
||||
指定します。
|
||||
SACT01 /home/chikama/game/rance5d/SACTEFAM.KLD
|
||||
|
||||
ALK はデモ用のデータが入ったアーカイブファイルです。
|
||||
ALK01 /home/chikama/game/nd/NightDemonDemo1.alk
|
||||
ALK02 /home/chikama/game/nd/NightDemonDemo2.alk
|
||||
ALK03 /home/chikama/game/nd/NightDemonDemo3.alk
|
||||
のように書きます。
|
||||
|
||||
|
||||
また、これらの範疇にはいらないデータ、たとえば、かえるにょぱにょんの
|
||||
floor_1.mapなどはリソースファイルを介しませんので、ゲームリソース
|
||||
ファイルには書かず、「セーブデータを置いたディレクトリと同じ場所」に
|
||||
コピーして下さい。
|
||||
|
||||
また、Save? のみ、'~' (ホームディレクトリ)を評価しますので、
|
||||
SaveA ~/savedata/kichiku/kichiku_sa.ald
|
||||
のように書く事が出来ます。
|
||||
|
||||
コメントを書く場合は行頭に # をつけます。また空白行は無視されます。
|
||||
|
||||
-314
@@ -1,314 +0,0 @@
|
||||
|
||||
System 3.5 for X Window System Version 1.7 (開発版)
|
||||
|
||||
0. 目次
|
||||
|
||||
1. はじめに
|
||||
2. 開発環境と動作確認環境
|
||||
2.a. 開発環境
|
||||
2.b. 動作確認環境
|
||||
2.c. 多分動くと思われる環境
|
||||
3. xystem35の設定ファイル
|
||||
4. ゲームの実行と終了
|
||||
4.a. ゲームの実行
|
||||
4.b. ゲームの終了
|
||||
4.c. xsystem35メニュー
|
||||
4.d. キーボード操作
|
||||
5. コマンドラインオプション
|
||||
6. その他情報
|
||||
6.a. SYSV IPC
|
||||
6.b. SharedMemoryの大きさについて
|
||||
6.c. locale と X
|
||||
7. 著作権とライセンス
|
||||
8. サポート
|
||||
|
||||
|
||||
1. はじめに
|
||||
|
||||
このソフトは AliceSoft の Syetem3.5/3.6/3.8/3.9 上で動くゲームを
|
||||
X Window System 上で動かすためのプログラムです。
|
||||
|
||||
* 動作確認ゲーム
|
||||
|
||||
鬼畜王ランス
|
||||
ランス4 (for Win95)
|
||||
闘神都市II (for Win95)
|
||||
夢幻泡影 (for Win95)
|
||||
かえるにょぱにょ〜ん (初版、廉価版)
|
||||
いけないかつみ先生
|
||||
戦巫女 (初版、廉価版)
|
||||
零式 (館456版、廉価版)
|
||||
ATLACH=NACHA (館456版、廉価版)
|
||||
人間狩り
|
||||
王道勇者
|
||||
ディアボリカ (初版、廉価版)
|
||||
AmbivalenZ(for Win95)
|
||||
ぱすてるチャイム
|
||||
ぷろすちゅーでんとGood
|
||||
守り神様
|
||||
ママトト
|
||||
|
||||
アリスの館456
|
||||
DALK
|
||||
闘神都市
|
||||
DrStop!
|
||||
ランス1
|
||||
ランス2
|
||||
ランス3
|
||||
|
||||
アリスCD Ver 1.02
|
||||
メイドのすすめ
|
||||
ぶろぶろ
|
||||
学園漂流戦記
|
||||
|
||||
Hushaby Baby
|
||||
Darcrows
|
||||
PERSIOM
|
||||
隠れ月
|
||||
SeeIn青
|
||||
|
||||
20世紀アリス
|
||||
これDPS?
|
||||
かえるにょ国にょアリス
|
||||
|
||||
アリスCD Ver 2.02
|
||||
扉
|
||||
妖精
|
||||
|
||||
OnlyYou リ・クルス
|
||||
王子さま Lv1.5
|
||||
|
||||
* 動かないゲーム
|
||||
|
||||
夜が来る!
|
||||
王子さま Lv1
|
||||
DALK外伝 (System4)
|
||||
ままにょにょ (System4)
|
||||
|
||||
* 一部動作可能
|
||||
|
||||
大悪司 (オープニング不可)
|
||||
妻みぐい (オープニング不可)
|
||||
エスカレイヤー (オープニング不可)
|
||||
Rance5D
|
||||
妻みぐい2 (オープニング不可)
|
||||
シェル・クレイル
|
||||
NightDemon (オープニング不可)
|
||||
|
||||
|
||||
各ゲームについての補足事項は doc/GAMES.TXT を御覧ください。
|
||||
|
||||
また、ネット上で公開されているSYSTEM3.5用のゲームのうち、いくつかは
|
||||
動作が確認されています。くわしくは MISCGAME.TXT を御覧下さい。
|
||||
|
||||
|
||||
2. 開発環境と動作確認環境
|
||||
|
||||
2.a. 開発環境
|
||||
|
||||
Kondara-1.2 (Linux/i386)
|
||||
|
||||
2.b. 動作確認環境
|
||||
|
||||
DigitalUnix 4.0F (alpha)
|
||||
SunOS 5.8 (sparc)
|
||||
|
||||
2.c. 多分動くと思われる環境
|
||||
|
||||
Linux(!i386)
|
||||
FreeBSD/NetBSD/OpenBSD (i386 etc)
|
||||
Irix 6.X
|
||||
Solaris 2.X 以降 (sparc/i386)
|
||||
|
||||
|
||||
3. xystem35の設定ファイル
|
||||
|
||||
xsystem35ではフォントの設定などを、カレントディレクトリとホームディレクトリに
|
||||
ある .xsys35rcというファイルから読み込みます。カレントディレクトリの .xsys35rc
|
||||
に書かれた設定のほうが優先されるため、一般的な設定はホームディレクトリの
|
||||
.xsys35rcに書き、特定のゲームで書き換えたい項目はゲームを置いたディレクトリの
|
||||
.xsys35rcに書くといいでしょう。
|
||||
|
||||
サンプルとなるファイルを xsys35rc.sample として用意しました。
|
||||
|
||||
また、gtk widgetのリソースは ~/.gtk/gtkrc または ~/.gtkrc から読み込みます。
|
||||
読み込み先は .xsys35rc で指定できます。
|
||||
|
||||
ゲームで使用するフォントは X のフォントの仕組を使う方法と、TrueTypeFontを
|
||||
外部ライブラリを使って直接表示する方法の2種類が選べます。
|
||||
|
||||
~/.xsys35rc の ttfont_mincho: と ttfont_gothic: の場所にフォントファイルを
|
||||
指定し、font_device: ttf と指定してください。詳しくはサンプルファイル
|
||||
(xsys35rc.sample)を見て下さい。
|
||||
|
||||
|
||||
4. ゲームの実行と終了
|
||||
|
||||
4.a. ゲームの実行
|
||||
|
||||
instgameを使ってゲームデータをインストールすると、インストールした
|
||||
ディレクトリにの一つ上に ???????.gr というファイル(ゲームリソースファイル)
|
||||
が自動的に作成されますので
|
||||
|
||||
% xsystem35 -gamefile ~/game/???????.gr
|
||||
|
||||
のように実行します。-gamefile オプションをつけない場合は、カレントディレク
|
||||
トリの xsystem35.gr を参照します。
|
||||
|
||||
またいずれも見つからない場合は、カレントディレクトリにあるファイルをゲーム
|
||||
データとして設定します。例えば testSA.ALD というファイルがカレントディレク
|
||||
トリにあると、それをシナリオデータとして使います。またセーブデータは適当な
|
||||
名前で 10個確保されます。
|
||||
|
||||
ゲームリソースファイルの書き方については、doc/GRFMT.TXT を御覧下さい。
|
||||
|
||||
4.b. ゲームの終了
|
||||
|
||||
* 起動した端末で Ctrl+C を押すと、すぐに終了します。
|
||||
|
||||
* ゲーム中にマウスの真中のボタンを押すと、メニューが出て来ますので、
|
||||
そこから 'Exit' を選んで終了させて下さい。Window Manager のCloseボタンでも
|
||||
同じように動作します。
|
||||
|
||||
* ESC + SPACE + RET キーを同時に押すと、すぐに終了します。
|
||||
|
||||
4.c. xsystem35メニュー
|
||||
|
||||
ゲーム中にマウスの真中ボタンを押すとメニューが出て来ます。
|
||||
|
||||
メッセージスキップ(MessageSkip):
|
||||
次の選択肢までメッセージを飛ばします。マウスの右クリックで
|
||||
止まります。シナリオによっては停止しない場合もあります。
|
||||
|
||||
マウスカーソル移動(MouseAutoMove):
|
||||
選択ウィンドなどでマウスが自動的に移動するのを制御します。
|
||||
|
||||
ボリュームバランス(VolumeValance):
|
||||
SACTシステムで音声の人物毎に音量を変えることができます。
|
||||
(ゲームがそう出来るように対応している場合のみ)
|
||||
|
||||
情報(About):
|
||||
このゲームについて。
|
||||
|
||||
終了(Exit):
|
||||
ゲームを終了します。
|
||||
|
||||
4.d. キーボード操作
|
||||
|
||||
アリスソフトのゲームは有史来、基本的に上下左右キーに SPACE, RET, ESC, TAB
|
||||
キーしか使いません(一部のゲームはそれ以外のキーを使うこともあります)。
|
||||
XSystem35 では次のキー割当を特別に使っています。
|
||||
|
||||
F1: メッセージスキップ
|
||||
F4: フルスクリーン <-> Window表示の切替え
|
||||
|
||||
また、旧き良き時代の DOS への復帰キー (ESC + SPACE + RET) でゲームを確認なし
|
||||
で終了出来ます。
|
||||
|
||||
|
||||
5. コマンドラインオプション
|
||||
|
||||
-h : ヘルプを表示します。
|
||||
|
||||
-gamefile file : ゲームリソースファイルを file から読み込みます。
|
||||
|
||||
-no-shm : ネットワーク越しに起動する場合に指定します。
|
||||
|
||||
-devcd name : CD-ROM device名を name にします。
|
||||
-devmidi name : MIDI device名を name にします。
|
||||
|
||||
-M? : MIDI の出力の種類を選択します。
|
||||
-Me : External midi player (default)
|
||||
-Mr : Raw Midi device
|
||||
-Ms? : Sequencer device (?:device number)
|
||||
-M0 : disable midi
|
||||
|
||||
-devjoy n : n 番目の joystick のデバイスを使用します。
|
||||
|
||||
-version : バージョン情報を表示します。
|
||||
|
||||
-fullscreen : フルスクリーンでゲームを実行します。
|
||||
SDL 有効時には Widget にフォーカスが当たらないため Popup
|
||||
menu 等が使用できません。
|
||||
|
||||
-antialias : 常に文字にアンチエリアスをかけます。
|
||||
|
||||
-noantialias : 常に文字にアンチエリアスをかけません。シナリオ上でアンチ
|
||||
エリアスの指定があっても無視します。
|
||||
|
||||
-devfont : フォントデバイスを指定します。x11/ft2/sdl のいずれかが
|
||||
使えます。
|
||||
|
||||
-noimagecursor : リソースファイルによるカーソル形状の変更(Darcrows等)を無効
|
||||
にしたい場合に指定します。
|
||||
|
||||
|
||||
6. その他情報
|
||||
|
||||
6.a. SYSV IPC
|
||||
|
||||
カーネルに SYSV IPC (SharedMemory/MessageQueue/Semaphore)の機能が
|
||||
組み込まれている必要があります。
|
||||
|
||||
6.b. SharedMemoryの大きさについて
|
||||
|
||||
カーネルのSharedMemoryの大きさが十分大きい場合、MIT-SHMを利用して画面を
|
||||
高速に描画する事が出来ます。起動時にエラーが出る場合、カーネルパラメータを
|
||||
変更してみて下さい。(BSD 系はデフォルトの SharedMemory の大きさが小さい
|
||||
ようです)
|
||||
|
||||
6.b.1. FreeBSDの場合 /usr/src/sys/i386/conf/LINT 中の
|
||||
|
||||
options SHMALL=1025
|
||||
options "SHMMAX=(SHMMAXPGS*PAGE_SIZE+1)"
|
||||
options SHMMAXPGS=1025
|
||||
options SHMMIN=2
|
||||
options SHMMNI=33
|
||||
options SHMSEG=9
|
||||
「SHMMAXPGS」が関連項目です。
|
||||
|
||||
24bppで起動する場合は SHMMAXPGS=4096 くらいにするとよいようです。
|
||||
もちろん設定後はカーネルの再構築が必要です。
|
||||
|
||||
6.c. locale と X
|
||||
|
||||
libc に locale 機構が組み込まれていない環境の場合、libxpg4 などの
|
||||
ライブラリ(FreeBSD) や X の locale を使うことになります。
|
||||
|
||||
linux の libc5 な環境では configure 時に --with-locale=ja_JP.ujis として
|
||||
コンパイルしてください。
|
||||
|
||||
それ以外のほとんどの環境では考慮する必要はないでしょう。
|
||||
|
||||
|
||||
7. 著作権とライセンス
|
||||
|
||||
プログラムの著作権は作者(chikama)に属しますが、ソースコードはGPLに基づいて
|
||||
再配付できます。
|
||||
(一部のソースコードは私以外に著作権があります。詳しくは、ソースコードを御覧
|
||||
下さい)
|
||||
|
||||
ゲーム内で使われてるカーソルフォントの一部をqvwm(Windows95そっくりのWindow
|
||||
Manager)からいただきました。
|
||||
|
||||
|
||||
8. サポート
|
||||
|
||||
動作報告・バグ報告などは以下のメールアドレスまでお願いします。
|
||||
|
||||
E-Mail: chikama@nabal.aist-nara.ac.jp (private)
|
||||
masaki-c@is.aist-nara.ac.jp (official)
|
||||
|
||||
また最新版は以下のURLからダウンロードできます。
|
||||
|
||||
http://www.aist-nara.ac.jp/~masaki-c/private/unitbase/xsys35/index.html
|
||||
|
||||
バグレポートの際は、お使いの環境を出来るだけくわしく書いて下さい。
|
||||
また特定のゲームで動かない場合は、出来るだけセーブデータも添付して下さい。
|
||||
|
||||
プログラムやシナリオデータのバグで 'sigsegv caught @xxx,xxxxx' といって
|
||||
終了する場合は、そのメッセージの部分(xxx,xxxx)も送って下さい。
|
||||
|
||||
可能ならば、./configure で --enable-debug を付けてコンパイルしておき、
|
||||
デバッガ上で実行して segmentation fault で止まった時に、bt と打って出てくる
|
||||
メッセージを添付していただけるととても助かります。
|
||||
@@ -1,307 +0,0 @@
|
||||
|
||||
xsystem35 における音楽環境について
|
||||
|
||||
|
||||
0. もくじ
|
||||
1. MIDIについて
|
||||
a) 外部プレーヤーを使う方法
|
||||
1) xsystem35 側の準備
|
||||
2) プレイヤーの準備
|
||||
3) xsystem35へのリダイレクト
|
||||
4) 制限事項
|
||||
b) 外部 MIDI 音源を /dev/midi 経由で制御する方法
|
||||
1) xsystem35 側の準備
|
||||
2) 外部 MIDI 音源の準備
|
||||
c) Synthesizer 音源を /dev/sequencer 経由で制御する方法
|
||||
1) xsystem35 側の準備
|
||||
2) Synthesizer 音源の準備
|
||||
d) オプション一覧
|
||||
2. 効果音(WAV)について
|
||||
a) OSS 出力
|
||||
b) ALSA 出力
|
||||
c) ESD 出力
|
||||
3. CDオーディオについて
|
||||
a) CD-ROM コントロールによる演奏
|
||||
b) 外部プレイヤ(mp3など)による演奏
|
||||
4. PCM & MIDI(timidity) & CD-ROM(MP3) を1枚のサウンドカードで同時に使う方法
|
||||
|
||||
|
||||
1. MIDIについて
|
||||
|
||||
xsystem35 では MIDI の演奏に外部プレーヤーを使う方法と、サウンドカードの
|
||||
MIDI port を介して接続した外部 MIDI 機器を /dev/midi 経由で制御する方法、
|
||||
さらに、synthesizer device を OSS sequencer (/dev/sequencer) 経由で制御する
|
||||
方法の3種類が選択できます。
|
||||
|
||||
a) 外部プレーヤーを使う方法
|
||||
|
||||
1) xsystem35 側の準備
|
||||
xsystem35 の configure 実行時に --enable-midi=extp を付けてコンパイル
|
||||
しておきます。
|
||||
|
||||
2) プレイヤーの準備
|
||||
TiMidity や playmidi など、お好みのプレーヤーをお使いください。
|
||||
プレイヤーへはあらかじめパスを通しておき、~/.xsys35rc にプレイヤーと
|
||||
プレイヤーへの引数を記述します。
|
||||
|
||||
(例) TiMidity を esd 経由で出力する場合
|
||||
midi_player: timidity -A 100 -s 44100 -Oe
|
||||
|
||||
2a) xsystem35へのリダイレクト (オプション)
|
||||
TiMidity を使っている場合、TiMidity の PCM 出力を xsystem35 へとリダ
|
||||
イレクトして xsystem35 側で管理しているPCM デバイスに流す事が出来ます。
|
||||
~/.xsys35rc の MIDI プレーヤーの設定の際に先頭に '-' をつけて下さい。
|
||||
|
||||
(例)
|
||||
midi_player: -timidity -A 100 -s 44100 -Or -o-
|
||||
|
||||
この場合 timidity の出力は 44.1kHz, Stereo, 16bit 固定です。
|
||||
|
||||
3) 制限事項
|
||||
外部プレイヤーを 使用する場合、MIDIファイルに埋め込まれた system35 用の
|
||||
制御コマンドを実行することができず、リピート再生、ジャンプ再生などが出来
|
||||
ません。このため、ゲームの進行に支障が出ることがあります。
|
||||
|
||||
|
||||
b) 外部 MIDI 音源を /dev/midi 経由で制御する方法
|
||||
|
||||
1) xsystem35 側の準備
|
||||
xsystem35 の configure 実行時に --enable-midi=raw を付けてコンパイル
|
||||
しておきます。
|
||||
|
||||
2) 外部 MIDI 音源の準備
|
||||
外部 MIDI 音源(SC-88など)をサウンドカード の MIDI port を介して接続
|
||||
します。このポートは /dev/midi デバイスを介して制御できる必要があります。
|
||||
ALSA OSS Emulation 上で SB-Live の MIDI 端子に接続した SC-88 での動作を
|
||||
確認しています。
|
||||
|
||||
c) Synthesizer 音源を /dev/sequencer 経由で制御する方法
|
||||
|
||||
1) xsystem35 側の準備
|
||||
xsystem35 の configure 実行時に --enable-midi=seq を付けてコンパイル
|
||||
しておきます。
|
||||
|
||||
2) Synthesizer 音源の準備
|
||||
外部 MIDI 機器を接続するか、サウンドカード上に soundfont を load するか
|
||||
TiMidity を ALSA sequencer server として常駐させておいてください。
|
||||
|
||||
TiMidity を ALSA sequencer server にするには、コンパイル時にその機能を
|
||||
有効にしておき、timidity -iA で常駐させます。
|
||||
|
||||
d) オプション一覧
|
||||
|
||||
MIDI 出力に関する、 .xsys35rc の設定項目(A)とコマンドラインオプション(B)
|
||||
をまとめます。
|
||||
|
||||
1) MIDI プレイヤーの設定
|
||||
(A) ----> midi_player:
|
||||
(B) ----> -midiplayer
|
||||
|
||||
2) MIDI デバイスファイルの設定 (default: /dev/midi or /dev/sequencer)
|
||||
(A) ----> midi_device:
|
||||
(B) ----> -devmidi
|
||||
|
||||
3) MIDI 出力方法の選択 (default: e)
|
||||
(A) ----> midi_output_device: ?
|
||||
(B) ----> -M?
|
||||
|
||||
? .... e : 外部プレーヤ
|
||||
r : midi device 経由
|
||||
sX: sequencer device 経由 (X番目のポート)
|
||||
0 : (ゼロ) 無効化
|
||||
|
||||
コンパイル時に --enable-midi=extp,raw,seq とすることで、複数の方式を有効
|
||||
にし、実行時にいずれかを選択できます。その他のコンパイルオプションは
|
||||
INSTALL ドキュメントを御覧ください。
|
||||
|
||||
sequencer device の X 番目のポートは通常、0 ですが、複数のポートがある
|
||||
場合はそのポート番号を指定してください。ALSA の OSS emu では、
|
||||
$ cat /proc/asound/seq/oss
|
||||
と実行して出て来る
|
||||
midi ?: [xxxx] ALSA port aa:bb
|
||||
の ? の番号を指定します。
|
||||
|
||||
コマンドラインから外部MIDIプレイヤーを指定する場合は
|
||||
-midiplayer "timidity -A 100 -s 44100 -Oe" のようにします。
|
||||
|
||||
|
||||
2. 効果音(WAV)について
|
||||
|
||||
xsystem35ではオーディオインターフェイスとして、Linux/*BSD などで良く使われて
|
||||
いる OSS およびその互換インターフェイスに加えて、ALSA(Advanced Linux Sound
|
||||
Architecture) と ESD(Enligtened Sound Daemon)に対応しています。
|
||||
|
||||
a) OSS 出力
|
||||
|
||||
1) コンパイル
|
||||
configure 時に --enable-audio=oss オプションを付けてコンパイルします。
|
||||
|
||||
2) 実行時オプション
|
||||
コマンドライン: -Oo
|
||||
.xsys35rc : audio_output_device: o
|
||||
|
||||
3) dsp デバイス (default: /dev/dsp)
|
||||
コマンドライン: -devdsp
|
||||
.xsys35rc : dsp_device:
|
||||
|
||||
4) mixer デバイス (default: /dev/mixer)
|
||||
コマンドライン: -devmix
|
||||
.xsys35rc : mixer_device:
|
||||
|
||||
|
||||
b) ALSA 出力
|
||||
|
||||
1) コンパイル
|
||||
configure 時に --enable-audio=alsa オプションを付けてコンパイルします。
|
||||
|
||||
2) 実行時オプション
|
||||
コマンドライン: -Os
|
||||
.xsys35rc : audio_output_device: s
|
||||
|
||||
3) dsp デバイス (default: 0:0)
|
||||
コマンドライン: -devdsp
|
||||
.xsys35rc : dsp_device:
|
||||
|
||||
|
||||
c) ESD 出力
|
||||
|
||||
1) コンパイル
|
||||
configure 時に --enable-audio=esd オプションを付けてコンパイルします。
|
||||
|
||||
2) 実行時オプション
|
||||
コマンドライン: -Oe
|
||||
.xsys35rc : audio_output_device: e
|
||||
|
||||
OSS/ALSA/ESD をすべて有効にしてコンパイルし、実行時にどの出力を使用するか
|
||||
選択できます。configure 時に --enable-audio=oss,alsa,esd としてコンパイル
|
||||
してください。
|
||||
|
||||
|
||||
3. CDオーディオについて
|
||||
|
||||
CD-ROM の制御には Linux/FreeBSD/Irix のインターフェイスに対応しています。
|
||||
また、CD-ROM デバイスを直接制御する他に、外部プレイヤを使って mp3 file など
|
||||
を鳴らすことも出来ます。
|
||||
|
||||
a) CD-ROM コントロールによる演奏
|
||||
環境によって自動的に適切なドライブが選択されコンパイルされます。
|
||||
|
||||
b) 外部プレイヤ(mp3など)による演奏
|
||||
あらかじめ CD を MP3/WAV 化して起きます。また mpg123 などのプレイヤ
|
||||
を用意し、パスを通しておきます。
|
||||
|
||||
1) コンパイル
|
||||
configure 時に --enable-cdrom=mp3 オプションを追加します。CD-ROM
|
||||
コントロールを実行時に使い分けたい時は --enable-cdrom=linux,mp3 などと
|
||||
します。
|
||||
|
||||
3) プレイヤー名とファイルリストを書いた次のようなファイルを用意します。
|
||||
|
||||
% cat /game/kichiku.playlist
|
||||
mpg123-esd -quite
|
||||
/game/kichiku/mp3/trk02.mp3
|
||||
/game/kichiku/mp3/trk03.mp3
|
||||
/game/kichiku/mp3/trk04.mp3
|
||||
/game/kichiku/mp3/trk05.mp3
|
||||
/game/kichiku/mp3/trk06.mp3
|
||||
|
||||
というようなファイルを用意します。
|
||||
1行目はプレーヤーとそのオプション
|
||||
2行目以降はトラック2から順にファイルをならべます。(フルパスで指定します)
|
||||
|
||||
*) 適切に外部プレイヤーと演奏ファイルを用意すれば、データ形式は問いません。
|
||||
|
||||
3a) xsystem35 へのリダイレクト(オプション)
|
||||
|
||||
mpg123 などのプレイヤーのPCM 出力を xsystem35 へとリダイレクトして
|
||||
xsystem35 側で管理しているPCM デバイスに流す事が出来ます。
|
||||
上の kichiku.playlist ファイルのプレイヤの設定で先頭に '-' をつけて
|
||||
ください。
|
||||
|
||||
(例)
|
||||
-mpg123 -q -s
|
||||
|
||||
この場合 mpg123 の出力は 44.1kHz, Stereo, 16bit 固定です。
|
||||
|
||||
4) 実行時オプションに -devcd /game/kichiku.playlist と上で作成したファイル
|
||||
を指定します。
|
||||
|
||||
|
||||
|
||||
CD-ROM に関する .xsys35rc の設定項目(A) と コマンドラインオプション(B) を
|
||||
まとめます。
|
||||
|
||||
1) CD 出力方法の選択
|
||||
(A) ----> cdrom_device: ???
|
||||
(B) ----> -devcd ????
|
||||
|
||||
MP3 出力 => ???? にプレイリストを指定
|
||||
CD-ROM => ???? にデバイスファイルを指定
|
||||
|
||||
2) CD-ROM デバイスファイルの設定 (defult /dev/cdrom)
|
||||
(A) ----> cdrom_device: ???
|
||||
(B) ----> -devcd: ????
|
||||
|
||||
|
||||
4. PCM & MIDI(timidity) & CD-ROM(MP3) を1枚のサウンドカードで同時に使う方法
|
||||
(special thanks to Fumihiko Murata)
|
||||
|
||||
サウンドカードを選ばない方法としては esd を使うことです。esd は対応した複数
|
||||
のプログラムの音の出力を合成してサウンドカードに出力するプログラムです。
|
||||
xsystem35/timidity/mp3 player を esd 対応にコンパイルすることで合成が可能
|
||||
です。
|
||||
|
||||
また、Trident 4DWave DX/NX、SoundBlaster Live/ YAMAHA YMF724以降 などのサウ
|
||||
ンドカードは PCM チャンネルを複数持っていて、対応のサウンドドライバーがあれば
|
||||
PCMとMIDI(SoftwareMIDI)とMP3 を同時に鳴らすことが出来ます。たとえば
|
||||
SoundBlaster Live + ALSA では
|
||||
|
||||
$ cat /proc/asound/pcm
|
||||
00-00: emu10k1 : EMU10K1 : playback 32 : capture 1
|
||||
00-01: emu10k1 mic : EMU10K1 MIC : capture 1
|
||||
00-02: emu10k1 efx : EMU10K1 EFX : capture 1
|
||||
|
||||
のように PCM を 32 チャンネル持っていることが分かります。これは OSS でいうと
|
||||
ころの /dev/dspN に最大 32 の PCM がぶら下がっているように見え、同時に 32 回
|
||||
/dev/dspN を開くことが出来ます。
|
||||
|
||||
また Trident 4DWave DX/NX + ALSA では全部で64chあり、最大で32chを PCM playback
|
||||
に割り当てる事ができます。最大チャンネルはモジュールロード時に 設定され、設定
|
||||
数を使いきるまで同時に /dev/dspN を開く事ができます。
|
||||
|
||||
残りの 32ch は MIDI 用に設けられていて、PCM と MIDI の2つのバンクに分ける事
|
||||
ができます。個々のチャンネルには PCM front volume がありますが、2つのバンク
|
||||
をそれぞれ統括する Wave/Music Volume があり さらにそれらを合わせる PCM volume
|
||||
があります。(最後に Master Volume)
|
||||
|
||||
図にすると次のようになります。
|
||||
|
||||
PCM Volume + - Wave Volume + - front volume- PCM Playback 0
|
||||
| + - .. - PCM Playback 1
|
||||
| :
|
||||
| + - .. - PCM Playback 31
|
||||
|
|
||||
+ - Music Volume + - .. - PCM Playback 32
|
||||
:
|
||||
+ - .. - PCM Playback 63
|
||||
|
||||
|
||||
ES1370/1371 でも PCM 用 と MIDI 用に 2 チャンネルの PCM 出力があります。
|
||||
ALSA では
|
||||
|
||||
$ cat /proc/asound/pcm
|
||||
00-00: ES1371/1 : ES1371 DAC2/ADC : playback 1 : capture 1
|
||||
00-01: ES1371/2 : ES1371 DAC1 : playback 1
|
||||
|
||||
のように 0:0 と 0:1 のデバイスが再生用として使う事が出来ます。timidity 用に
|
||||
0:1 のデバイスを使うと良いでしょう。OSS では /dev/dsp0 と /dev/dsp1 に割り当
|
||||
てられ、 /dev/dsp1 を timidity で使います。
|
||||
|
||||
またその他のカードでも多チャンネル出力を持っているものもありますので、
|
||||
ドライバーのドキュメントを御覧下さい。
|
||||
|
||||
|
||||
(2003.1.23 追記)
|
||||
追記を書いている時点で手に入りやすい多チャンネルPCM出力をもつ音源カード
|
||||
としては SoundBlaster Live と YMF7xx くらいでしょうか。
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
TODO (順番は特に無し)
|
||||
|
||||
* メンテナンス
|
||||
|
||||
-- obsolete
|
||||
|
||||
* TODOを増やさない
|
||||
* SYSTEM3の3.5への移植ものや、ネット上にあるSYSTEM3.5のデータへの対応
|
||||
* system 3.9への対応
|
||||
* Xのイベントハンドリングの改良
|
||||
* oringinal の savedata(v1/v2/v3?) を convert する tool
|
||||
* savedata を lt/bg でどっちでも読めるようにする
|
||||
* XIM 対応?
|
||||
* 関数/変数名の統一
|
||||
* 技術情報のドキュメント化
|
||||
* GUI付 installer (っていうか、CD-ROMの中の setup.infを直接使う)
|
||||
* 異常終了時に出来るだけプロセスが残らないようにする
|
||||
* global変数を減らす
|
||||
* 意図的な異常シナリオデータでもsegv.らないよう努力する
|
||||
* Tab/Spaceの混在などソースの見直し(随時)
|
||||
* CEの残りのコマンドをさっさと実装する
|
||||
* SDL を理解して cleanup
|
||||
* キー入力まわりの cleanup
|
||||
* UNIX+X 以外の環境へ移植しやすくする
|
||||
|
||||
|
||||
* 王子様1/16
|
||||
+ スケジュールを組む時に「もどる」「クリア」「OK!」の選択がうまくで
|
||||
きない。
|
||||
* ランス4
|
||||
+ プチハニーの爆風に巻き込まれると、キャラの上に「防」マークがつきっぱ
|
||||
なしになる。
|
||||
+ 戦闘シーンでたまに左上にモンスターのかけらが表示されることがある。
|
||||
|
||||
|
||||
DONE
|
||||
|
||||
* configure 化
|
||||
* gtk_setup.c rewrite
|
||||
* keyboard操作対応
|
||||
* cd/mp3の切替えをオプションで切替えられるようにする
|
||||
* packed 24bpp対応 (rewrite xcore.c)
|
||||
* music server cleanup
|
||||
* dri mmap化
|
||||
* 汎用 data cache 処理を作る。TTF フォントと展開済み CG で使おうか。
|
||||
* alphabelnd asm化
|
||||
* imgae.c をもうちょっとすっきりと。(depthで関数のテーブル化
|
||||
* ecopy のタイミングの最適化
|
||||
* wav が鳴らない事がしばしばある(open err)のを調査&修正
|
||||
* *.h の依存関係 cleanup, 特に xsystem35.h
|
||||
* xcore/imageの統合とcleanup
|
||||
* MIDIの自前のハンドリング(/dev/sequener ?)
|
||||
* FullScreen対応(with DGA)
|
||||
* 古いドキュメントをなんとかする。(FAQ/BUGS etc)
|
||||
* 大悪司
|
||||
+ SDLの時、MAP選択が正常に動かない。
|
||||
|
||||
@@ -0,0 +1,150 @@
|
||||
= xsystem35(6)
|
||||
:doctype: manpage
|
||||
:manmanual: xsystem35 manual
|
||||
:mansource: xsystem35 {xsystem35-version}
|
||||
|
||||
== Name
|
||||
|
||||
xsystem35 - play System 3.x games
|
||||
|
||||
== SYNOPSIS
|
||||
|
||||
*xsystem35* [_OPTION_]...
|
||||
|
||||
== DESCRIPTION
|
||||
|
||||
This man page describes *xsystem35-sdl2*, a multi-platform port of the
|
||||
AliceSoft's System3.5/3.6/3.8/3.9 game engine derived from the original
|
||||
*xsystem35*.
|
||||
|
||||
`xsystem35` reads the game resource file from the path specified by the
|
||||
`-gamefile` option, or from `xsystem35.gr` in the current directory if the
|
||||
option is not specified. If the game resource file is not found, `xsystem35`
|
||||
finds System 3.x game files (*.ALD) from the current directory.
|
||||
|
||||
== OPTIONS
|
||||
|
||||
*-gamefile* _file_::
|
||||
Load game resouce file from _file_. See <<FILES>> section for details.
|
||||
|
||||
*-game* _game_::
|
||||
Enables game-specific hacks. Usually auto-detected, but must be specified for
|
||||
games with modified / translated titles. Possible values are: `toushin2`,
|
||||
`rance3_eng`, `rance4_eng`, `rance4_v2`.
|
||||
|
||||
*-savedir* _dir_::
|
||||
Directory to save game state files. If _dir_ begins with '~', it is expanded
|
||||
to the user's home directory (`$HOME`).
|
||||
|
||||
*-saveformat* _fmt_::
|
||||
The format when writing save files. Possible values are: `xsystem35`,
|
||||
`system36`, `system39` (default).
|
||||
|
||||
*-renderer* _name_::
|
||||
Use the SDL rendering driver named _name_.
|
||||
|
||||
*-playlist* _file_::
|
||||
Load the CD playlist from _file_. The playlist is a text file with one
|
||||
filename per line, in the order of CD tracks. See <<FILES>> section for details.
|
||||
|
||||
*-devmidi* _device_::
|
||||
Path to the midi device.
|
||||
|
||||
*-Me*::
|
||||
Use SDL_mixer for MIDI playback.
|
||||
|
||||
*-Mr*::
|
||||
Use raw MIDI device for MIDI playback.
|
||||
|
||||
**-Ms**_device_number_::
|
||||
Use sequencer device of the given number for MIDI playback.
|
||||
|
||||
**-Mp**_device_number_::
|
||||
Use ALSA (via PortMidi) for MIDI playback.
|
||||
|
||||
*-M0*::
|
||||
Disable MIDI playback.
|
||||
|
||||
*-devjoy* _device_index_::
|
||||
Use the joystick device with the given index.
|
||||
|
||||
*-ttfont_mincho* _file_::
|
||||
Use the given TrueType or OpenType font file for mincho (serif) text.
|
||||
|
||||
*-ttfont_gothic* _file_::
|
||||
Use the given TrueType or OpenType font file for gothic (sans-serif) text.
|
||||
|
||||
*-debuglv* _level_::
|
||||
Set the debug level to _level_. The higher the level, the more verbose
|
||||
the debug output.
|
||||
|
||||
*-debug*::
|
||||
Start with the debugger enabled.
|
||||
|
||||
*-noantialias*::
|
||||
Disable text antialiasing.
|
||||
|
||||
*-fullscreen*::
|
||||
Start in fullscreen mode.
|
||||
|
||||
*-integerscale*::
|
||||
Use integer scaling for the window.
|
||||
|
||||
*-noimagecursor*::
|
||||
Disable custom mouse cursor images.
|
||||
|
||||
*-version*::
|
||||
Print the version number and exit.
|
||||
|
||||
*-h, --help*::
|
||||
Print a help message and exit.
|
||||
|
||||
== FILES
|
||||
|
||||
*.xsys35rc*::
|
||||
`xsystem35` reads its configuration from `${HOME}/.xsys35rc` and `.xsys35rc`
|
||||
in the game directory. The latter takes precedence over the former, so you
|
||||
can put general settings in `${HOME}/.xsys35rc` and game-specific settings in
|
||||
`.xsys35rc` in the game directory. Options specified on the command line
|
||||
override both. See xsys35rc.sample for the format of the configuration file.
|
||||
|
||||
*playlist.txt*::
|
||||
`xsystem35` does not support playing BGM directly from a CD. Instead, it
|
||||
supports playing BGM from audio files on your filesystem. `xsystem35` reads
|
||||
the playlist from a file specified by the `-playlist` option, or from
|
||||
`playlist.txt` in the game directory. The first line is the path to the audio
|
||||
file for track 1, the second line is the path to the audio file for track 2,
|
||||
and so on. The first line is usually empty, because track 1 is not an audio
|
||||
track but a data track.
|
||||
|
||||
*xsystem35.gr*::
|
||||
Game resource file which lists the locations of various files needed to run
|
||||
a game. This is optional; `xsystem35` can automatically find the files it
|
||||
needs when run inside a game directory. See
|
||||
xref:xsystem35.gr.adoc[*xsystem35.gr(5)*] for the format of the game resource
|
||||
file.
|
||||
|
||||
== KEYBOARD SHORTCUTS
|
||||
|
||||
System 3.x games basically only use the UP, DOWN, LEFT, RIGHT, SPACE, RET, ESC,
|
||||
and TAB keys (some games use other keys). `xsystem35` uses the following
|
||||
special key assignments:
|
||||
|
||||
*F1*::
|
||||
Toggle message skip mode.
|
||||
|
||||
*F4*::
|
||||
Toggle fullscreen mode.
|
||||
|
||||
Also, in some platforms, the middle mouse button opens the menu.
|
||||
|
||||
== HISTORY
|
||||
|
||||
*xsystem35* was originally developed by Masaki Chikama (Wren)
|
||||
<masaki-c@is.aist-nara.ac.jp> between 1998 and 2006. The project was later
|
||||
forked by Kichikuou <KichikuouChrome@gmail.com> as *xsystem35-sdl2* and ported
|
||||
to SDL2.
|
||||
|
||||
== SEE ALSO
|
||||
|
||||
xsystem35-sdl2 project page: https://github.com/kichikuou/xsystem35-sdl2
|
||||
@@ -0,0 +1,103 @@
|
||||
= xsystem35.gr(5)
|
||||
:doctype: manpage
|
||||
:manmanual: xsystem35 manual
|
||||
:mansource: xsystem35 {xsystem35-version}
|
||||
|
||||
== Name
|
||||
|
||||
xsystem35.gr - game resource file for xsystem35
|
||||
|
||||
== DESCRIPTION
|
||||
|
||||
Game resource file is a plain text file that defines the locations of the
|
||||
various game data files for xsystem35. This file is only needed if you want to
|
||||
place game data files in a location other than the current directory.
|
||||
|
||||
The path to the game resource file is specified with the `-gamefile` option of
|
||||
xref:xsystem35.adoc[*xsystem35(6)*]. If it is not specified, xsystem35 reads
|
||||
`xsystem35.gr` in the current directory.
|
||||
|
||||
Each line of the file specifies a single data file and follows the format:
|
||||
|
||||
_keyword_ _path-to-data_
|
||||
|
||||
If multiple files of the same type exist, suffixes `A`, `B`, `C`... are
|
||||
appended to the _keyword_.
|
||||
|
||||
Comments can be added by starting the line with `#`. Blank lines are ignored.
|
||||
|
||||
== KEYWORDS
|
||||
|
||||
*Scenario*::
|
||||
Scenario files (`*S?.ALD`).
|
||||
|
||||
*Graphics*::
|
||||
Graphic files (`*G?.ALD`).
|
||||
|
||||
*Wave*::
|
||||
PCM data files (`*W?.ALD`).
|
||||
|
||||
*Midi*::
|
||||
MIDI data files (`*M?.ALD`).
|
||||
|
||||
*Data*::
|
||||
Miscellaneous data files (`*D?.ALD`).
|
||||
|
||||
*Resource*::
|
||||
Resource files (`*R?.ALD`).
|
||||
|
||||
*BGM*::
|
||||
BGM files (`*B?.ALD`).
|
||||
|
||||
*Save*::
|
||||
Save files (`*S?.ASD`). If the path begins with '`~`', it is expanded to the
|
||||
user's home directory (`$HOME`).
|
||||
|
||||
*Ain*::
|
||||
The `System39.ain` file.
|
||||
|
||||
*WAI*::
|
||||
Additional information for PCM data (`*WA.WAI`)
|
||||
|
||||
*BGI*::
|
||||
Additional information for BGM data (`*BA.BGI`)
|
||||
|
||||
*SACT01*::
|
||||
Data for SACT.DLL (`SACTEFAM.KLD`)
|
||||
|
||||
*ALK01* - *ALK09*::
|
||||
Archive files for demo data (`*1.ALK` - `*9.ALK`)
|
||||
|
||||
*Init*::
|
||||
The `System39.ini` file.
|
||||
|
||||
== NOTES
|
||||
|
||||
Data files not categorized under the above keywords (e.g., map files for
|
||||
Kaeru nyo Panyon) should not be listed in the game resource file, and should be
|
||||
placed in the same directory as the save files.
|
||||
|
||||
== EXAMPLES
|
||||
|
||||
The following is a game resource file for the English translation of Kichikuou
|
||||
Rance.
|
||||
|
||||
ScenarioA KICHIKUSA.ALD
|
||||
GraphicsA KICHIKUGA.ALD
|
||||
GraphicsB KICHIKUGB.ALD
|
||||
WaveA KICHIKUWA.ALD
|
||||
Ain System39.ain
|
||||
SaveA ~/.xsys35/saves/kichikuou/KICHIKUSA.ASD
|
||||
SaveB ~/.xsys35/saves/kichikuou/KICHIKUSB.ASD
|
||||
SaveC ~/.xsys35/saves/kichikuou/KICHIKUSC.ASD
|
||||
SaveD ~/.xsys35/saves/kichikuou/KICHIKUSD.ASD
|
||||
SaveE ~/.xsys35/saves/kichikuou/KICHIKUSE.ASD
|
||||
SaveF ~/.xsys35/saves/kichikuou/KICHIKUSF.ASD
|
||||
SaveG ~/.xsys35/saves/kichikuou/KICHIKUSG.ASD
|
||||
SaveH ~/.xsys35/saves/kichikuou/KICHIKUSH.ASD
|
||||
SaveI ~/.xsys35/saves/kichikuou/KICHIKUSI.ASD
|
||||
SaveJ ~/.xsys35/saves/kichikuou/KICHIKUSJ.ASD
|
||||
|
||||
== SEE ALSO
|
||||
|
||||
xref:xsystem35.adoc[*xsystem35(6)*]
|
||||
@@ -5,11 +5,11 @@ Game Compatibility
|
||||
| ------------------------------------------- | ----------- | ----- |
|
||||
| 鬼畜王ランス | Supported | |
|
||||
| Kichikuou Rance (EN) | Supported | |
|
||||
| RanceIV -教団の遺産- | Supported | Win95 edition, [Ver2.05](https://hannylaboratory.blogspot.com/2023/01/blog-post_26.html) |
|
||||
| RanceIV -教団の遺産- | Supported | Win95 edition and [Ver2.05](https://hannylaboratory.blogspot.com/2023/01/blog-post_26.html) |
|
||||
| Rance4 -Legacy of the Sect- (EN) | Supported | |
|
||||
| 兰斯IV -教团的遗产- (CN) | Supported | |
|
||||
| ランス4.1 | Supported | [Ver1.05](https://hannylaboratory.blogspot.com/2023/02/blog-post_9.html) |
|
||||
| ランス4.2 | Supported | [Ver1.05](https://hannylaboratory.blogspot.com/2023/02/blog-post_9.html) |
|
||||
| ランス4.1 | Supported | [Ver1.05](https://hannylaboratory.blogspot.com/2023/02/blog-post_9.html). Use system3-sdl2 for older versions |
|
||||
| ランス4.2 | Supported | [Ver1.05](https://hannylaboratory.blogspot.com/2023/02/blog-post_9.html). Use system3-sdl2 for older versions |
|
||||
| いけないかつみ先生 | Supported | Emojis are not supported |
|
||||
| 闘神都市II | Supported | Win95 edition |
|
||||
| かえるにょ・ぱにょ~ん | Supported | Normal / Low-priced edition |
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ else()
|
||||
target_sources(xsystem35 PRIVATE midi.rawmidi.c midifile.c)
|
||||
endif()
|
||||
if (ENABLE_MIDI_PORTMIDI)
|
||||
target_sources(xsystem35 PRIVATE midi.portmidi.c)
|
||||
target_sources(xsystem35 PRIVATE midi.portmidi.c midifile.c)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm0_width 32
|
||||
#define curbm0_height 32
|
||||
static char curbm0_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
|
||||
0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x28,0x00,0x00,0x00,0x48,0x00,0x00,0x00,
|
||||
0x88,0x00,0x00,0x00,0x08,0x01,0x00,0x00,0x08,0x02,0x00,0x00,0x08,0x04,0x00,
|
||||
0x00,0x08,0x08,0x00,0x00,0x08,0x10,0x00,0x00,0x08,0x3e,0x00,0x00,0x48,0x02,
|
||||
0x00,0x00,0xa8,0x04,0x00,0x00,0x98,0x04,0x00,0x00,0x08,0x09,0x00,0x00,0x00,
|
||||
0x09,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x12,0x00,0x00,0x00,0x0c,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm1_width 32
|
||||
#define curbm1_height 32
|
||||
static char curbm1_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xf3,0x9f,0xff,0xff,0xf5,0x5f,0xff,0xff,0xf6,0xdf,0xfe,
|
||||
0x7f,0x07,0xc0,0xfd,0xbf,0xff,0xff,0xfb,0x7f,0x07,0xc0,0xfd,0xff,0xf6,0xdf,
|
||||
0xfe,0xff,0xf5,0x5f,0xff,0xff,0xf3,0x9f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm2_width 32
|
||||
#define curbm2_height 32
|
||||
static char curbm2_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x7f,
|
||||
0xff,0xff,0xff,0xbf,0xfe,0xff,0xff,0xdf,0xfd,0xff,0xff,0xef,0xfb,0xff,0xff,
|
||||
0xf7,0xf7,0xff,0xff,0x87,0xf0,0xff,0xff,0xbf,0xfe,0xff,0xff,0xbf,0xfe,0xff,
|
||||
0xff,0xbf,0xfe,0xff,0xff,0xbf,0xfe,0xff,0xff,0xbf,0xfe,0xff,0xff,0xbf,0xfe,
|
||||
0xff,0xff,0xbf,0xfe,0xff,0xff,0xbf,0xfe,0xff,0xff,0x87,0xf0,0xff,0xff,0xf7,
|
||||
0xf7,0xff,0xff,0xef,0xfb,0xff,0xff,0xdf,0xfd,0xff,0xff,0xbf,0xfe,0xff,0xff,
|
||||
0x7f,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm3_width 32
|
||||
#define curbm3_height 32
|
||||
static char curbm3_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0x7d,0xff,0xff,0xff,
|
||||
0xbd,0xff,0xff,0xff,0xdd,0xff,0xff,0xff,0xad,0xff,0xff,0xff,0x55,0xff,0xff,
|
||||
0xff,0xb9,0xfe,0xff,0xff,0x7f,0xfd,0xff,0xff,0xff,0x3a,0xff,0xff,0xff,0x55,
|
||||
0xff,0xff,0xff,0x6b,0xff,0xff,0xff,0x77,0xff,0xff,0xff,0x7b,0xff,0xff,0xff,
|
||||
0x7d,0xff,0xff,0xff,0x01,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm4_width 32
|
||||
#define curbm4_height 32
|
||||
static char curbm4_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0x80,0xff,0xff,0xff,0xbe,0xff,0xff,
|
||||
0xff,0xbd,0xff,0xff,0xff,0xbb,0xff,0xff,0xff,0xb5,0xff,0xff,0xff,0xaa,0xff,
|
||||
0xff,0x7f,0x9d,0xff,0xff,0xbf,0xfe,0xff,0xff,0x5c,0xff,0xff,0xff,0xaa,0xff,
|
||||
0xff,0xff,0xd6,0xff,0xff,0xff,0xee,0xff,0xff,0xff,0xde,0xff,0xff,0xff,0xbe,
|
||||
0xff,0xff,0xff,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm5_width 32
|
||||
#define curbm5_height 32
|
||||
static char curbm5_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0x00,0x80,0xff,0xff,0xfe,0xbf,0xff,0xff,0x06,0xb0,0xff,0xff,0xfe,
|
||||
0xbf,0xff,0xff,0x05,0xd0,0xff,0xff,0x05,0xd0,0xff,0xff,0xa5,0xd2,0xff,0xff,
|
||||
0x45,0xd1,0xff,0xff,0x8d,0xd8,0xff,0xff,0x1b,0xec,0xff,0xff,0xb7,0xf6,0xff,
|
||||
0xff,0x6f,0xfb,0xff,0xff,0x6f,0xfb,0xff,0xff,0x37,0xf6,0xff,0xff,0x9b,0xec,
|
||||
0xff,0xff,0x0d,0xd8,0xff,0xff,0x85,0xd0,0xff,0xff,0x45,0xd1,0xff,0xff,0xa5,
|
||||
0xd2,0xff,0xff,0x55,0xd5,0xff,0xff,0xfe,0xbf,0xff,0xff,0x06,0xb0,0xff,0xff,
|
||||
0xfe,0xbf,0xff,0xff,0x00,0x80,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define curbm6_width 32
|
||||
#define curbm6_height 32
|
||||
static char curbm6_bits[] = {
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xfe,0xff,0xff,0x7f,0xfd,0xff,0xff,0xbf,0xfb,0xff,0xff,0xdf,
|
||||
0xf7,0xff,0xff,0xef,0xef,0xff,0xff,0x0f,0xe0,0xff,0xff,0x7f,0xfd,0xff,0xff,
|
||||
0x7f,0xfd,0xff,0xff,0x7c,0x7d,0xfe,0x7f,0x7d,0x7d,0xfd,0xbf,0x7d,0x7d,0xfb,
|
||||
0xdf,0x01,0x01,0xf7,0xef,0xfd,0x7f,0xef,0xdf,0x01,0x01,0xf7,0xbf,0x7d,0x7d,
|
||||
0xfb,0x7f,0x7d,0x7d,0xfd,0xff,0x7c,0x7d,0xfe,0xff,0x7f,0xfd,0xff,0xff,0x7f,
|
||||
0xfd,0xff,0xff,0x0f,0xe0,0xff,0xff,0xef,0xef,0xff,0xff,0xdf,0xf7,0xff,0xff,
|
||||
0xbf,0xfb,0xff,0xff,0x7f,0xfd,0xff,0xff,0xff,0xfe,0xff,0xff,0xff,0xff,0xff,
|
||||
0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff};
|
||||
@@ -1,43 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_arrow[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 3 1",
|
||||
/* colors */
|
||||
"X c #000000",
|
||||
". c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
"X ",
|
||||
"XX ",
|
||||
"X.X ",
|
||||
"X..X ",
|
||||
"X...X ",
|
||||
"X....X ",
|
||||
"X.....X ",
|
||||
"X......X ",
|
||||
"X.......X ",
|
||||
"X........X ",
|
||||
"X.....XXXXX ",
|
||||
"X..X..X ",
|
||||
"X.X X..X ",
|
||||
"XX X..X ",
|
||||
"X X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" XX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"0,0"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_busy[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
"X c #ffffff",
|
||||
". c #000000",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XXXXXXXXXXXXXXXXX ",
|
||||
" X...............X ",
|
||||
" X.XXXXXXXXXXXXX.X ",
|
||||
" X.XX.........XX.X ",
|
||||
" X.XXXXXXXXXXXXX.X ",
|
||||
" X.X.........X.X ",
|
||||
" X.X.........X.X ",
|
||||
" X.X..X.X.X..X.X ",
|
||||
" X.X...X.X...X.X ",
|
||||
" X.XX...X...XX.X ",
|
||||
" X.XX.....XX.X ",
|
||||
" X.XX.X.XX.X ",
|
||||
" X.XX.XX.X ",
|
||||
" X.XX.XX.X ",
|
||||
" X.XX...XX.X ",
|
||||
" X.XX..X..XX.X ",
|
||||
" X.XX.......XX.X ",
|
||||
" X.X....X....X.X ",
|
||||
" X.X...X.X...X.X ",
|
||||
" X.X..X.X.X..X.X ",
|
||||
" X.X.X.X.X.X.X.X ",
|
||||
" X.XXXXXXXXXXXXX.X ",
|
||||
" X.XX.........XX.X ",
|
||||
" X.XXXXXXXXXXXXX.X ",
|
||||
" X...............X ",
|
||||
" XXXXXXXXXXXXXXXXX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,43 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_cross[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 3 1",
|
||||
/* colors */
|
||||
"X c #000000",
|
||||
". c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XXXX ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" XXXXXXXXX..XXXXXXXXX ",
|
||||
" X..................X ",
|
||||
" X..................X ",
|
||||
" XXXXXXXXX..XXXXXXXXX ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" X..X ",
|
||||
" XXXX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,43 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_ibeam[] = {
|
||||
/* width height num_colors chars_per_pixel */
|
||||
" 32 32 3 1",
|
||||
/* colors */
|
||||
". c #000000",
|
||||
"X c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" XXX XXX ",
|
||||
" XXX ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" XXX ",
|
||||
" XXX XXX ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_move[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
"X c #ffffff",
|
||||
". c #000000",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" X ",
|
||||
" X.X ",
|
||||
" X...X ",
|
||||
" X.....X ",
|
||||
" X.......X ",
|
||||
" XXXXXXXXX ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" XX X.X XX ",
|
||||
" X.X X.X X.X ",
|
||||
" X..X X.X X..X ",
|
||||
" X...XXXXXXX.XXXXXXX...X ",
|
||||
" X....X.............X....X ",
|
||||
" X...XXXXXXX.XXXXXXX...X ",
|
||||
" X..X X.X X..X ",
|
||||
" X.X X.X X.X ",
|
||||
" XX X.X XX ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" XXXXXXXXX ",
|
||||
" X.......X ",
|
||||
" X.....X ",
|
||||
" X...X ",
|
||||
" X.X ",
|
||||
" X ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_no[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
"X c #ffffff",
|
||||
". c #000000",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ...... ",
|
||||
" ..XXXXXX.. ",
|
||||
" .XXXXXXXXX . ",
|
||||
" .XXXX....XXX . ",
|
||||
" .XXX.. ..XXX. ",
|
||||
" .XXXXX. .XXX. ",
|
||||
" .XX.XXX. .XX. ",
|
||||
" .XXX..XXX. .XXX. ",
|
||||
" .XX. .XXX. .XX. ",
|
||||
" .XX. .XXX. .XX. ",
|
||||
" .XX. .XXX. .XX. ",
|
||||
" .XX. .XXX. .XX. ",
|
||||
" .XXX. .XXX..XXX. ",
|
||||
" .XX . .XX.XX. ",
|
||||
" .XXX. .XXXXX. ",
|
||||
" .XXX.. ..XXX. ",
|
||||
" .XXXX....XXXX. ",
|
||||
" .XXXXXXXXXX. ",
|
||||
" ..XXXXXX.. ",
|
||||
" ...... ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"16,16"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_size_h[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
". c #000000",
|
||||
"X c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XX XX ",
|
||||
" X.X X.X ",
|
||||
" X..X X..X ",
|
||||
" X...XXXXXXXXXXX...X ",
|
||||
" X...................X ",
|
||||
" X...XXXXXXXXXXX...X ",
|
||||
" X..X X..X ",
|
||||
" X.X X.X ",
|
||||
" XX XX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_size_l[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
". c #000000",
|
||||
"X c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XXXXXXX ",
|
||||
" X.....X ",
|
||||
" X....X ",
|
||||
" X...X ",
|
||||
" X..X.X ",
|
||||
" X.X X.X ",
|
||||
" XX X.X ",
|
||||
" X.X ",
|
||||
" X.X XX ",
|
||||
" X.X X.X ",
|
||||
" X.X..X ",
|
||||
" X...X ",
|
||||
" X....X ",
|
||||
" X.... X ",
|
||||
" XXXXXXX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_size_r[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
". c #000000",
|
||||
"X c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" XXXXXXX ",
|
||||
" X.....X ",
|
||||
" X....X ",
|
||||
" X...X ",
|
||||
" X.X..X ",
|
||||
" X.X X.X ",
|
||||
" X.X XX ",
|
||||
" X.X ",
|
||||
" XX X.X ",
|
||||
" X.X X.X ",
|
||||
" X..X.X ",
|
||||
" X...X ",
|
||||
" X....X ",
|
||||
" X.....X ",
|
||||
" XXXXXXX ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,42 +0,0 @@
|
||||
/* XPM */
|
||||
static const char *cursor_size_v[] = {
|
||||
/* columns rows colors chars-per-pixel */
|
||||
"32 32 3 1",
|
||||
". c #000000",
|
||||
"X c #ffffff",
|
||||
" c None",
|
||||
/* pixels */
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" X ",
|
||||
" X.X ",
|
||||
" X...X ",
|
||||
" X.....X ",
|
||||
" X.......X ",
|
||||
" XXXX.XXXX ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" X.X ",
|
||||
" XXXX XXXX ",
|
||||
" X.......X ",
|
||||
" X.....X ",
|
||||
" X...X ",
|
||||
" X/X ",
|
||||
" X ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"15,15"
|
||||
};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm0_width 32
|
||||
#define maskbm0_height 32
|
||||
static char maskbm0_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,
|
||||
0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x38,0x00,0x00,0x00,0x78,0x00,0x00,0x00,
|
||||
0xf8,0x00,0x00,0x00,0xf8,0x01,0x00,0x00,0xf8,0x03,0x00,0x00,0xf8,0x07,0x00,
|
||||
0x00,0xf8,0x0f,0x00,0x00,0xf8,0x1f,0x00,0x00,0xf8,0x3f,0x00,0x00,0xf8,0x03,
|
||||
0x00,0x00,0xb8,0x07,0x00,0x00,0x98,0x07,0x00,0x00,0x08,0x0f,0x00,0x00,0x00,
|
||||
0x0f,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x1e,0x00,0x00,0x00,0x0c,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm1_width 32
|
||||
#define maskbm1_height 32
|
||||
static char maskbm1_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x0c,0x60,0x00,0x00,0x0e,0xe0,0x00,0x00,0x0f,0xe0,0x01,
|
||||
0x80,0xff,0xff,0x03,0xc0,0xff,0xff,0x07,0x80,0xff,0xff,0x03,0x00,0x0f,0xe0,
|
||||
0x01,0x00,0x0e,0xe0,0x00,0x00,0x0c,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm2_width 32
|
||||
#define maskbm2_height 32
|
||||
static char maskbm2_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,
|
||||
0x00,0x00,0x00,0xc0,0x01,0x00,0x00,0xe0,0x03,0x00,0x00,0xf0,0x07,0x00,0x00,
|
||||
0xf8,0x0f,0x00,0x00,0xf8,0x0f,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0x00,
|
||||
0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,
|
||||
0x00,0x00,0xc0,0x01,0x00,0x00,0xc0,0x01,0x00,0x00,0xf8,0x0f,0x00,0x00,0xf8,
|
||||
0x0f,0x00,0x00,0xf0,0x07,0x00,0x00,0xe0,0x03,0x00,0x00,0xc0,0x01,0x00,0x00,
|
||||
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm3_width 32
|
||||
#define maskbm3_height 32
|
||||
static char maskbm3_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,
|
||||
0x7e,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0xee,0x00,0x00,
|
||||
0x00,0xc6,0x01,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0xc7,0x00,0x00,0x00,0xee,
|
||||
0x00,0x00,0x00,0xfc,0x00,0x00,0x00,0xf8,0x00,0x00,0x00,0xfc,0x00,0x00,0x00,
|
||||
0xfe,0x00,0x00,0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm4_width 32
|
||||
#define maskbm4_height 32
|
||||
static char maskbm4_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x7f,0x00,0x00,
|
||||
0x00,0x7e,0x00,0x00,0x00,0x7c,0x00,0x00,0x00,0x7e,0x00,0x00,0x00,0x77,0x00,
|
||||
0x00,0x80,0x63,0x00,0x00,0xc0,0x01,0x00,0x00,0xe3,0x00,0x00,0x00,0x77,0x00,
|
||||
0x00,0x00,0x3f,0x00,0x00,0x00,0x1f,0x00,0x00,0x00,0x3f,0x00,0x00,0x00,0x7f,
|
||||
0x00,0x00,0x00,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm5_width 32
|
||||
#define maskbm5_height 32
|
||||
static char maskbm5_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0xff,
|
||||
0x7f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,
|
||||
0xfe,0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xfc,0x1f,0x00,0x00,0xf8,0x0f,0x00,
|
||||
0x00,0xf0,0x07,0x00,0x00,0xf0,0x07,0x00,0x00,0xf8,0x0f,0x00,0x00,0xfc,0x1f,
|
||||
0x00,0x00,0xfe,0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xfe,
|
||||
0x3f,0x00,0x00,0xfe,0x3f,0x00,0x00,0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,
|
||||
0xff,0x7f,0x00,0x00,0xff,0x7f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
@@ -1,12 +0,0 @@
|
||||
#define maskbm6_width 32
|
||||
#define maskbm6_height 32
|
||||
static char maskbm6_bits[] = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x01,0x00,0x00,0x80,0x03,0x00,0x00,0xc0,0x07,0x00,0x00,0xe0,
|
||||
0x0f,0x00,0x00,0xf0,0x1f,0x00,0x00,0xf0,0x1f,0x00,0x00,0x80,0x03,0x00,0x00,
|
||||
0x80,0x03,0x00,0x00,0x83,0x83,0x01,0x80,0x83,0x83,0x03,0xc0,0x83,0x83,0x07,
|
||||
0xe0,0xff,0xff,0x0f,0xf0,0xff,0xff,0x1f,0xe0,0xff,0xff,0x0f,0xc0,0x83,0x83,
|
||||
0x07,0x80,0x83,0x83,0x03,0x00,0x83,0x83,0x01,0x00,0x80,0x03,0x00,0x00,0x80,
|
||||
0x03,0x00,0x00,0xf0,0x1f,0x00,0x00,0xf0,0x1f,0x00,0x00,0xe0,0x0f,0x00,0x00,
|
||||
0xc0,0x07,0x00,0x00,0x80,0x03,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x00,0x00,
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
|
||||
+18
-3
@@ -42,11 +42,14 @@
|
||||
#include "ald_manager.h"
|
||||
#include "LittleEndian.h"
|
||||
#include "hacks.h"
|
||||
#include "filecheck.h"
|
||||
|
||||
/* 選択 Window OPEN 時 callback */
|
||||
static int cb_sel_init_page = 0;
|
||||
static int cb_sel_init_address = 0;
|
||||
|
||||
static const char REGREADSTRING_RESULT[] = "*regReadString*";
|
||||
|
||||
extern INPUTSTRING_PARAM mi_param;
|
||||
|
||||
extern void commandH();
|
||||
@@ -1441,7 +1444,10 @@ void commands2F87() {
|
||||
int eBaneStrNum = getCaliValue();
|
||||
int eResultStrNum = getCaliValue();
|
||||
int *vResult = getCaliVariable();
|
||||
|
||||
|
||||
// This command is used to check if the game is installed, so we always
|
||||
// return 1 with the dummy string REGREADSTRING_RESULT.
|
||||
svar_set(eResultStrNum, REGREADSTRING_RESULT);
|
||||
*vResult = 1;
|
||||
|
||||
DEBUG_COMMAND("regReadString %d,%d,%d,%d:",
|
||||
@@ -1451,8 +1457,17 @@ void commands2F87() {
|
||||
void commands2F88() {
|
||||
int eFileNameStrNum = getCaliValue();
|
||||
int *vResult = getCaliVariable();
|
||||
|
||||
*vResult = 1;
|
||||
|
||||
const char *fname = svar_get(eFileNameStrNum);
|
||||
if (strcmp(fname, REGREADSTRING_RESULT) == 0) {
|
||||
// If this command is called with the result of regReadString, the game
|
||||
// is checking if the game CD is inserted. We return 1 in this case.
|
||||
*vResult = 1;
|
||||
} else {
|
||||
char *fname_utf8 = sjis2utf(fname);
|
||||
*vResult = fc_exists(fname_utf8) ? 1 : 0;
|
||||
free(fname_utf8);
|
||||
}
|
||||
|
||||
DEBUG_COMMAND("fileCheckExist %d,%d:", eFileNameStrNum, *vResult);
|
||||
}
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ void commandCX() {
|
||||
case 0:
|
||||
// In Daiakuji, the image after the blending is used as a source image
|
||||
// for sprite copy (CX 1). SDL's SIMD blending implementation has some
|
||||
// error (blending #ff00ff and #ff00ff results in #fd00fd), so the
|
||||
// error (https://github.com/libsdl-org/SDL/issues/3364), so the
|
||||
// resulting color may not match the colorkey of CX 1. To workaround
|
||||
// this, specify a small alpha mod so that SDL will use a "slow path"
|
||||
// that does accurate calculation.
|
||||
|
||||
+2
-2
@@ -33,7 +33,7 @@
|
||||
#include "ags.h"
|
||||
#include "message.h"
|
||||
#include "hankaku.h"
|
||||
|
||||
#include "hacks.h"
|
||||
|
||||
/* MI 用パラメータ */
|
||||
INPUTSTRING_PARAM mi_param;
|
||||
@@ -60,7 +60,7 @@ void commandMP() {
|
||||
char *str;
|
||||
|
||||
/* Patched English executable appends num2 spaces instead of truncating */
|
||||
if (nact->game == GAME_RANCE3_ENG || nact->game == GAME_RANCE4_ENG) {
|
||||
if (game_id == GAME_RANCE3_ENG || game_id == GAME_RANCE4_ENG) {
|
||||
str = calloc(strlen(src) + num2 * strlen(fullwidth_blank[nact->encoding]) + 1, 1);
|
||||
if (NULL == str) {
|
||||
NOMEMERR();
|
||||
|
||||
+2
-1
@@ -26,6 +26,7 @@
|
||||
#include "xsystem35.h"
|
||||
#include "scenario.h"
|
||||
#include "music.h"
|
||||
#include "hacks.h"
|
||||
|
||||
/* ぱにょ〜ん 異常シナリオ対策 */
|
||||
static boolean dummy_pcm_in_play = FALSE;
|
||||
@@ -272,7 +273,7 @@ void commandSU() {
|
||||
}
|
||||
}
|
||||
/* 闘神都市II 異常シナリオ対策 */
|
||||
if (nact->game == GAME_TT2) {
|
||||
if (game_id == GAME_TT2) {
|
||||
*var1 = *var2 = 0;
|
||||
}
|
||||
|
||||
|
||||
+2
-1
@@ -33,6 +33,7 @@
|
||||
#include "cmd_check.h"
|
||||
#include "sdl_core.h"
|
||||
#include "music_cdrom.h"
|
||||
#include "hacks.h"
|
||||
|
||||
unsigned Y3waitFlags = KEYWAIT_CANCELABLE;
|
||||
|
||||
@@ -126,7 +127,7 @@ void commandY() {
|
||||
default:
|
||||
if (p1 == 1003) {
|
||||
sys_key_releasewait(SYS35KEY_RET, FALSE);
|
||||
} else if (nact->game == GAME_RANCE4_V2 && p2 == 1) {
|
||||
} else if (game_id == GAME_RANCE4_V2 && p2 == 1) {
|
||||
// Return immediately if any key is pressed.
|
||||
sysVar[0] = sys_getInputInfo();
|
||||
if (sysVar[0])
|
||||
|
||||
+21
-2
@@ -29,11 +29,10 @@
|
||||
#include <sys/stat.h>
|
||||
#include <sys/types.h>
|
||||
#include <dirent.h>
|
||||
#include <unistd.h>
|
||||
#ifdef _WIN32
|
||||
#include <direct.h>
|
||||
#include <windows.h>
|
||||
#undef min
|
||||
#undef max
|
||||
#endif
|
||||
|
||||
#include "filecheck.h"
|
||||
@@ -126,6 +125,18 @@ char *fc_get_path(const char *fname_utf8) {
|
||||
return get_fullpath(saveDataPath, fname_utf8);
|
||||
}
|
||||
|
||||
bool fc_exists(const char *fname_utf8)
|
||||
{
|
||||
char *path = fc_get_path(fname_utf8);
|
||||
wchar_t wpath[PATH_MAX + 1];
|
||||
bool result = false;
|
||||
if (MultiByteToWideChar(CP_UTF8, MB_ERR_INVALID_CHARS, path, -1, wpath, PATH_MAX + 1)) {
|
||||
result = _waccess(wpath, F_OK) != -1;
|
||||
}
|
||||
free(path);
|
||||
return result;
|
||||
}
|
||||
|
||||
FILE *fc_open(const char *fname_utf8, char type) {
|
||||
char *path = fc_get_path(fname_utf8);
|
||||
FILE *fp = fopen_utf8(path, type);
|
||||
@@ -162,6 +173,14 @@ char *fc_get_path(const char *fname_utf8) {
|
||||
return get_fullpath(saveDataPath, fname_utf8);
|
||||
}
|
||||
|
||||
bool fc_exists(const char *fname_utf8)
|
||||
{
|
||||
char *path = fc_get_path(fname_utf8);
|
||||
bool result = access(path, F_OK) != -1;
|
||||
free(path);
|
||||
return result;
|
||||
}
|
||||
|
||||
FILE *fc_open(const char *fname_utf8, char type) {
|
||||
char *fullpath = fc_search(fname_utf8, saveDataPath);
|
||||
if (!fullpath) {
|
||||
|
||||
+7
-4
@@ -24,9 +24,12 @@
|
||||
#ifndef __FILECHECK_H__
|
||||
#define __FILECHECK_H__
|
||||
|
||||
extern void fc_init(const char *name);
|
||||
extern char *fc_get_path(const char *fname_utf8);
|
||||
extern FILE *fc_open(const char *fname_utf8, char type);
|
||||
extern void fc_backup_oldfile(const char *filename);
|
||||
#include <stdbool.h>
|
||||
|
||||
void fc_init(const char *name);
|
||||
char *fc_get_path(const char *fname_utf8);
|
||||
bool fc_exists(const char *fname_utf8);
|
||||
FILE *fc_open(const char *fname_utf8, char type);
|
||||
void fc_backup_oldfile(const char *filename);
|
||||
|
||||
#endif /* !__FILECHECK_H__ */
|
||||
|
||||
+11
-2
@@ -36,6 +36,7 @@
|
||||
#include "system.h"
|
||||
#include "font.h"
|
||||
#include "sdl_private.h"
|
||||
#include "hacks.h"
|
||||
|
||||
typedef struct {
|
||||
int size;
|
||||
@@ -175,7 +176,15 @@ SDL_Rect font_draw_glyph(int x, int y, const char *str_utf8, uint8_t cl) {
|
||||
if (!fontset)
|
||||
return r_dst;
|
||||
|
||||
if (this.antialiase_on) {
|
||||
bool antialias = this.antialiase_on;
|
||||
// The post-effect in Rance 3 opening does not work properly if colors other
|
||||
// than the specified text color (32) are used.
|
||||
// https://github.com/kichikuou/xsystem35-sdl2/issues/54
|
||||
// In Rance 3, text color 32 is only used in the opening.
|
||||
if ((game_id == GAME_RANCE3 || game_id == GAME_RANCE3_ENG) && cl == 32)
|
||||
antialias = false;
|
||||
|
||||
if (antialias) {
|
||||
fs = TTF_RenderUTF8_Blended(fontset->id, str_utf8, sdl_col[cl]);
|
||||
} else {
|
||||
fs = TTF_RenderUTF8_Solid(fontset->id, str_utf8, sdl_col[cl]);
|
||||
@@ -190,7 +199,7 @@ SDL_Rect font_draw_glyph(int x, int y, const char *str_utf8, uint8_t cl) {
|
||||
y -= (TTF_FontHeight(fontset->id) - fontset->size) / 2;
|
||||
r_dst = (SDL_Rect){x, y, w, h};
|
||||
|
||||
if (sdl_dib->format->BitsPerPixel == 8 && this.antialiase_on) {
|
||||
if (sdl_dib->format->BitsPerPixel == 8 && antialias) {
|
||||
sdl_drawAntiAlias_8bpp(x, y, fs, cl);
|
||||
} else {
|
||||
r_src = (SDL_Rect){0, 0, w, h};
|
||||
|
||||
+13
-1
@@ -124,13 +124,25 @@ boolean initGameResourceFromDir(GameResource *gr, DIR *dir, const char *savedir,
|
||||
if (basename && (savedir || !found_xsleep)) {
|
||||
const char *dir = savedir ? savedir : "";
|
||||
const char *sep = savedir ? "/" : "";
|
||||
char *buf = malloc(strlen(dir) + strlen(sep) + strlen(basename) + 6);
|
||||
char *buf = malloc(strlen(dir) + strlen(sep) + strlen(basename) + 9);
|
||||
#if defined(__ANDROID__) || defined(__EMSCRIPTEN__)
|
||||
// Use lowercase 's[a-z].asd' in Android and Emscripten, for compatibility.
|
||||
basename[strlen(basename) - 1] = 's';
|
||||
int a = 'a';
|
||||
#else
|
||||
int a = basename[strlen(basename) - 1] == 'S' ? 'A' : 'a';
|
||||
#endif
|
||||
for (int i = 0; i < SAVE_MAXNUMBER; i++) {
|
||||
sprintf(buf, "%s%s%s%c.asd", dir, sep, basename, a + i);
|
||||
storeSaveName(gr, i, buf);
|
||||
}
|
||||
#ifdef __EMSCRIPTEN__
|
||||
basename[strlen(basename) - 1] = '\0';
|
||||
sprintf(buf, "%s%s%s.msgskip", dir, sep, basename);
|
||||
gr->msgskip = buf;
|
||||
#else
|
||||
free(buf);
|
||||
#endif
|
||||
} else {
|
||||
for (int i = 0; i < SAVE_MAXNUMBER; i++) {
|
||||
char buf[] = "asleep.asd";
|
||||
|
||||
+15
-9
@@ -27,23 +27,27 @@
|
||||
#define GT_TOSHIN2 "闘神都市Ⅱ for Win95 "
|
||||
#define GT_RANCE4 "Rance4 -教団の遺産- For Win95 "
|
||||
#define GT_RANCE4_V2 "RanceⅣ -教団の遺産- for Windows "
|
||||
#define GT_RANCE3 "Rance3"
|
||||
#define GT_RANCE3_ENG "Rance3"
|
||||
#define GT_RANCE4_ENG "Rance4 -Legacy of the Sect- For Win95 "
|
||||
|
||||
/* defined by cmdy.c */
|
||||
extern boolean Y3waitFlags;
|
||||
|
||||
enum gameId game_id;
|
||||
bool daiakuji_cx_hack;
|
||||
|
||||
void enable_hack_by_gameid(const char *gameid) {
|
||||
if (!strcmp(gameid, "toushin2"))
|
||||
nact->game = GAME_TT2;
|
||||
game_id = GAME_TT2;
|
||||
else if (!strcmp(gameid, "rance3"))
|
||||
game_id = GAME_RANCE3;
|
||||
else if (!strcmp(gameid, "rance3_eng"))
|
||||
nact->game = GAME_RANCE3_ENG;
|
||||
game_id = GAME_RANCE3_ENG;
|
||||
else if (!strcmp(gameid, "rance4_eng"))
|
||||
nact->game = GAME_RANCE4_ENG;
|
||||
game_id = GAME_RANCE4_ENG;
|
||||
else if (!strcmp(gameid, "rance4_v2"))
|
||||
nact->game = GAME_RANCE4_V2;
|
||||
game_id = GAME_RANCE4_V2;
|
||||
else
|
||||
sys_error("Unknown game id \"%s\"", gameid);
|
||||
}
|
||||
@@ -52,15 +56,17 @@ void enable_hack_by_title(const char *title_utf8) {
|
||||
if (!strcmp(title_utf8, GT_RANCE4))
|
||||
Y3waitFlags = KEYWAIT_NONCANCELABLE;
|
||||
|
||||
if (nact->game != GAME_UNKNOWN)
|
||||
if (game_id != GAME_UNKNOWN)
|
||||
return;
|
||||
|
||||
if (!strcmp(title_utf8, GT_TOSHIN2))
|
||||
nact->game = GAME_TT2;
|
||||
game_id = GAME_TT2;
|
||||
else if (!strcmp(title_utf8, GT_RANCE4_V2))
|
||||
nact->game = GAME_RANCE4_V2;
|
||||
game_id = GAME_RANCE4_V2;
|
||||
else if (!strcmp(title_utf8, GT_RANCE3))
|
||||
game_id = GAME_RANCE3;
|
||||
else if (!strcmp(title_utf8, GT_RANCE3_ENG))
|
||||
nact->game = GAME_RANCE3_ENG;
|
||||
game_id = GAME_RANCE3_ENG;
|
||||
else if (!strcmp(title_utf8, GT_RANCE4_ENG))
|
||||
nact->game = GAME_RANCE4_ENG;
|
||||
game_id = GAME_RANCE4_ENG;
|
||||
}
|
||||
|
||||
@@ -25,11 +25,14 @@
|
||||
enum gameId {
|
||||
GAME_UNKNOWN = 0,
|
||||
GAME_TT2,
|
||||
GAME_RANCE3,
|
||||
GAME_RANCE3_ENG,
|
||||
GAME_RANCE4_ENG,
|
||||
GAME_RANCE4_V2,
|
||||
};
|
||||
|
||||
extern enum gameId game_id;
|
||||
|
||||
void enable_hack_by_gameid(const char *gameid);
|
||||
void enable_hack_by_title(const char *game_title_utf8);
|
||||
|
||||
|
||||
+3
-2
@@ -59,8 +59,9 @@ extern void menu_setSkipState(boolean enabled, boolean activated);
|
||||
|
||||
#ifdef _WIN32
|
||||
struct SDL_SysWMmsg;
|
||||
extern void win_menu_init(void);
|
||||
extern void win_menu_onsyswmevent(struct SDL_SysWMmsg* msg);
|
||||
void win_menu_init(void);
|
||||
void win_menu_onSysWMEvent(struct SDL_SysWMmsg* msg);
|
||||
void win_menu_onMouseMotion(int x, int y);
|
||||
#endif
|
||||
|
||||
#endif /* !__MENULL */
|
||||
|
||||
@@ -110,9 +110,6 @@ typedef struct {
|
||||
int patch_emen; /* see patch_emen command */
|
||||
int patch_g0; /* see patch g0 command */
|
||||
|
||||
// For game-specific hacks.
|
||||
enum gameId game;
|
||||
|
||||
/* ain 関連 */
|
||||
S39AIN ain;
|
||||
|
||||
|
||||
+12
-22
@@ -30,17 +30,7 @@
|
||||
#include "sdl_private.h"
|
||||
|
||||
/* マウスカーソルフォントイメージ*/
|
||||
#include "bitmaps/cursor_arrow.xpm"
|
||||
#include "bitmaps/cursor_busy.xpm"
|
||||
#include "bitmaps/cursor_no.xpm"
|
||||
#include "bitmaps/cursor_move.xpm"
|
||||
#include "bitmaps/cursor_cross.xpm"
|
||||
#include "bitmaps/cursor_size_h.xpm"
|
||||
#include "bitmaps/cursor_size_l.xpm"
|
||||
#include "bitmaps/cursor_size_r.xpm"
|
||||
#include "bitmaps/cursor_size_v.xpm"
|
||||
#include "bitmaps/cursor_uparrow.xpm"
|
||||
#include "bitmaps/cursor_ibeam.xpm"
|
||||
|
||||
static SDL_Cursor *cursor[256];
|
||||
|
||||
@@ -80,20 +70,20 @@ static SDL_Cursor *init_system_cursor(const char *image[]) {
|
||||
return SDL_CreateCursor(data, mask, 32, 32, hot_x, hot_y);
|
||||
}
|
||||
|
||||
/* mouse cursur の初期化 */
|
||||
void sdl_cursor_init(void) {
|
||||
cursor[CURSOR_ARROW] = init_system_cursor(cursor_arrow);
|
||||
cursor[CURSOR_CROSS] = init_system_cursor(cursor_cross);
|
||||
cursor[CURSOR_IBEAM] = init_system_cursor(cursor_ibeam);
|
||||
cursor[CURSOR_NO] = init_system_cursor(cursor_no);
|
||||
cursor[CURSOR_SIZE] = init_system_cursor(cursor_move);
|
||||
cursor[CURSOR_SIZEALL] = init_system_cursor(cursor_move);
|
||||
cursor[CURSOR_SIZENESW] = init_system_cursor(cursor_size_r);
|
||||
cursor[CURSOR_SIZENS] = init_system_cursor(cursor_size_v);
|
||||
cursor[CURSOR_SIZENWSE] = init_system_cursor(cursor_size_l);
|
||||
cursor[CURSOR_SIZEWE] = init_system_cursor(cursor_size_h);
|
||||
cursor[CURSOR_ARROW] = SDL_GetDefaultCursor();
|
||||
cursor[CURSOR_CROSS] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_CROSSHAIR);
|
||||
cursor[CURSOR_IBEAM] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_IBEAM);
|
||||
cursor[CURSOR_ICON] = SDL_GetDefaultCursor();
|
||||
cursor[CURSOR_NO] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_NO);
|
||||
cursor[CURSOR_SIZE] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZEALL);
|
||||
cursor[CURSOR_SIZEALL] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZEALL);
|
||||
cursor[CURSOR_SIZENESW] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENESW);
|
||||
cursor[CURSOR_SIZENS] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENS);
|
||||
cursor[CURSOR_SIZENWSE] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZENWSE);
|
||||
cursor[CURSOR_SIZEWE] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_SIZEWE);
|
||||
cursor[CURSOR_UPARROW] = init_system_cursor(cursor_uparrow);
|
||||
cursor[CURSOR_WAIT] = init_system_cursor(cursor_busy);
|
||||
cursor[CURSOR_WAIT] = SDL_CreateSystemCursor(SDL_SYSTEM_CURSOR_WAIT);
|
||||
}
|
||||
|
||||
boolean sdl_cursorNew(uint8_t* data, int no, CursorImage *cursorImage, TCursorDirEntry *cursordirentry) {
|
||||
|
||||
+6
-2
@@ -40,6 +40,7 @@
|
||||
#include "menu.h"
|
||||
#include "input.h"
|
||||
#include "msgskip.h"
|
||||
#include "hacks.h"
|
||||
|
||||
static void sdl_getEvent(void);
|
||||
static void keyEventProsess(SDL_KeyboardEvent *e, boolean pressed);
|
||||
@@ -259,7 +260,7 @@ void sdl_handle_event(SDL_Event *e) {
|
||||
break;
|
||||
#ifdef _WIN32
|
||||
case SDL_SYSWMEVENT:
|
||||
win_menu_onsyswmevent(e->syswm.msg);
|
||||
win_menu_onSysWMEvent(e->syswm.msg);
|
||||
break;
|
||||
#endif
|
||||
case SDL_APP_DIDENTERFOREGROUND:
|
||||
@@ -281,6 +282,9 @@ void sdl_handle_event(SDL_Event *e) {
|
||||
break;
|
||||
case SDL_MOUSEMOTION:
|
||||
sdl_setCursorInternalLocation(e->motion.x, e->motion.y);
|
||||
#ifdef _WIN32
|
||||
win_menu_onMouseMotion(e->motion.x, e->motion.y);
|
||||
#endif
|
||||
break;
|
||||
|
||||
case SDL_MOUSEWHEEL:
|
||||
@@ -445,7 +449,7 @@ static void sdl_getEvent(void) {
|
||||
cmd_count_of_prev_input = nact->cmd_count;
|
||||
} else if (nact->cmd_count != cmd_count_of_prev_input) {
|
||||
nact->wait_vsync = TRUE;
|
||||
if (nact->game == GAME_RANCE4_V2)
|
||||
if (game_id == GAME_RANCE4_V2)
|
||||
rance4v2_hack();
|
||||
}
|
||||
}
|
||||
|
||||
+3
-1
@@ -460,7 +460,9 @@ void sel_select() {
|
||||
while (!nact->is_quit) {
|
||||
key = sys_keywait(25, KEYWAIT_CANCELABLE);
|
||||
|
||||
if (!key && prevkey == SYS35KEY_SPC) break;
|
||||
// Right-click exits the menu without waiting for button up.
|
||||
if (key == SYS35KEY_SPC) break;
|
||||
|
||||
if (!key && prevkey == SYS35KEY_RET && curElement != -1) break;
|
||||
prevkey = key;
|
||||
|
||||
|
||||
+12
-6
@@ -29,6 +29,8 @@
|
||||
#include "resources.h"
|
||||
#include "msgskip.h"
|
||||
|
||||
static HMENU hmenu;
|
||||
|
||||
static HWND get_hwnd(SDL_Window *window) {
|
||||
SDL_SysWMinfo info;
|
||||
SDL_VERSION(&info.version);
|
||||
@@ -60,9 +62,6 @@ static void saveScreenshot(void) {
|
||||
}
|
||||
|
||||
static bool toggle_menu_item(UINT id, bool *checked_out) {
|
||||
HWND hwnd = get_hwnd(sdl_window);
|
||||
HMENU hmenu = GetMenu(hwnd);
|
||||
|
||||
MENUITEMINFO menuitem = {
|
||||
.cbSize = sizeof(MENUITEMINFO),
|
||||
.fMask = MIIM_STATE,
|
||||
@@ -82,7 +81,7 @@ static bool toggle_menu_item(UINT id, bool *checked_out) {
|
||||
|
||||
void win_menu_init(void) {
|
||||
HINSTANCE hinst = (HINSTANCE)GetModuleHandle(NULL);
|
||||
HMENU hmenu = LoadMenu(hinst, MAKEINTRESOURCE(IDR_MENU1));
|
||||
hmenu = LoadMenu(hinst, MAKEINTRESOURCE(IDR_MENU1));
|
||||
SetMenu(get_hwnd(sdl_window), hmenu);
|
||||
SDL_EventState(SDL_SYSWMEVENT, SDL_ENABLE);
|
||||
// Let SDL recalc the window size, taking menu height into account.
|
||||
@@ -90,7 +89,7 @@ void win_menu_init(void) {
|
||||
CheckMenuItem(hmenu, ID_OPTION_MOUSE_MOVE, MF_BYCOMMAND | MFS_CHECKED);
|
||||
}
|
||||
|
||||
void win_menu_onsyswmevent(SDL_SysWMmsg* msg) {
|
||||
void win_menu_onSysWMEvent(SDL_SysWMmsg* msg) {
|
||||
bool checked;
|
||||
switch (msg->msg.win.msg) {
|
||||
case WM_COMMAND:
|
||||
@@ -106,9 +105,11 @@ void win_menu_onsyswmevent(SDL_SysWMmsg* msg) {
|
||||
break;
|
||||
case ID_SCREEN_WINDOW:
|
||||
sdl_setFullscreen(FALSE);
|
||||
SetMenu(get_hwnd(sdl_window), hmenu);
|
||||
break;
|
||||
case ID_SCREEN_FULL:
|
||||
sdl_setFullscreen(TRUE);
|
||||
SetMenu(get_hwnd(sdl_window), NULL);
|
||||
break;
|
||||
case ID_SCREEN_INTEGER_SCALING:
|
||||
if (toggle_menu_item(ID_SCREEN_INTEGER_SCALING, &checked))
|
||||
@@ -126,9 +127,14 @@ void win_menu_onsyswmevent(SDL_SysWMmsg* msg) {
|
||||
}
|
||||
}
|
||||
|
||||
void win_menu_onMouseMotion(int x, int y) {
|
||||
if (!sdl_isFullscreen())
|
||||
return;
|
||||
SetMenu(get_hwnd(sdl_window), y > 0 ? NULL : hmenu);
|
||||
}
|
||||
|
||||
void menu_setSkipState(boolean enabled, boolean activated) {
|
||||
HWND hwnd = get_hwnd(sdl_window);
|
||||
HMENU hmenu = GetMenu(hwnd);
|
||||
|
||||
EnableMenuItem(hmenu, ID_MSGSKIP, enabled ? MF_ENABLED : MF_GRAYED);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user