Compare commits

..
Author SHA1 Message Date
kichikuou cfa9dc3502 Make BGM setup easy
This changes the default value of cdrom_device to "playlist.txt" so that
users can prepare BGM simply by putting a file named "playlist.txt" in
the game directory.

Also, if the playlist file is not found but there is a "_inmm.ini" file
in the game directory, load it as a playlist (but unlike the normal
playlist format, the first line corresponds to track 2). This makes some
archived games work without any configuration.
2020-08-06 17:20:27 +09:00
kichikuou f978c43ee1 Move mmap-related code to mmap.{h,c}
And add Windows implementation.
2020-08-06 15:09:51 +09:00
kichikuou 7871bb9328 Fix DEBUG_COMMAND macro 2020-08-06 14:59:33 +09:00
kichikuou ab32b1792f Do not display message argument of System 3.9 H/HH/X commands
This matches the behavior of System39.exe.
2020-08-02 15:38:12 +09:00
kichikuou 98d0a13a20 Change the underlying type of boolean to C99 _Bool 2020-08-02 14:07:51 +09:00
kichikuou 5456ac4219 Remove unused ERROR constant 2020-08-02 13:46:44 +09:00
kichikuou f258ae42b1 Windows: Remember last selected game folder in registry 2020-08-02 13:41:34 +09:00
kichikuou 6a459260e4 Fix font filename in xsystem35.nsi 2020-08-02 13:41:34 +09:00
kichikuou 6580b864c0 Windows: Localize game-folder chooser dialog 2020-08-02 13:41:34 +09:00
kichikuou bfd8e3e55a Windows: Add app icon 2020-08-02 13:41:34 +09:00
kichikuou 05cacb170f Windows CI: Generate installer as build artifact 2020-08-01 23:23:51 +09:00
kichikuou d2c861ad53 Windows: Let the user select a game folder when launched without arguments 2020-08-01 21:43:20 +09:00
kichikuou 8a395a57e4 Windows: Load profile from registry
This allows xsystem35 to use the font paths written to the registry by
the installer.
2020-08-01 21:43:20 +09:00
kichikuou 6706348c11 Make DWORD definition not to conflict with windows.h 2020-08-01 21:43:20 +09:00
kichikuou c66714bab6 Add NSIS script for generating Windows installer 2020-08-01 21:43:15 +09:00
kichikuou 730b15dfca Refactor debug output macros 2020-07-25 22:01:21 +09:00
kichikuou ad6c84db4d Clean up xsys35rc.sample 2020-07-25 17:57:49 +09:00
kichikuou 9053583517 Do UTF-8 conversion for filenames in cmd*.c 2020-07-25 17:09:08 +09:00
kichikuou 07f8f8a5f8 initGameResourceFromDir: Stop prepending CWD to filenames 2020-07-25 14:48:41 +09:00
kichikuou 9f244c3dee Fix filecheck.c issues
- Use _wfopen on Windows, to avoid garbled filenames.
- The -savekanji option is removed. Now character encoding of file paths
  is assumed to be UTF-8 on non-windows.
- On all platforms, data files are also searched for in current
  directory.
2020-07-25 13:17:03 +09:00
kichikuou 2e895ed3ae Fix a compiler warning 2020-07-24 20:09:29 +09:00
kichikuou b5010df10d Add helper functions for number formatting
And use it from H, HH, MH, and MHH commands.
2020-07-24 17:06:30 +09:00
kichikuou fc5f89912e Fix zen2han
To match the behavior of "ZH 1" in System 3.9.
2020-07-24 16:30:03 +09:00
kichikuou 70ea305ca9 Refactor hankaku.c 2020-07-24 16:17:18 +09:00
kichikuou b4eb18c938 Add test for hankaku.c 2020-07-24 15:42:48 +09:00
kichikuou b9e0d97156 Fix utf2sjis() for KATAKANA MIDDLE DOT character 2020-07-24 14:53:59 +09:00
kichikuou 350d8bb367 Remove unused sys_getConvString() 2020-07-24 13:21:48 +09:00
kichikuou fb10cbc52d Add unittest.h with some assertion macros 2020-07-24 12:46:14 +09:00
kichikuou 55976a5816 Merge hankana2sjis.c into hankaku.c 2020-07-24 11:30:07 +09:00
kichikuou 827f98d24a Remove ttfont_{gothic,mincho}_code .xys35rc parameters
These are no longer effective as we have dropped SJIS charmap support.
This also removes the codeconv field from FONT struct.
2020-07-24 10:00:43 +09:00
kichikuou ce67aa7028 Eliminate SJIS string constants 2020-07-24 08:54:45 +09:00
kichikuou 50b3812364 Convert gametitle.h to utf-8 2020-07-23 22:50:43 +09:00
kichikuou 616534621e Fix ShString.ExchangeString
And add a test.
2020-07-23 18:08:58 +09:00
kichikuou 1f5ec7a9a9 Simplify string functions 2020-07-23 17:04:37 +09:00
kichikuou 06223ea727 Add more tests for string variables 2020-07-23 16:57:31 +09:00
kichikuou d15c770b4b Fix strGetCharType and strGetLengthASCII 2020-07-23 16:55:49 +09:00
kichikuou 60bb70c456 Fix strCheckASCII and strCheckSJIS
They were referencing wrong string variables.
2020-07-23 16:36:03 +09:00
kichikuou 52322345b5 Fix MG7 command
This fixes a regression bug introduced by 86470e5.
2020-07-23 16:31:35 +09:00
kichikuou 66693ad39a font_freetype2: Drop support for SJIS character map
Nowadays, it's safe to assume that fonts have a Unicode character map.
2020-07-23 15:01:46 +09:00
kichikuou 73fab9b628 Remove unused functions in utfsjis.c 2020-07-23 13:53:25 +09:00
kichikuou bdfe0e8077 Remove sjis2lang and lang2sjis macros
There's no plan to use any other "native" character encodings than
UTF-8.
2020-07-23 13:53:08 +09:00
kichikuou 03f8af2241 Simplify registerGameFiles() 2020-07-12 14:25:34 +09:00
kichikuou c03b6cf6b5 Embed GameResource in NACTINFO 2020-07-12 14:17:31 +09:00
kichikuou 1a3b779ace Use const strings for file names 2020-07-12 13:41:57 +09:00
kichikuou 4c58510a37 CMake: Introduce src_lib library
To avoid compiling test targets twice.
2020-07-12 13:01:31 +09:00
kichikuou b4c729a1f6 initGameResourceFromDir: Detect non-{ald,ain} files too
Now BGI, WAI and other files can be used without writing a .gr file.
2020-07-12 12:09:01 +09:00
kichikuou daf5098530 Add test for initGameResourceFromDir 2020-07-12 11:46:39 +09:00
kichikuou 4223284781 CI: Update GitHub Actions
- mymindstorm/setup-emsdk@v6
- actions/cache@v2
- actions/upload-artifact@v2
2020-07-12 11:27:45 +09:00
kichikuou 3d70d00bce Add unit test for gameresource.c 2020-07-11 19:12:45 +09:00
kichikuou f2fbf54c32 Move registerGameFiles to xsystem35.c 2020-07-11 18:34:27 +09:00
kichikuou b4d2c0832e Clean up gameresource.c 2020-07-11 18:34:24 +09:00
kichikuou d777b18b55 Game Resource: Allow file names containing spaces 2020-07-11 18:23:39 +09:00
kichikuou 7b3efd9aaa Move *.gr reader code to gameresource.c 2020-07-11 18:22:05 +09:00
kichikuou 90eb139994 Merge pull request #17 from nunuhara/missing_font_fix
Fix segfault when non-existent font specified
2020-07-11 16:15:13 +09:00
Nunuhara Cabbage aa87e3e8c0 Fix segfault when non-existent font specified 2020-07-10 23:43:46 -07:00
kichikuou 1cd949f597 CMake: Fix X11 + SDL_mixer build
Stop using SDL2_FOUND to determine if SDL2 should be used or not,
because it may be defined as a side effect of
pkg_check_modules(SDL2_mixer).
2020-06-27 15:05:56 +09:00
kichikuou 426cdaa836 Fix compatibility issues around maximum index of array variables
The second argument of DC command specifies the maximum index of the new
array. That means, `DC _,n,_:` allocates an array of size n+1 (a[0] to
a[n]).

This patch makes sure various D commands work with a[n], and a[n] is
correctly saved and loaded.

Now loadSysVar() does not shrink array variables using the data count in
the save file, so that files saved by old xsystem35 binary can be safely
loaded. This also matches the behavior of System3.9.
2020-06-27 13:16:22 +09:00
kichikuou 8db5a9cd65 Implement text decoration type 4 and 10 2020-06-21 11:10:19 +09:00
kichikuou 47f82e87c5 Add guards against incomplete SJIS bytes 2020-06-21 09:49:13 +09:00
kichikuou 86470e543a Rework string variables
- strVar is now allocated as a vector of indefinite length buffers
  rather than a single contiguous buffer.
- Strings can be any length, but truncated to (strvar_len * 2) bytes
  when saved to a file, for backward compatibility.
- Now string commands treat 1-byte characters in the same way as System
  3.9. This potentially fixes bugs in English translated games.
2020-06-20 22:29:22 +09:00
kichikuou a23ce19433 Add tests for string variables (M commands)
xsystem35 does not pass yet.
2020-06-20 13:00:32 +09:00
kichikuou 1cf197513c Use const strings in message related functions 2020-06-20 10:53:38 +09:00
kichikuou 64c3c28336 CI: Run SDL2 and X11 builds on Linux 2020-06-20 10:52:35 +09:00
kichikuou 7309ed012f Make DspDeviceSync no-op in SDL graphics 2020-06-18 21:49:51 +09:00
kichikuou 515a92544b getCaliValue: Recover from out-of-bounds index access
Before this, array access caused stack underflow if the index was out of
range. After this, such index access will be evaluated to zero.
2020-06-14 22:43:17 +09:00
kichikuou 725b0ee6ab Prevent buffer overrun by DF command 2020-06-14 22:09:14 +09:00
kichikuou e17b447e73 Cleanup variable lookup code
No behavior changes.
2020-06-14 21:54:11 +09:00
kichikuou 6dbd31cdbc Add tests for array access 2020-06-14 21:48:52 +09:00
kichikuou a217df39b1 Fix compiler warnings on Windows
On Windows, jpeglib.h includes windows.h which defines several macros
that conflict with ours.
2020-06-14 14:23:40 +09:00
kichikuou 80266d6454 Support JPEG image format
JPEG images are not used in AliceSoft games, but supported since System3.6
version 3.23 and used in some third-party games (e.g. Graymerca).
2020-06-14 14:16:19 +09:00
kichikuou 2e17188f2b Fix DI command and add tests 2020-06-13 15:46:45 +09:00
kichikuou 37f4d847e5 Fix Windows build 2020-06-07 21:29:53 +09:00
kichikuou 43c6688ce7 CI updates
- Add Windows build
- Run Debug and Release builds on Linux
- Run CI against pull requests
2020-06-07 15:16:39 +09:00
kichikuou 09e89e794d Android: Version 0.2.1 2020-06-07 14:31:31 +09:00
kichikuou 3fd7a58544 Android: Use filtered scaling
This improves text readability, especially for the Mincho font.
2020-06-07 12:55:16 +09:00
kichikuou f0ccdcf40a Android: Use arhive filename as alternate launcher item name
The title.txt file is written when the MT command is used, however some
games (Daiakuji, AmbivalenZ, Ikenai Katsumi sensei) does not use the MT
command. As a result, these titles did not appear in the launcher.

This makes the launcher use the name of the ZIP archive when the game
was installed as the alternate item name if the MT command was not used.
2020-06-07 12:23:19 +09:00
kichikuou 1a6b7b33b9 Android: Compile SDL_mixer with ogg support
This enables voice playback in Escalayer.
2020-06-06 23:00:39 +09:00
kichikuou 7240971beb Fix SACT.MessageIsEmpty
This fixes a bug where message wasn't flushed before changing text
attributes.
2020-06-06 18:27:20 +09:00
kichikuou 250fbd30a0 Android: Version 0.2.0 2020-06-06 12:50:42 +09:00
kichikuou d3579186c6 Android: Populate BGM, WAI, BGI, Init, and SACT01 lines in xsystem35.gr 2020-06-06 12:30:14 +09:00
kichikuou 54dcd8c5fc Android: Compile SDL2_mixer with -DMUSIC_WAV
This is necessary to play BGM from ALD.
2020-06-06 12:22:35 +09:00
kichikuou 5c81929461 Android: Enable modules 2020-06-06 09:19:30 +09:00
kichikuou dbc15ca3b4 Re-enable NIGHTDLL module
To avoid symbol conflicts, this adds "nt_" prefix to sprite, sactcg, and
sactstring functions.
2020-06-04 22:50:46 +09:00
kichikuou 9a1f1c77a6 Static link DLL modules
We only support a fixed set of modules, so dynamic linking isn't really
necessary. This paves the way for running System3.9 games on more
platforms.

NIGHTDLL is temporarily disabled, because many symbols conflict with the
SACT module.
2020-06-04 19:56:05 +09:00
kichikuou 0fe5cb60a3 SACT: Add WaitVsync() in animation loops
So that sprite updates are reflected on the screen.
2020-05-31 09:58:18 +09:00
kichikuou 3e2c226866 Set default fonts load path to /fonts/ 2020-05-30 12:15:41 +09:00
kichikuou 0351f4cbcd Do not use tab characters in CMakeLists.txt 2020-05-30 09:33:01 +09:00
kichikuou f1eed8f2af Convert music.c and music_private.h to UTF-8
These files were removed at the time of the batch conversion to UTF-8,
and then re-added in EUC-JP encoding.
2020-05-29 23:15:47 +09:00
kichikuou 9020e5ab1d Remove .dir-locals.el and add .editorconfig 2020-05-29 23:15:17 +09:00
kichikuou 697c15854a Update emscripten to 1.39.16 2020-05-29 22:24:10 +09:00
kichikuou 70a03ff02f s2utbl.h: Map [82 f2] to U+3094 (HIRAGANA LETTER VU)
This character is used in Prostudent Good. (Although MTLc3m.ttf does not
have a glyph for it...)

This also makes the table const.
2020-05-10 22:26:04 +09:00
kichikuou d50e7ac150 CI: Run 'apt update' 2020-05-06 15:39:24 +09:00
kichikuou ea5776108a Fix voice playback in Escalayer
- Make sure muspcm_getpos() returns non-zero while playing
- Implement mus_wav_fadeout_start()
- Fix a bug of ssnd_waitkey()
2020-05-06 15:11:00 +09:00
kichikuou 8d72775daa Modules: Make debug messages less verbose 2020-05-04 23:02:05 +09:00
kichikuou 73216073af Android: Update SDL2 to 2.0.12 2020-03-13 16:22:44 +09:00
205 changed files with 4526 additions and 3764 deletions
-3
View File
@@ -1,3 +0,0 @@
((nil . ((indent-tabs-mode . t)
(c-basic-offset . 4)
(tab-width . 4))))
+13
View File
@@ -0,0 +1,13 @@
# https://EditorConfig.org
root = true
[*]
charset = utf-8
[*.{h,c}]
indent_style = tab
indent_size = 4
[CMakeLists.txt]
indent_style = space
indent_size = 2
+1 -1
View File
@@ -1,5 +1,5 @@
name: Android Build
on: [push]
on: [push, pull_request]
jobs:
build:
+5 -13
View File
@@ -1,8 +1,8 @@
name: Emscripten Build
on: [push]
on: [push, pull_request]
env:
emscripten-version: 1.39.8
emscripten-version: 1.39.16
jobs:
build:
@@ -11,25 +11,17 @@ jobs:
- uses: actions/checkout@v2
- name: Cache emsdk
uses: actions/cache@v1
id: cache
with:
path: emsdk-cache
key: ${{ runner.os }}-emsdk-${{ env.emscripten-version }}
- name: Cache .emscripten_cache
uses: actions/cache@v1
uses: actions/cache@v2
with:
path: emscripten-cache
key: emscripten-cache-${{ env.emscripten-version }}
- name: Setup Emscripten toolchain
uses: mymindstorm/setup-emsdk@v3
uses: mymindstorm/setup-emsdk@v6
with:
version: ${{ env.emscripten-version }}
actions-cache-folder: emsdk-cache
no-cache: true
- name: Build
env:
@@ -45,7 +37,7 @@ jobs:
mv src/xsystem35.* xsystem35/
- name: Upload artifacts
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v2
with:
name: xsystem35-wasm
path: out/wasm/xsystem35
+31 -7
View File
@@ -1,23 +1,47 @@
name: Linux Build
on: [push]
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
strategy:
matrix:
build-type: ["Debug", "Release"]
name: Linux ${{ matrix.build-type }}
steps:
- uses: actions/checkout@v2
- name: Install Deps
run: sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev
run: |
sudo apt update
sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-mixer-dev
- name: Build
run: |
mkdir -p out/debug
cd out/debug
cmake -DCMAKE_BUILD_TYPE=Debug ../../
mkdir -p out/${{ matrix.build-type }}
cd out/${{ matrix.build-type }}
cmake -DENABLE_X11=NO -DCMAKE_BUILD_TYPE=${{ matrix.build-type }} ../../
make
- name: Test
run: ctest
working-directory: out/debug
run: ctest --output-on-failure
working-directory: out/${{ matrix.build-type }}
build-x11:
runs-on: ubuntu-latest
name: Linux X11
steps:
- uses: actions/checkout@v2
- name: Build
run: |
mkdir -p out
cd out
cmake ../
make
- name: Test
run: ctest --output-on-failure
working-directory: out
+60
View File
@@ -0,0 +1,60 @@
name: Windows Build
on: [push, pull_request]
jobs:
build:
runs-on: windows-2019
strategy:
matrix:
mingw: ["MINGW32", "MINGW64"]
include:
- mingw: "MINGW32"
package: "mingw-w64-i686"
installer: "xsystem35-32bit"
- mingw: "MINGW64"
package: "mingw-w64-x86_64"
installer: "xsystem35-64bit"
defaults:
run:
shell: bash.exe --login -eo pipefail "{0}"
env:
MSYSTEM: ${{ matrix.mingw }}
CHERE_INVOKING: 1
name: MSYS2 ${{ matrix.mingw }}
steps:
- name: Set up shell
run: echo ::add-path::C:\msys64\usr\bin\
shell: pwsh
- name: Print system version
run: |
uname
echo PATH: $PATH
- name: Install Deps
run: pacman -S --noconfirm ${{ matrix.package }}-SDL2 ${{ matrix.package }}-SDL2_ttf ${{ matrix.package }}-SDL2_mixer ${{ matrix.package }}-libjpeg-turbo ${{ matrix.package }}-nsis ${{ matrix.package }}-ntldd-git
- name: Checkout
uses: actions/checkout@v2
- name: Build
run: |
mkdir -p out/release
cd out/release
cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release ../../
make
- name: Test
run: ctest --output-on-failure
working-directory: out/release
- name: Package
working-directory: installer
run: ./make-installer.sh ../out/release ${{ matrix.installer }}.nsi
- name: Upload
uses: actions/upload-artifact@v2
with:
name: ${{ matrix.installer }}
path: installer/${{ matrix.installer }}.exe
+37 -33
View File
@@ -18,7 +18,7 @@ endif ()
macro (optional_find_package package)
option(ENABLE_${package} "Use ${package} if available" ON)
if (ENABLE_${package})
find_package(${package} ${ARGN})
find_package(${package} ${ARGN})
endif()
endmacro()
@@ -26,7 +26,7 @@ endmacro()
macro (optional_pkg_check_modules prefix)
option(ENABLE_${prefix} "Use ${prefix} if available" ON)
if (ENABLE_${prefix})
pkg_check_modules(${prefix} ${ARGN})
pkg_check_modules(${prefix} ${ARGN})
endif()
endmacro()
@@ -38,7 +38,11 @@ check_symbol_exists(uname "sys/utsname.h" HAVE_UNAME)
if (EMSCRIPTEN)
set(SDL2_FOUND 1)
set(FREETYPE_FOUND 1)
set(DEFAULT_FONT_PATH /fonts/)
elseif (ANDROID)
if (NOT DEFINED ENABLE_MODULES)
set(ENABLE_MODULES 1)
endif()
set(SDL2_FOUND 1)
set(SDL2MIXER_FOUND 1)
set(SDL2TTF_FOUND 1)
@@ -49,34 +53,33 @@ else()
TEST_BIG_ENDIAN(WORDS_BIGENDIAN)
if (NOT DEFINED ENABLE_MODULES)
check_library_exists(dl dlopen "" ENABLE_MODULES)
endif()
if (ENABLE_MODULES)
link_libraries(dl)
set(ENABLE_MODULES 1)
endif()
find_package(ZLIB REQUIRED)
optional_find_package(X11)
if (X11_xf86vmode_FOUND)
set(HAVE_XF86VMODE 1)
set(HAVE_XF86VMODE 1)
endif()
optional_find_package(GTK2 COMPONENTS gtk)
if (GTK2_FOUND)
set(ENABLE_GTK 1)
set(ENABLE_GTK 1)
endif()
optional_find_package(Freetype)
include(FindPkgConfig)
if (NOT X11_FOUND)
optional_pkg_check_modules(SDL2 IMPORTED_TARGET sdl2)
endif()
optional_pkg_check_modules(SDL2 IMPORTED_TARGET sdl2)
optional_pkg_check_modules(SDL2MIXER IMPORTED_TARGET SDL2_mixer)
optional_pkg_check_modules(SDL2TTF IMPORTED_TARGET SDL2_ttf)
include(FindJPEG)
if (JPEG_FOUND)
set(HAVE_JPEG 1)
endif()
set(DEFAULT_FONT_PATH ${CMAKE_INSTALL_PREFIX}/share/xsystem35/fonts/)
endif()
@@ -92,10 +95,10 @@ elseif (GTK2_FOUND)
include(FindIntl)
include(FindGettext)
if (Intl_FOUND AND GETTEXT_FOUND)
set(ENABLE_NLS 1)
add_compile_definitions(LOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale")
include_directories(${Intl_INCLUDE_DIRS})
link_libraries(${Intl_LIBRARIES})
set(ENABLE_NLS 1)
add_compile_definitions(LOCALEDIR="${CMAKE_INSTALL_PREFIX}/share/locale")
include_directories(${Intl_INCLUDE_DIRS})
link_libraries(${Intl_LIBRARIES})
endif()
else()
set(SRC_MENU menu_null.c)
@@ -154,7 +157,7 @@ if (SDL2MIXER_FOUND AND NOT ANDROID)
list(APPEND SUMMARY_CDROM "SDL_mixer (wav|mp3|ogg...)")
set(ENABLE_CDROM_MP3 1)
endif()
set(CDROM_DEVICE "/dev/cdrom" CACHE STRING "CDROM Device Name")
set(CDROM_DEVICE "playlist.txt" CACHE STRING "CDROM Device Name")
# MIDI
@@ -174,21 +177,21 @@ else()
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "machine/soundcard.h" ENABLE_MIDI_SEQMIDI)
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "machine/soundcard.h" ENABLE_MIDI_SEQMIDI)
elseif (CMAKE_SYSTEM_NAME MATCHES "(NetBSD|OpenBSD)")
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "soundcard.h" ENABLE_MIDI_SEQMIDI)
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "soundcard.h" ENABLE_MIDI_SEQMIDI)
else ()
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "sys/soundcard.h" ENABLE_MIDI_SEQMIDI)
check_symbol_exists(SNDCTL_SEQ_NRSYNTHS "sys/soundcard.h" ENABLE_MIDI_SEQMIDI)
endif()
if (ENABLE_MIDI_SEQMIDI)
list(APPEND SUMMARY_MIDI "OSS sequencer")
set(SEQ_DEVICE "/dev/sequencer" CACHE STRING "sequencer device")
list(APPEND SUMMARY_MIDI "OSS sequencer")
set(SEQ_DEVICE "/dev/sequencer" CACHE STRING "sequencer device")
endif()
if (SDL2MIXER_FOUND)
list(APPEND SRC_MIDI midi.sdlmixer.c)
list(APPEND SUMMARY_MIDI "SDL_mixer")
set(ENABLE_MIDI_SDLMIXER 1)
list(APPEND SRC_MIDI midi.sdlmixer.c)
list(APPEND SUMMARY_MIDI "SDL_mixer")
set(ENABLE_MIDI_SDLMIXER 1)
endif()
endif()
@@ -196,18 +199,18 @@ endif()
if (EMSCRIPTEN OR ANDROID)
set(SRC_JOYSTICK joystick_dmy.c)
elseif (SDL2_FOUND)
elseif (ENABLE_SDL)
set(SRC_JOYSTICK joystick_sdl.c)
set(SUMMARY_JOYSTICK "SDL")
set(HAVE_SDLJOY 1)
else()
check_include_file(linux/joystick.h HAVE_LINUX_JOYSTICK_H)
if (HAVE_LINUX_JOYSTICK_H)
set(SRC_JOYSTICK joystick_linux.c)
set(SUMMARY_JOYSTICK "Linux ioctl")
set(JOY_DEVICE "/dev/js0" CACHE STRING "joystick device")
set(SRC_JOYSTICK joystick_linux.c)
set(SUMMARY_JOYSTICK "Linux ioctl")
set(JOY_DEVICE "/dev/js0" CACHE STRING "joystick device")
else ()
set(SRC_JOYSTICK joystick_dmy.c)
set(SRC_JOYSTICK joystick_dmy.c)
endif ()
endif()
@@ -219,7 +222,7 @@ if (X11_FOUND)
set(ENABLE_X11FONT 1)
endif()
if (FREETYPE_FOUND)
list(APPEND SRC_FONT font_freetype2.c cp932tojis0213.c)
list(APPEND SRC_FONT font_freetype2.c)
list(APPEND SUMMARY_FONT "freetype2")
set(ENABLE_FT2 1)
endif()
@@ -236,9 +239,9 @@ endif()
function (print_summary name)
if (ARGN)
list(JOIN ARGN ", " MSG)
list(JOIN ARGN ", " MSG)
else()
set(MSG "none")
set(MSG "none")
endif()
message(" ${name}: ${MSG}")
endfunction()
@@ -268,4 +271,5 @@ endif()
if (ENABLE_MODULES)
add_subdirectory(modules)
target_link_libraries(xsystem35 PRIVATE modules)
endif()
+2 -2
View File
@@ -20,7 +20,7 @@ cmake の実行でエラーになる場合は必要なライブラリをイン
[Homebrew](https://brew.sh/index_ja) が必要です。
$ brew install cmake pkg-config sdl2 sdl2_mixer freetype
$ brew install cmake pkg-config sdl2 sdl2_mixer freetype libjpeg
$ mkdir -p out/debug
$ cd out/debug
$ cmake -DCMAKE_BUILD_TYPE=Debug ../../
@@ -30,7 +30,7 @@ cmake の実行でエラーになる場合は必要なライブラリをイン
[MSYS2](https://www.msys2.org) が必要です。
$ pacman -S cmake mingw-w64-x86_64-cmake mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL2_mixer
$ pacman -S cmake mingw-w64-x86_64-cmake mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_ttf mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-libjpeg-turbo
$ mkdir -p out/debug
$ cd out/debug
$ cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug ../../
+1 -2
View File
@@ -44,7 +44,7 @@ cd xsystem35-sdl2/android
4. The game starts. Two-finger touch is treated as a right click.
### Preparing a ZIP
- Include all `.ALD` files and `.ain` files if any.
- Include all files in the `GAMEDATA` folder (`.ALD` files and others). `.EXE` and `.DLL` are not really needed, but you can include them as well.
- Music files (`.mp3`, `.ogg` or `.wav`) whose file names end with a number are recognized as BGM files. For example:
- `Track2.mp3`
- `15.ogg`
@@ -58,4 +58,3 @@ Note: This form of ZIP can be used in [Kichikuou on Web](http://kichikuou.github
## Known Issues
- Android versions older than 7.0 cannot handle ZIPs containing Shift-JIS file names. This is the case with some ZIPs distributed on [retroc.net](http://retropc.net/alice/). If you get the error "This type of ZIP is not supported.", unzip the ZIP file on your PC and re-archive it with a modern ZIP creation software.
- DLL modules used in System3.9 games (大悪司 and later) are not supported yet.
+2 -2
View File
@@ -16,8 +16,8 @@ android {
}
minSdkVersion 19
targetSdkVersion 26
versionCode 2
versionName "0.1.1"
versionCode 4
versionName "0.2.1"
externalNativeBuild {
cmake {
arguments "-DANDROID_APP_PLATFORM=android-16", "-DANDROID_STL=c++_static"
+4 -3
View File
@@ -7,11 +7,10 @@ project(GAME)
# android_ndk_import_module_cpufeatures()
include(FetchContent)
# TODO: Use SDL2 2.0.11 once released
FetchContent_Declare(
SDL
URL https://hg.libsdl.org/SDL/archive/a5f93b21dfe0.tar.gz # rev 13383
URL_HASH SHA1=a7e9696f7ef8af7c4b89671b096c38d1a4cbf90c
URL http://libsdl.org/release/SDL2-2.0.12.tar.gz
URL_HASH SHA1=e8ba91bf5eb438dbcf1fedf0530a1bcbe30d3bb6
PATCH_COMMAND patch -p1 -i ${CMAKE_CURRENT_LIST_DIR}/SDL.patch
)
# TODO: Use SDL2_ttf 2.0.16 once released
@@ -41,11 +40,13 @@ endif()
FetchContent_GetProperties(SDL_mixer)
if(NOT sdl_mixer_POPULATED)
FetchContent_Populate(SDL_mixer)
SET(SUPPORT_OGG ON CACHE BOOL "Enable OGG support in SDL_mixer" FORCE)
add_subdirectory(${sdl_mixer_SOURCE_DIR} ${sdl_mixer_BINARY_DIR})
# Workaround for CMakeLists.txt bugs of SDL_mixer.
# TODO: Fix these in upstream
add_library(vorbisfile INTERFACE)
target_include_directories(SDL2_mixer PUBLIC ${sdl_mixer_SOURCE_DIR}/include)
target_compile_definitions(SDL2_mixer PRIVATE MUSIC_WAV)
endif()
# The main CMakeLists.txt of xsystem35
+15 -1
View File
@@ -16,17 +16,31 @@
android:required="false" />
<!-- Game controller support -->
<uses-feature
android:name="android.hardware.bluetooth"
android:required="false" />
<uses-feature
android:name="android.hardware.gamepad"
android:required="false" />
<uses-feature
android:name="android.hardware.usb.host"
android:required="false" />
<!-- External mouse input events -->
<uses-feature
android:name="android.hardware.type.pc"
android:required="false" />
<!-- Allow reading from external storage -->
<!-- Audio recording support -->
<!-- if you want to capture audio, uncomment this. -->
<!-- <uses-feature
android:name="android.hardware.microphone"
android:required="false" /> -->
<!-- Allow writing to external storage -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Allow access to Bluetooth devices -->
<!-- <uses-permission android:name="android.permission.BLUETOOTH" /> -->
<!-- Allow access to the vibrator -->
<!-- <uses-permission android:name="android.permission.VIBRATE" /> -->
@@ -29,6 +29,7 @@ import java.io.IOException
class GameActivity : SDLActivity() {
companion object {
const val EXTRA_GAME_ROOT = "GAME_ROOT"
const val EXTRA_ARCHIVE_NAME = "ARCHIVE_NAME"
}
private lateinit var gameRoot: File
@@ -63,9 +64,12 @@ class GameActivity : SDLActivity() {
override fun setTitle(title: CharSequence?) {
super.setTitle(title)
val str = title?.toString()?.substringAfter(':', "")
if (str.isNullOrEmpty())
return
var str = title?.toString()?.substringAfter(':', "")
if (str.isNullOrEmpty()) {
str = intent.getStringExtra(EXTRA_ARCHIVE_NAME)
if (str == null)
return
}
File(gameRoot, Launcher.TITLE_FILE).writeText(str)
Launcher.updateGameList()
}
@@ -35,7 +35,7 @@ private var gLauncher: Launcher? = null
interface LauncherObserver {
fun onGameListChange()
fun onInstallProgress(path: String)
fun onInstallSuccess(path: File)
fun onInstallSuccess(path: File, archiveName: String?)
fun onInstallFailure(msgId: Int)
}
@@ -73,7 +73,7 @@ class Launcher private constructor(private val rootDir: File) {
updateGameList()
}
fun install(input: InputStream) {
fun install(input: InputStream, archiveName: String?) {
val dir = createDirForGame()
@SuppressLint("HandlerLeak")
val handler = object : Handler() {
@@ -84,7 +84,7 @@ class Launcher private constructor(private val rootDir: File) {
}
SUCCESS -> {
isInstalling = false
observer?.onInstallSuccess(msg.obj as File)
observer?.onInstallSuccess(msg.obj as File, archiveName)
}
FAILURE -> {
isInstalling = false
@@ -213,27 +213,37 @@ class Launcher private constructor(private val rootDir: File) {
private class GameConfigWriter {
private val grb = StringBuilder()
private var basename: String? = null
private val aldRegex = """(.*?)([a-z])([a-z])\.ald""".toRegex(RegexOption.IGNORE_CASE)
private val resourceType = mapOf(
private val aldRegex = """(.*?)([a-z])([a-z])\.(ald|wai|bgi)""".toRegex(RegexOption.IGNORE_CASE)
private val aldType = mapOf(
"b" to "BGM",
"d" to "Data",
"g" to "Graphics",
"m" to "Midi",
"r" to "Resource",
"s" to "Scenario",
"w" to "Wave")
private val specialResources = mapOf(
"system39.ain" to "Ain",
"system39.ini" to "Init",
"sactefam.kld" to "SACT01"
)
private val audioRegex = """.*?(\d+)\.(wav|mp3|ogg)""".toRegex(RegexOption.IGNORE_CASE)
private val audioFiles: Array<String?> = arrayOfNulls(100)
fun maybeAdd(path: String) {
val name = File(path).name
if (name.toLowerCase(Locale.US) == "system39.ain") {
grb.appendln("Ain $path")
specialResources[name.toLowerCase(Locale.US)]?.let {
grb.appendln("$it $path")
return
}
aldRegex.matchEntire(name)?.let {
val type = resourceType[it.groupValues[2].toLowerCase(Locale.US)]
val ext = it.groupValues[4].toUpperCase(Locale.US)
val type = if (ext == "ALD") {
aldType[it.groupValues[2].toLowerCase(Locale.US)]
} else {
ext
}
val id = it.groupValues[3].toUpperCase(Locale.US)
if (type != null) {
grb.appendln("$type$id $path")
@@ -19,7 +19,9 @@ package io.github.kichikuou.xsystem35
import android.app.*
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.provider.OpenableColumns
import android.util.Log
import android.view.Menu
import android.view.MenuItem
@@ -60,7 +62,7 @@ class LauncherActivity : ListActivity(), AdapterView.OnItemLongClickListener, La
override fun onListItemClick(l: ListView?, v: View?, position: Int, id: Long) {
super.onListItemClick(l, v, position, id)
if (position < launcher.games.size) {
startGame(launcher.games[position].path)
startGame(launcher.games[position].path, null)
} else {
val i = Intent(Intent.ACTION_GET_CONTENT)
i.type = CONTENT_TYPE_ZIP
@@ -112,7 +114,7 @@ class LauncherActivity : ListActivity(), AdapterView.OnItemLongClickListener, La
INSTALL_REQUEST -> {
val input = contentResolver.openInputStream(uri) ?: return
showProgressDialog()
launcher.install(input)
launcher.install(input, getArchiveName(uri))
}
SAVEDATA_EXPORT_REQUEST -> try {
launcher.exportSaveData(contentResolver.openOutputStream(uri)!!)
@@ -144,9 +146,9 @@ class LauncherActivity : ListActivity(), AdapterView.OnItemLongClickListener, La
progressDialog?.setProgress(getString(R.string.install_progress, path))
}
override fun onInstallSuccess(path: File) {
override fun onInstallSuccess(path: File, archiveName: String?) {
dismissProgressDialog()
startGame(path)
startGame(path, archiveName)
}
override fun onInstallFailure(msgId: Int) {
@@ -154,10 +156,11 @@ class LauncherActivity : ListActivity(), AdapterView.OnItemLongClickListener, La
errorDialog(msgId)
}
private fun startGame(path: File) {
private fun startGame(path: File, archiveName: String?) {
val i = Intent()
i.setClass(applicationContext, GameActivity::class.java)
i.putExtra(GameActivity.EXTRA_GAME_ROOT, path.path)
i.putExtra(GameActivity.EXTRA_ARCHIVE_NAME, archiveName)
startActivity(i)
}
@@ -181,6 +184,17 @@ class LauncherActivity : ListActivity(), AdapterView.OnItemLongClickListener, La
.setPositiveButton(R.string.ok) {_, _ -> }
.show()
}
private fun getArchiveName(uri: Uri): String? {
val cursor = contentResolver.query(uri, null, null, null, null, null)
cursor?.use {
if (it.moveToFirst()) {
val fname = it.getString(it.getColumnIndex(OpenableColumns.DISPLAY_NAME))
return if (fname.endsWith(".zip", true)) fname.dropLast(4) else fname
}
}
return null
}
}
@Suppress("DEPRECATION") // for ProgressDialog
@@ -1,5 +1,7 @@
package org.libsdl.app;
import android.hardware.usb.UsbDevice;
interface HIDDevice
{
public int getId();
@@ -9,6 +11,7 @@ interface HIDDevice
public int getVersion();
public String getManufacturerName();
public String getProductName();
public UsbDevice getDevice();
public boolean open();
public int sendFeatureReport(byte[] report);
public int sendOutputReport(byte[] report);
@@ -9,6 +9,7 @@ import android.bluetooth.BluetoothGattDescriptor;
import android.bluetooth.BluetoothManager;
import android.bluetooth.BluetoothProfile;
import android.bluetooth.BluetoothGattService;
import android.hardware.usb.UsbDevice;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
@@ -165,13 +166,13 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe
mHandler = new Handler(Looper.getMainLooper());
mGatt = connectGatt();
final HIDDeviceBLESteamController finalThis = this;
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
finalThis.checkConnectionForChromebookIssue();
}
}, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
// final HIDDeviceBLESteamController finalThis = this;
// mHandler.postDelayed(new Runnable() {
// @Override
// public void run() {
// finalThis.checkConnectionForChromebookIssue();
// }
// }, CHROMEBOOK_CONNECTION_CHECK_INTERVAL);
}
public String getIdentifier() {
@@ -469,7 +470,7 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe
// Only register controller with the native side once it has been fully configured
if (!isRegistered()) {
Log.v(TAG, "Registering Steam Controller with ID: " + getId());
mManager.HIDDeviceConnected(getId(), getIdentifier(), getVendorId(), getProductId(), getSerialNumber(), getVersion(), getManufacturerName(), getProductName(), 0);
mManager.HIDDeviceConnected(getId(), getIdentifier(), getVendorId(), getProductId(), getSerialNumber(), getVersion(), getManufacturerName(), getProductName(), 0, 0, 0, 0);
setRegistered();
}
}
@@ -563,6 +564,11 @@ class HIDDeviceBLESteamController extends BluetoothGattCallback implements HIDDe
return "Steam Controller";
}
@Override
public UsbDevice getDevice() {
return null;
}
@Override
public boolean open() {
return true;
@@ -19,8 +19,9 @@ import android.hardware.usb.*;
import android.os.Handler;
import android.os.Looper;
import java.util.HashMap;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
public class HIDDeviceManager {
@@ -50,7 +51,6 @@ public class HIDDeviceManager {
private Context mContext;
private HashMap<Integer, HIDDevice> mDevicesById = new HashMap<Integer, HIDDevice>();
private HashMap<UsbDevice, HIDDeviceUSB> mUSBDevices = new HashMap<UsbDevice, HIDDeviceUSB>();
private HashMap<BluetoothDevice, HIDDeviceBLESteamController> mBluetoothDevices = new HashMap<BluetoothDevice, HIDDeviceBLESteamController>();
private int mNextDeviceId = 0;
private SharedPreferences mSharedPreferences = null;
@@ -241,17 +241,7 @@ public class HIDDeviceManager {
}
}
private boolean isHIDDeviceUSB(UsbDevice usbDevice) {
for (int interface_number = 0; interface_number < usbDevice.getInterfaceCount(); ++interface_number) {
if (isHIDDeviceInterface(usbDevice, interface_number)) {
return true;
}
}
return false;
}
private boolean isHIDDeviceInterface(UsbDevice usbDevice, int interface_number) {
UsbInterface usbInterface = usbDevice.getInterface(interface_number);
private boolean isHIDDeviceInterface(UsbDevice usbDevice, UsbInterface usbInterface) {
if (usbInterface.getInterfaceClass() == UsbConstants.USB_CLASS_HID) {
return true;
}
@@ -331,45 +321,45 @@ public class HIDDeviceManager {
}
private void handleUsbDeviceAttached(UsbDevice usbDevice) {
if (isHIDDeviceUSB(usbDevice)) {
connectHIDDeviceUSB(usbDevice);
}
connectHIDDeviceUSB(usbDevice);
}
private void handleUsbDeviceDetached(UsbDevice usbDevice) {
HIDDeviceUSB device = mUSBDevices.get(usbDevice);
if (device == null)
return;
int id = device.getId();
mUSBDevices.remove(usbDevice);
mDevicesById.remove(id);
device.shutdown();
HIDDeviceDisconnected(id);
List<Integer> devices = new ArrayList<Integer>();
for (HIDDevice device : mDevicesById.values()) {
if (usbDevice.equals(device.getDevice())) {
devices.add(device.getId());
}
}
for (int id : devices) {
HIDDevice device = mDevicesById.get(id);
mDevicesById.remove(id);
device.shutdown();
HIDDeviceDisconnected(id);
}
}
private void handleUsbDevicePermission(UsbDevice usbDevice, boolean permission_granted) {
HIDDeviceUSB device = mUSBDevices.get(usbDevice);
if (device == null)
return;
boolean opened = false;
if (permission_granted) {
opened = device.open();
for (HIDDevice device : mDevicesById.values()) {
if (usbDevice.equals(device.getDevice())) {
boolean opened = false;
if (permission_granted) {
opened = device.open();
}
HIDDeviceOpenResult(device.getId(), opened);
}
}
HIDDeviceOpenResult(device.getId(), opened);
}
private void connectHIDDeviceUSB(UsbDevice usbDevice) {
synchronized (this) {
for (int interface_number = 0; interface_number < usbDevice.getInterfaceCount(); interface_number++) {
if (isHIDDeviceInterface(usbDevice, interface_number)) {
HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_number);
for (int interface_index = 0; interface_index < usbDevice.getInterfaceCount(); interface_index++) {
UsbInterface usbInterface = usbDevice.getInterface(interface_index);
if (isHIDDeviceInterface(usbDevice, usbInterface)) {
HIDDeviceUSB device = new HIDDeviceUSB(this, usbDevice, interface_index);
int id = device.getId();
mUSBDevices.put(usbDevice, device);
mDevicesById.put(id, device);
HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), interface_number);
break;
HIDDeviceConnected(id, device.getIdentifier(), device.getVendorId(), device.getProductId(), device.getSerialNumber(), device.getVersion(), device.getManufacturerName(), device.getProductName(), usbInterface.getId(), usbInterface.getInterfaceClass(), usbInterface.getInterfaceSubclass(), usbInterface.getInterfaceProtocol());
}
}
}
@@ -566,33 +556,27 @@ public class HIDDeviceManager {
//////////////////////////////////////////////////////////////////////////////////////////////////////
public boolean openDevice(int deviceID) {
Log.v(TAG, "openDevice deviceID=" + deviceID);
HIDDevice device = getDevice(deviceID);
if (device == null) {
HIDDeviceDisconnected(deviceID);
return false;
}
// Look to see if this is a USB device and we have permission to access it
for (HIDDeviceUSB device : mUSBDevices.values()) {
if (deviceID == device.getId()) {
UsbDevice usbDevice = device.getDevice();
if (!mUsbManager.hasPermission(usbDevice)) {
HIDDeviceOpenPending(deviceID);
try {
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), 0));
} catch (Exception e) {
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
HIDDeviceOpenResult(deviceID, false);
}
return false;
}
break;
UsbDevice usbDevice = device.getDevice();
if (usbDevice != null && !mUsbManager.hasPermission(usbDevice)) {
HIDDeviceOpenPending(deviceID);
try {
mUsbManager.requestPermission(usbDevice, PendingIntent.getBroadcast(mContext, 0, new Intent(HIDDeviceManager.ACTION_USB_PERMISSION), 0));
} catch (Exception e) {
Log.v(TAG, "Couldn't request permission for USB device " + usbDevice);
HIDDeviceOpenResult(deviceID, false);
}
return false;
}
try {
Log.v(TAG, "openDevice deviceID=" + deviceID);
HIDDevice device;
device = getDevice(deviceID);
if (device == null) {
HIDDeviceDisconnected(deviceID);
return false;
}
return device.open();
} catch (Exception e) {
Log.e(TAG, "Got exception: " + Log.getStackTraceString(e));
@@ -602,7 +586,7 @@ public class HIDDeviceManager {
public int sendOutputReport(int deviceID, byte[] report) {
try {
Log.v(TAG, "sendOutputReport deviceID=" + deviceID + " length=" + report.length);
//Log.v(TAG, "sendOutputReport deviceID=" + deviceID + " length=" + report.length);
HIDDevice device;
device = getDevice(deviceID);
if (device == null) {
@@ -619,7 +603,7 @@ public class HIDDeviceManager {
public int sendFeatureReport(int deviceID, byte[] report) {
try {
Log.v(TAG, "sendFeatureReport deviceID=" + deviceID + " length=" + report.length);
//Log.v(TAG, "sendFeatureReport deviceID=" + deviceID + " length=" + report.length);
HIDDevice device;
device = getDevice(deviceID);
if (device == null) {
@@ -636,7 +620,7 @@ public class HIDDeviceManager {
public boolean getFeatureReport(int deviceID, byte[] report) {
try {
Log.v(TAG, "getFeatureReport deviceID=" + deviceID);
//Log.v(TAG, "getFeatureReport deviceID=" + deviceID);
HIDDevice device;
device = getDevice(deviceID);
if (device == null) {
@@ -675,7 +659,7 @@ public class HIDDeviceManager {
private native void HIDDeviceRegisterCallback();
private native void HIDDeviceReleaseCallback();
native void HIDDeviceConnected(int deviceID, String identifier, int vendorId, int productId, String serial_number, int release_number, String manufacturer_string, String product_string, int interface_number);
native void HIDDeviceConnected(int deviceID, String identifier, int vendorId, int productId, String serial_number, int release_number, String manufacturer_string, String product_string, int interface_number, int interface_class, int interface_subclass, int interface_protocol);
native void HIDDeviceOpenPending(int deviceID);
native void HIDDeviceOpenResult(int deviceID, boolean opened);
native void HIDDeviceDisconnected(int deviceID);
@@ -11,6 +11,7 @@ class HIDDeviceUSB implements HIDDevice {
protected HIDDeviceManager mManager;
protected UsbDevice mDevice;
protected int mInterfaceIndex;
protected int mInterface;
protected int mDeviceId;
protected UsbDeviceConnection mConnection;
@@ -20,16 +21,17 @@ class HIDDeviceUSB implements HIDDevice {
protected boolean mRunning;
protected boolean mFrozen;
public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int interface_number) {
public HIDDeviceUSB(HIDDeviceManager manager, UsbDevice usbDevice, int interface_index) {
mManager = manager;
mDevice = usbDevice;
mInterface = interface_number;
mInterfaceIndex = interface_index;
mInterface = mDevice.getInterface(mInterfaceIndex).getId();
mDeviceId = manager.getDeviceIDForIdentifier(getIdentifier());
mRunning = false;
}
public String getIdentifier() {
return String.format("%s/%x/%x", mDevice.getDeviceName(), mDevice.getVendorId(), mDevice.getProductId());
return String.format("%s/%x/%x/%d", mDevice.getDeviceName(), mDevice.getVendorId(), mDevice.getProductId(), mInterfaceIndex);
}
@Override
@@ -88,6 +90,7 @@ class HIDDeviceUSB implements HIDDevice {
return result;
}
@Override
public UsbDevice getDevice() {
return mDevice;
}
@@ -104,19 +107,15 @@ class HIDDeviceUSB implements HIDDevice {
return false;
}
// Force claim all interfaces
for (int i = 0; i < mDevice.getInterfaceCount(); i++) {
UsbInterface iface = mDevice.getInterface(i);
if (!mConnection.claimInterface(iface, true)) {
Log.w(TAG, "Failed to claim interfaces on USB device " + getDeviceName());
close();
return false;
}
// Force claim our interface
UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
if (!mConnection.claimInterface(iface, true)) {
Log.w(TAG, "Failed to claim interfaces on USB device " + getDeviceName());
close();
return false;
}
// Find the endpoints
UsbInterface iface = mDevice.getInterface(mInterface);
for (int j = 0; j < iface.getEndpointCount(); j++) {
UsbEndpoint endpt = iface.getEndpoint(j);
switch (endpt.getDirection()) {
@@ -166,7 +165,7 @@ class HIDDeviceUSB implements HIDDevice {
UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_OUT,
0x09/*HID set_report*/,
(3/*HID feature*/ << 8) | report_number,
0,
mInterface,
report, offset, length,
1000/*timeout millis*/);
@@ -210,7 +209,7 @@ class HIDDeviceUSB implements HIDDevice {
UsbConstants.USB_TYPE_CLASS | 0x01 /*RECIPIENT_INTERFACE*/ | UsbConstants.USB_DIR_IN,
0x01/*HID get_report*/,
(3/*HID feature*/ << 8) | report_number,
0,
mInterface,
report, offset, length,
1000/*timeout millis*/);
@@ -250,10 +249,8 @@ class HIDDeviceUSB implements HIDDevice {
mInputThread = null;
}
if (mConnection != null) {
for (int i = 0; i < mDevice.getInterfaceCount(); i++) {
UsbInterface iface = mDevice.getInterface(i);
mConnection.releaseInterface(iface);
}
UsbInterface iface = mDevice.getInterface(mInterfaceIndex);
mConnection.releaseInterface(iface);
mConnection.close();
mConnection = null;
}
@@ -283,10 +283,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
return;
}
if (mHIDDeviceManager != null) {
mHIDDeviceManager.setFrozen(true);
}
SDLActivity.handleNativeState();
}
@@ -298,10 +294,6 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
return;
}
if (mHIDDeviceManager != null) {
mHIDDeviceManager.setFrozen(false);
}
SDLActivity.handleNativeState();
}
@@ -310,6 +302,10 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
protected void onPause() {
Log.v(TAG, "onPause()");
super.onPause();
if (mHIDDeviceManager != null) {
mHIDDeviceManager.setFrozen(true);
}
if (!mHasMultiWindow) {
pauseNativeThread();
}
@@ -319,6 +315,10 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
protected void onResume() {
Log.v(TAG, "onResume()");
super.onResume();
if (mHIDDeviceManager != null) {
mHIDDeviceManager.setFrozen(false);
}
if (!mHasMultiWindow) {
resumeNativeThread();
}
@@ -730,7 +730,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
}
}
if (bShouldWait) {
if (bShouldWait && (SDLActivity.getContext() != null)) {
// We'll wait for the surfaceChanged() method, which will notify us
// when called. That way, we know our current size is really the
// size we need, instead of grabbing a size that's still got
@@ -783,6 +783,7 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
public static native void nativeSetenv(String name, String value);
public static native void onNativeOrientationChanged(int orientation);
public static native void nativeAddTouch(int touchId, String name);
public static native void nativePermissionResult(int requestCode, boolean result);
/**
* This method is called by SDL using JNI.
@@ -817,39 +818,62 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
*/
public void setOrientationBis(int w, int h, boolean resizable, String hint)
{
int orientation = -1;
int orientation_landscape = -1;
int orientation_portrait = -1;
/* If set, hint "explicitly controls which UI orientations are allowed". */
if (hint.contains("LandscapeRight") && hint.contains("LandscapeLeft")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
} else if (hint.contains("LandscapeRight")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
} else if (hint.contains("LandscapeLeft")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
} else if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
} else if (hint.contains("Portrait")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
} else if (hint.contains("PortraitUpsideDown")) {
orientation = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
orientation_landscape = ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE;
}
/* no valid hint */
if (orientation == -1) {
if (hint.contains("Portrait") && hint.contains("PortraitUpsideDown")) {
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
} else if (hint.contains("Portrait")) {
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
} else if (hint.contains("PortraitUpsideDown")) {
orientation_portrait = ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT;
}
boolean is_landscape_allowed = (orientation_landscape == -1 ? false : true);
boolean is_portrait_allowed = (orientation_portrait == -1 ? false : true);
int req = -1; /* Requested orientation */
/* No valid hint, nothing is explicitly allowed */
if (!is_portrait_allowed && !is_landscape_allowed) {
if (resizable) {
/* no fixed orientation */
/* All orientations are allowed */
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
} else {
if (w > h) {
orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE;
/* Fixed window and nothing specified. Get orientation from w/h of created window */
req = (w > h ? ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE : ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
}
} else {
/* At least one orientation is allowed */
if (resizable) {
if (is_portrait_allowed && is_landscape_allowed) {
/* hint allows both landscape and portrait, promote to full sensor */
req = ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR;
} else {
orientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
/* Use the only one allowed "orientation" */
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
}
} else {
/* Fixed window and both orientations are allowed. Choose one. */
if (is_portrait_allowed && is_landscape_allowed) {
req = (w > h ? orientation_landscape : orientation_portrait);
} else {
/* Use the only one allowed "orientation" */
req = (is_landscape_allowed ? orientation_landscape : orientation_portrait);
}
}
}
Log.v("SDL", "setOrientation() orientation=" + orientation + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
if (orientation != -1) {
mSingleton.setRequestedOrientation(orientation);
}
Log.v("SDL", "setOrientation() requestedOrientation=" + req + " width=" + w +" height="+ h +" resizable=" + resizable + " hint=" + hint);
mSingleton.setRequestedOrientation(req);
}
/**
@@ -976,6 +1000,9 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.equals("X96-W")) {
return true;
}
if (Build.MANUFACTURER.equals("Amlogic") && Build.MODEL.startsWith("TV")) {
return true;
}
return false;
}
@@ -985,6 +1012,9 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
public static boolean isTablet() {
DisplayMetrics metrics = new DisplayMetrics();
Activity activity = (Activity)getContext();
if (activity == null) {
return false;
}
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
double dWidthInches = metrics.widthPixels / (double)metrics.xdpi;
@@ -1000,6 +1030,9 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
* This method is called by SDL using JNI.
*/
public static boolean isChromebook() {
if (getContext() == null) {
return false;
}
return getContext().getPackageManager().hasSystemFeature("org.chromium.arc.device_management");
}
@@ -1571,6 +1604,32 @@ public class SDLActivity extends Activity implements View.OnSystemUiVisibilityCh
}
return true;
}
/**
* This method is called by SDL using JNI.
*/
public static void requestPermission(String permission, int requestCode) {
if (Build.VERSION.SDK_INT < 23) {
nativePermissionResult(requestCode, true);
return;
}
Activity activity = (Activity)getContext();
if (activity.checkSelfPermission(permission) != PackageManager.PERMISSION_GRANTED) {
activity.requestPermissions(new String[]{permission}, requestCode);
} else {
nativePermissionResult(requestCode, true);
}
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
nativePermissionResult(requestCode, true);
} else {
nativePermissionResult(requestCode, false);
}
}
}
/**
@@ -1596,7 +1655,7 @@ class SDLMain implements Runnable {
Log.v("SDL", "Finished main function");
if (SDLActivity.mSingleton.isFinishing()) {
if (SDLActivity.mSingleton == null || SDLActivity.mSingleton.isFinishing()) {
// Activity is already being destroyed
} else {
// Let's finish the Activity
+1
View File
@@ -33,6 +33,7 @@
#cmakedefine QUIET_MIDI @QUIET_MIDI@
#cmakedefine HAVE_GETLOGIN @HAVE_GETLOGIN@
#cmakedefine HAVE_JPEG @HAVE_JPEG@
#cmakedefine HAVE_MMAP @HAVE_MMAP@
#cmakedefine HAVE_SDLJOY @HAVE_SDLJOY@
#cmakedefine HAVE_SIGACTION @HAVE_SIGACTION@
+1 -1
View File
@@ -27,7 +27,7 @@
Midi : MIDIデータ
Data : その他データ
Save : セーブデータ
Resouce : リソースファイル(マウスカーソル形状)
Resource : リソースファイル(マウスカーソル形状)
Ain : DLL とその関数の情報のかかれた System39.ain
BGM : BGMデータ(エスカレイヤー以降のBGMデータファイル)
WAI : PCMデータの追加情報 (mixer channel 情報等)
-4
View File
@@ -225,10 +225,6 @@
-devjoy name : joystick のデバイス名を name にします
-savekanji # : ゲーム内でファイル名を指定してセーブデータを記録するとき、
日本語のファイル名を UTF-8 と SJIS のどちらで保存するかを
指定します。(# は 0 または 1 ... 0:utf-8, 1:sjis)
-version : バージョン情報を表示します。
-fullscreen : フルスクリーンでゲームを実行します。
+4 -4
View File
@@ -10,12 +10,12 @@ find_program(PYFTSUBSET_FOUND pyftsubset)
if (PYFTSUBSET_FOUND)
add_custom_target(fonts
pyftsubset SourceHanSerifJP-Regular.otf --text-file=uchars.txt --output-file=${CMAKE_CURRENT_SOURCE_DIR}/mincho.otf
DEPENDS uchars.txt SourceHanSerifJP-Regular.otf)
pyftsubset SourceHanSerifJP-Regular.otf --text-file=uchars.txt --output-file=${CMAKE_CURRENT_SOURCE_DIR}/mincho.otf
DEPENDS uchars.txt SourceHanSerifJP-Regular.otf)
add_custom_command(OUTPUT uchars.txt
COMMAND uchars > uchars.txt)
COMMAND uchars > uchars.txt)
add_custom_command(OUTPUT SourceHanSerifJP-Regular.otf
COMMAND wget -O SourceHanSerifJP-Regular.otf https://github.com/adobe-fonts/source-han-serif/blob/release/SubsetOTF/JP/SourceHanSerifJP-Regular.otf?raw=true)
COMMAND wget -O SourceHanSerifJP-Regular.otf https://github.com/adobe-fonts/source-han-serif/blob/release/SubsetOTF/JP/SourceHanSerifJP-Regular.otf?raw=true)
endif()
+21
View File
@@ -0,0 +1,21 @@
#!/bin/sh
# To use this script in MSYS2 shell, install mingw-w64-x86_64-nsis and
# mingw-w64-x86_64-ntldd-git packages.
if [ $# -ne 2 ]; then
echo 'Usage: make-installer.sh <build-dir> <nsi>'
exit 1
fi
builddir=$1
nsi=$2
echo 'dlls.nsi:'
ntldd -R $builddir/src/xsystem35.exe |perl -ne 'print "File \"$1\"\n" if /=> (.*) \(/' |grep mingw |tee $builddir/dlls.nsi
echo
echo 'dlls-uninstall.nsi:'
sed 's/^File ".*\\/Delete "$INSTDIR\\/' $builddir/dlls.nsi |tee $builddir/dlls-uninstall.nsi
echo
makensis -INPUTCHARSET UTF8 -DBUILDDIR="$builddir" "$nsi"
+5
View File
@@ -0,0 +1,5 @@
Unicode true
Name xsystem35
OutFile xsystem35-32bit.exe
InstallDir $PROGRAMFILES32\xsystem35
!include xsystem35.nsi
+5
View File
@@ -0,0 +1,5 @@
Unicode true
Name xsystem35
OutFile xsystem35-64bit.exe
InstallDir $PROGRAMFILES64\xsystem35
!include xsystem35.nsi
+77
View File
@@ -0,0 +1,77 @@
ManifestDPIAware true
SetCompressor /SOLID lzma
LoadLanguageFile "${NSISDIR}\Contrib\Language files\English.nlf"
LoadLanguageFile "${NSISDIR}\Contrib\Language files\Japanese.nlf"
Page license
Page directory
Page components
Page instfiles
UninstPage uninstConfirm
UninstPage instfiles
LicenseData ..\COPYING
!define SHCNE_ASSOCCHANGED 0x08000000
!define SHCNF_IDLIST 0
Function RefreshShellIcons
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)'
FunctionEnd
Section
SetOutPath $INSTDIR
FILE ${BUILDDIR}\src\xsystem35.exe
!include ${BUILDDIR}\dlls.nsi
SetOutPath $INSTDIR\fonts
FILE /x CMakeLists.txt ..\fonts\*.*
WriteUninstaller $INSTDIR\uninstall.exe
WriteRegStr HKLM "Software\Kichikuou\xsystem35\profile" "ttfont_gothic" "$INSTDIR\fonts\MTLc3m.ttf"
WriteRegStr HKLM "Software\Kichikuou\xsystem35\profile" "ttfont_mincho" "$INSTDIR\fonts\mincho.otf"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xsystem35" "DisplayName" "xsystem35 (remove only)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xsystem35" "UninstallString" '"$INSTDIR\uninstall.exe"'
SectionEnd
LangString FileAssociation ${LANG_ENGLISH} "Associate with .ALD file type"
LangString FileAssociation ${LANG_JAPANESE} ".ALD ファイルに関連付け"
Section "$(FileAssociation)"
WriteRegStr HKCR ".ald" "" "System35Archive"
WriteRegStr HKCR "System35Archive" "" "AliceSoft System 3.x archive"
WriteRegStr HKCR "System35Archive\DefaultIcon" "" "$INSTDIR\xsystem35.exe,0"
WriteRegStr HKCR "System35Archive\shell\open\command" "" '"$INSTDIR\xsystem35.exe" "%1"'
Call RefreshShellIcons
SectionEnd
LangString DesktopIcon ${LANG_ENGLISH} "Create Desktop icon"
LangString DesktopIcon ${LANG_JAPANESE} "デスクトップショートカットを作成"
Section "$(DesktopIcon)"
CreateShortcut $DESKTOP\xsystem35.lnk $INSTDIR\xsystem35.exe
SectionEnd
LangString StartMenu ${LANG_ENGLISH} "Create Start menu entry"
LangString StartMenu ${LANG_JAPANESE} "スタートメニューに登録"
Section "$(StartMenu)"
CreateDirectory $SMPROGRAMS\xsystem35
CreateShortcut $SMPROGRAMS\xsystem35\xsystem35.lnk $INSTDIR\xsystem35.exe
CreateShortcut $SMPROGRAMS\xsystem35\uninstall.lnk $INSTDIR\uninstall.exe
SectionEnd
Section "Uninstall"
Delete $DESKTOP\xsystem35.lnk
RMDir /r $SMPROGRAMS\xsystem35
DeleteRegKey HKCR ".ald"
DeleteRegKey HKCR "System35Archive"
DeleteRegKey HKLM "Software\Kichikuou\xsystem35"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\xsystem35"
RMDir /r $INSTDIR\fonts
Delete $INSTDIR\uninstall.exe
Delete $INSTDIR\xsystem35.exe
!include ${BUILDDIR}\dlls-uninstall.nsi
RMDir $INSTDIR
SectionEnd
+11 -3
View File
@@ -5,9 +5,10 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
void Init() {
static void Init() {
int p1 = getCaliValue(); /* ISys3x */
int p2 = getCaliValue(); /* IWinMsg */
int p3 = getCaliValue(); /* ITimer */
@@ -18,17 +19,24 @@ void Init() {
DEBUG_COMMAND_YET("AliceLogo.Init %d,%d,%d,%p:\n", p1, p2, p3, var);
}
void SetWaveNum() {
static void SetWaveNum() {
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("AliceLogo.SetWaveNum %d,%d:\n", p1, p2);
}
void Run() {
static void Run() {
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("AliceLogo.Run %d,%d:\n", p1, p2);
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"Run", Run},
{"SetWaveNum", SetWaveNum},
};
const Module module_AliceLogo = {"AliceLogo", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(AliceLogo MODULE AliceLogo.c)
install(TARGETS AliceLogo DESTINATION lib/xsystem35)
+87 -30
View File
@@ -1,33 +1,90 @@
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
if (APPLE)
add_link_options("SHELL:-undefined dynamic_lookup")
endif()
include_directories(${CMAKE_SOURCE_DIR}/src)
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../src)
add_subdirectory(lib)
add_subdirectory(AliceLogo)
add_subdirectory(Confirm)
add_subdirectory(Gpx)
add_subdirectory(Math)
add_subdirectory(MsgSkip)
add_subdirectory(NIGHTDLL)
add_subdirectory(NightDemonDemo)
add_subdirectory(RandMT)
add_subdirectory(SACT)
add_subdirectory(ShArray)
add_subdirectory(ShCalc)
add_subdirectory(ShGraph)
add_subdirectory(ShPort)
add_subdirectory(ShSound)
add_subdirectory(ShString)
add_subdirectory(dDemo)
add_subdirectory(eDemo)
add_subdirectory(eeDemo)
add_subdirectory(nDEMO)
add_subdirectory(nDEMOE)
add_subdirectory(oDEMO)
add_subdirectory(oujimisc)
add_subdirectory(tDemo)
add_library(modules STATIC
modules.c
AliceLogo/AliceLogo.c
Confirm/Confirm.c
Gpx/Gpx.c
Gpx/effectcopy.c
Math/Math.c
MsgSkip/MsgSkip.c
NIGHTDLL/NIGHTDLL.c
NIGHTDLL/nt_scenario.c
NIGHTDLL/sactcg.c
NIGHTDLL/sactstring.c
NIGHTDLL/sprite.c
NIGHTDLL/sprite_draw.c
NIGHTDLL/sprite_update.c
NIGHTDLL/sprite_eupdate.c
NIGHTDLL/nt_event.c
NIGHTDLL/nt_msg.c
NIGHTDLL/nt_sel.c
NIGHTDLL/nt_graph.c
NIGHTDLL/nt_sound.c
NightDemonDemo/NightDemonDemo.c
RandMT/RandMT.c
SACT/SACT.c
SACT/sactcg.c
SACT/sactsound.c
SACT/sactbgm.c
SACT/sacttimer.c
SACT/sactstring.c
SACT/sactcrypto.c
SACT/sactchart.c
SACT/sactamask.c
SACT/sactlog.c
SACT/sprite.c
SACT/sprite_event.c
SACT/sprite_tevent.c
SACT/sprite_move.c
SACT/sprite_anime.c
SACT/sprite_get.c
SACT/sprite_put.c
SACT/sprite_switch.c
SACT/sprite_sel.c
SACT/sprite_msg.c
SACT/sprite_draw.c
SACT/sprite_update.c
SACT/sprite_eupdate.c
SACT/sprite_quake.c
SACT/sprite_keywait.c
SACT/screen_quake.c
SACT/sprite_xmenu.c
ShArray/ShArray.c
ShCalc/ShCalc.c
ShGraph/ShGraph.c
ShPort/ShPort.c
ShSound/ShSound.c
ShString/ShString.c
dDemo/dDemo.c
eDemo/eDemo.c
eeDemo/eeDemo.c
nDEMO/nDEMO.c
nDEMOE/nDEMOE.c
oDEMO/oDEMO.c
oujimisc/oujimisc.c
tDemo/tDemo.c
)
target_include_directories(modules PUBLIC .)
target_compile_options(modules PRIVATE -Wno-pointer-sign)
target_link_libraries(modules PRIVATE graph alk drawtext list)
if (SDL2MIXER_FOUND)
if (ANDROID)
target_link_libraries(modules PRIVATE SDL2 SDL2_mixer)
else()
target_link_libraries(modules PRIVATE PkgConfig::SDL2MIXER)
endif()
endif()
if (HAVE_JPEG)
target_sources(modules PRIVATE
NightDemonDemo/ndd.c
NightDemonDemo/jpeg2surface.c
)
target_link_libraries(modules PRIVATE JPEG::JPEG)
endif()
-3
View File
@@ -1,3 +0,0 @@
add_library(Confirm MODULE Confirm.c)
install(TARGETS Confirm DESTINATION lib/xsystem35)
+14 -4
View File
@@ -5,14 +5,15 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
void Init() {
static void Init() {
int p1 = getCaliValue();
DEBUG_COMMAND_YET("Confirm.Init %d:\n", p1);
}
void ExistKeyFile() {
static void ExistKeyFile() {
char *p1 = sys_getString(0);
int *p2 = getCaliVariable();
int *var = getCaliVariable();
@@ -22,7 +23,7 @@ void ExistKeyFile() {
DEBUG_COMMAND_YET("Confirm.ExistKeyFile %s,%p,%p:\n",p1, p2, var);
}
void CheckProtectFile() {
static void CheckProtectFile() {
char *p1 = sys_getString(0);
int *p2 = getCaliVariable();
int *var = getCaliVariable();
@@ -32,7 +33,7 @@ void CheckProtectFile() {
DEBUG_COMMAND_YET("Confirm.CheckProtectFile %s,%p,%p:\n", p1,p2,var);
}
void CreateKeyFile() {
static void CreateKeyFile() {
char *p1 = sys_getString(0);
int *p2 = getCaliVariable();
int *var = getCaliVariable();
@@ -41,3 +42,12 @@ void CreateKeyFile() {
DEBUG_COMMAND_YET("Confirm.CreateKeyFile %s,%p,%p:\n", p1,p2,var);
}
static const ModuleFunc functions[] = {
{"CheckProtectFile", CheckProtectFile},
{"CreateKeyFile", CreateKeyFile},
{"ExistKeyFile", ExistKeyFile},
{"Init", Init},
};
const Module module_Confirm = {"Confirm", functions, sizeof(functions) / sizeof(ModuleFunc)};
-5
View File
@@ -1,5 +0,0 @@
add_library(Gpx MODULE Gpx.c effectcopy.c)
target_link_libraries(Gpx PRIVATE graph)
install(TARGETS Gpx DESTINATION lib/xsystem35)
+112 -54
View File
@@ -33,6 +33,7 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "ags.h"
#include "cg.h"
@@ -125,7 +126,7 @@ static int load_cg_main(int no) {
return sf->no;
}
void Init() {
static void Init() {
/*
Gpx.Init(): Gpx モジュールの初期化
*/
@@ -140,7 +141,7 @@ void Init() {
DEBUG_COMMAND("Gpx.Init %d:\n", p1);
}
void Create() {
static void Create() {
/*
Gpx.Create(): 新規 surface の作成(PixelとAlphaマップの両方)
@@ -171,7 +172,7 @@ void Create() {
DEBUG_COMMAND("Gpx.Create %p,%d,%d,%d:\n", var, width, height, bpp);
}
void CreatePixelOnly() {
static void CreatePixelOnly() {
/*
Gpx.CreatePixelOnly(): 新規 surface の作成(Pixelのみ)
@@ -199,7 +200,7 @@ void CreatePixelOnly() {
DEBUG_COMMAND("Gpx.CreatePixelOnly %d,%d,%d,%d:\n", *var, width, height, bpp);
}
void CreateAMapOnly() {
static void CreateAMapOnly() {
/*
Gpx.CreateAMapOnly(): 新規 surface の作成(AlphaMapのみ)
@@ -225,7 +226,7 @@ void CreateAMapOnly() {
DEBUG_COMMAND("Gpx.CreateAMapOnly %p,%d,%d:\n", var, width, height);
}
void IsSurface() {
static void IsSurface() {
/*
Gpx.IsSurface(): 指定の番号の surface が surface かどうか
(pixel と alpha の両方のデータを持つ)を調べる
@@ -248,7 +249,7 @@ void IsSurface() {
DEBUG_COMMAND("Gpx.IsSurface %d,%p:\n", p1, var);
}
void IsPixel() {
static void IsPixel() {
/*
Gpx.IsPixel(): 指定の番号の surface が pixelデータかどうかを調べる
@@ -270,7 +271,7 @@ void IsPixel() {
DEBUG_COMMAND("Gpx.IsPixel %d,%p:\n", p1, var);
}
void IsAlpha() {
static void IsAlpha() {
/*
Gpx.IsAlpha(): 指定の番号の surface が alpha mapかどうかを調べる
@@ -292,7 +293,7 @@ void IsAlpha() {
DEBUG_COMMAND("Gpx.IsAlpha %d,%p:\n", p1, var);
}
void GetWidth() {
static void GetWidth() {
/*
Gpx.GetWidth(): 指定の番号の surface の幅を取得する
@@ -314,7 +315,7 @@ void GetWidth() {
DEBUG_COMMAND("Gpx.GetWidth %d,%d:\n", p1, *var);
}
void GetHeight() {
static void GetHeight() {
/*
Gpx.GetWidth(): 指定の番号の surface の高さを取得する
@@ -336,13 +337,13 @@ void GetHeight() {
DEBUG_COMMAND("Gpx.GetHeight %d,%d:\n", p1, *var);
}
void GetCreatedSurface() { /* not used ? */
static void GetCreatedSurface() { /* not used ? */
int *var = getCaliVariable();
DEBUG_COMMAND_YET("Gpx.GetCreatedSurface %p:\n", var);
}
void LoadCG() {
static void LoadCG() {
/*
Gpx.LoadCG(): 新規 surface を作成してその上に CG を load
@@ -357,21 +358,21 @@ void LoadCG() {
DEBUG_COMMAND("Gpx.LoadCG %p,%d (%d):\n", var, p1, *var);
}
void GetCGPosX() { /* not useed ? */
static void GetCGPosX() { /* not useed ? */
int *var = getCaliVariable();
int p1 = getCaliValue();
DEBUG_COMMAND_YET("Gpx.GetCgPosX %p,%d:\n", var, p1);
}
void GetCGPosY() { /* not useed ? */
static void GetCGPosY() { /* not useed ? */
int *var = getCaliVariable();
int p1 = getCaliValue();
DEBUG_COMMAND_YET("Gpx.GetCgPosY %p,%d:\n", var, p1);
}
void Free() {
static void Free() {
/*
Gpx.Free(): 指定の surface を開放する
@@ -386,7 +387,7 @@ void Free() {
}
}
void FreeAll() {
static void FreeAll() {
/*
Gpx.FreeAll(): 全ての surface を開放する
*/
@@ -395,7 +396,7 @@ void FreeAll() {
DEBUG_COMMAND("Gpx.FreeAll:\n");
}
void Copy() {
static void Copy() {
/*
Gpx.Copy(): 指定 surface 領域のコピー
@@ -426,7 +427,7 @@ void Copy() {
gr_copy(dst, dx, dy, src, sx, sy, sw, sh);
}
void CopyBright() { /* not used ? */
static void CopyBright() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -440,7 +441,7 @@ void CopyBright() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.CopyBright %d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
void CopyAMap() {
static void CopyAMap() {
/*
Gpx.CopyAMap(): 指定 surface の alpha map 領域のコピー
@@ -471,7 +472,7 @@ void CopyAMap() {
gr_copy_alpha_map(dst, dx, dy, src, sx, sy, sw, sh);
}
void Blend() { /* not used ? */
static void Blend() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -485,7 +486,7 @@ void Blend() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.Blend %d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
void BlendSrcBright() { /* not used ? */
static void BlendSrcBright() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -500,7 +501,7 @@ void BlendSrcBright() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendSrcBright %d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
}
void BlendAddSatur() { /* not used ? */
static void BlendAddSatur() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -513,7 +514,7 @@ void BlendAddSatur() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAddStatur %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void BlendAMap() {
static void BlendAMap() {
/*
Gpx.BlendAMap(): 転送元の alpha map を参照して 指定領域を alpha blend
@@ -544,7 +545,7 @@ void BlendAMap() {
gr_blend_alpha_map(dst, dx, dy, src, sx, sy, sw, sh);
}
void BlendAMapSrcOnly() { /* not used ? */
static void BlendAMapSrcOnly() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -557,7 +558,7 @@ void BlendAMapSrcOnly() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapSrcOnly %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void BlendAMapColor() { /* not used ? */
static void BlendAMapColor() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -573,7 +574,7 @@ void BlendAMapColor() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapColor %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
}
void BlendAMapColorAlpha() { /* not used ? */
static void BlendAMapColorAlpha() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -590,7 +591,7 @@ void BlendAMapColorAlpha() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapColorAlpha %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
}
void BlendAMapAlpha() { /* not used ? */
static void BlendAMapAlpha() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -604,7 +605,7 @@ void BlendAMapAlpha() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapAlpha %d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
void BlendAMapBright() { /* not used ? */
static void BlendAMapBright() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -618,7 +619,7 @@ void BlendAMapBright() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapBright %d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
void BlendAMapAlphaSrcBright() { /* not used ? */
static void BlendAMapAlphaSrcBright() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -633,7 +634,7 @@ void BlendAMapAlphaSrcBright() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendAMapBright %d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10);
}
void BlendUseAMapColor() { /* not used ? */
static void BlendUseAMapColor() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -650,7 +651,7 @@ void BlendUseAMapColor() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendUseAMapColor %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
}
void BlendScreen() { /* not used ? */
static void BlendScreen() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -663,7 +664,7 @@ void BlendScreen() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendScreen %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void BlendMultiply() { /* not used ? */
static void BlendMultiply() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -676,7 +677,7 @@ void BlendMultiply() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendMultiply %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void BlendScreenAlpha() { /* not used ? */
static void BlendScreenAlpha() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -690,7 +691,7 @@ void BlendScreenAlpha() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.BlendScreenAlpha %d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9);
}
void Fill() {
static void Fill() {
/*
Gpx.Fill(): 指定領域の塗りつぶし
@@ -720,7 +721,7 @@ void Fill() {
gr_fill(dst, dx, dy, dw, dh, r, g, b);
}
void FillAlphaColor() { /* not used ? */
static void FillAlphaColor() { /* not used ? */
int ds = getCaliValue();
int dx = getCaliValue();
int dy = getCaliValue();
@@ -739,7 +740,7 @@ void FillAlphaColor() { /* not used ? */
gr_fill_alpha_color(dst, dx, dy, dw, dh, r, g, b, lv);
}
void FillAMap() { /* not used ? */
static void FillAMap() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -750,7 +751,7 @@ void FillAMap() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.FillAMap %d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6);
}
void FillAMapOverBorder() {
static void FillAMapOverBorder() {
/*
Gpx.FillAMapOverBorder(): 矩形領域中の 閾値以上の alpha 値を持つ
ものを指定の alpha 値に置き換え。
@@ -772,13 +773,13 @@ void FillAMapOverBorder() {
int d = getCaliValue();
surface_t *dst;
DEBUG_COMMAND("Gpx.BlendAMapOverBorder %d,%d,%d,%d,%d,%d,%d:\n", ds, dx, dy, dw, dh, s, d);
DEBUG_COMMAND("Gpx.FillAMapOverBorder %d,%d,%d,%d,%d,%d,%d:\n", ds, dx, dy, dw, dh, s, d);
dst = sf_get(ds);
gr_fill_alpha_overborder(dst, dx, dy, dw, dh, s, d);
}
void FillAMapUnderBorder() { /* not used ? */
static void FillAMapUnderBorder() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -787,10 +788,10 @@ void FillAMapUnderBorder() { /* not used ? */
int p6 = getCaliValue();
int p7 = getCaliValue();
DEBUG_COMMAND_YET("Gpx.BlendAMapUnderBorder %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7);
DEBUG_COMMAND_YET("Gpx.FillAMapUnderBorder %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7);
}
void SaturDP_DPxSA() { /* not used ? */
static void SaturDP_DPxSA() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -803,7 +804,7 @@ void SaturDP_DPxSA() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.SaturDP_DPxSA %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void ScreenDA_DAxSA() { /* not used ? */
static void ScreenDA_DAxSA() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -816,7 +817,7 @@ void ScreenDA_DAxSA() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.ScreenDA_DAxSA %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void AddDA_DAxSA() { /* not used ? */
static void AddDA_DAxSA() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -829,7 +830,7 @@ void AddDA_DAxSA() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.AddDA_DAxSA %d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8);
}
void SpriteCopyAMap() {
static void SpriteCopyAMap() {
/*
Gpx.SpriteCopyAMap(): 指定の alpha 値以外の領域の alpha map コピー
@@ -863,7 +864,7 @@ void SpriteCopyAMap() {
}
void BrightDestOnly() {
static void BrightDestOnly() {
/*
Gpx.BrightDestOnly(): 指定領域の明るさを設定
@@ -890,7 +891,7 @@ void BrightDestOnly() {
gr_bright_dst_only(dst, dx, dy, dw, dh, r);
}
void CopyTextureWrap() { /* not used ? */
static void CopyTextureWrap() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -907,7 +908,7 @@ void CopyTextureWrap() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.CopyTextureWrap %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
}
void CopyTextureWrapAlpha() { /* not used ? */
static void CopyTextureWrapAlpha() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -925,7 +926,7 @@ void CopyTextureWrapAlpha() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.CopyTextureWrapAlpha %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12, p13);
}
void CopyStretch() {
static void CopyStretch() {
/*
Gpx.CopyStretch(): 拡大・縮小
@@ -959,7 +960,7 @@ void CopyStretch() {
gr_copy_stretch(dst, dx, dy, dw, dh, src, sx, sy, sw, sh);
}
void CopyStretchBlend() { /* not used ? */
static void CopyStretchBlend() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -975,7 +976,7 @@ void CopyStretchBlend() { /* not used ? */
DEBUG_COMMAND_YET("Gpx.CopyStretchBlend %d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11);
}
void CopyStretchBlendAMap() {
static void CopyStretchBlendAMap() {
/*
Gpx.CopyStretchBlendAMap(): 拡大・縮小しながら alpha blend
@@ -1010,7 +1011,7 @@ void CopyStretchBlendAMap() {
gr_copy_stretch_blend_alpha_map(dst, dx, dy, dw, dh, src, sx, sy, sw, sh);
}
void StretchBlendScreen2x2() { /* not used ? */
static void StretchBlendScreen2x2() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -1024,7 +1025,7 @@ void StretchBlendScreen2x2() { /* not used ? */
}
void StretchBlendScreen2x2WDS() {
static void StretchBlendScreen2x2WDS() {
/*
Gpx.StretchBlenfScreen2x2WDS(): 2枚の surface を縦横2倍に拡大しつつ
alpha blend (飽和加算)する
@@ -1063,7 +1064,7 @@ void StretchBlendScreen2x2WDS() {
gr_blend_alpha_wds_stretch2x2(src1, sx1, sy1, src2, sx2, sy2, sw, sh, dst, dx, dy);
}
void BlendScreenWDS() {
static void BlendScreenWDS() {
/*
Gpx.BlendScreenWDS(): 飽和加算 alpha blend
@@ -1101,7 +1102,7 @@ void BlendScreenWDS() {
gr_blend_alpha_wds(src1, sx1, sy1, src2, sx2, sy2, sw, sh, dst, dx, dy);
}
void EffectCopy() {
static void EffectCopy() {
/*
Gpx.EffectCopy(): 効果つき領域コピー
@@ -1169,8 +1170,65 @@ void EffectCopy() {
}
void SetClickCancelFlag() { /* not used ? */
static void SetClickCancelFlag() { /* not used ? */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("Gpx.SetClikCancelFlag %d:\n", p1);
}
static const ModuleFunc functions[] = {
{"AddDA_DAxSA", AddDA_DAxSA},
{"Blend", Blend},
{"BlendAMap", BlendAMap},
{"BlendAMapAlpha", BlendAMapAlpha},
{"BlendAMapAlphaSrcBright", BlendAMapAlphaSrcBright},
{"BlendAMapBright", BlendAMapBright},
{"BlendAMapColor", BlendAMapColor},
{"BlendAMapColorAlpha", BlendAMapColorAlpha},
{"BlendAMapSrcOnly", BlendAMapSrcOnly},
{"BlendAddSatur", BlendAddSatur},
{"BlendMultiply", BlendMultiply},
{"BlendScreen", BlendScreen},
{"BlendScreenAlpha", BlendScreenAlpha},
{"BlendScreenWDS", BlendScreenWDS},
{"BlendSrcBright", BlendSrcBright},
{"BlendUseAMapColor", BlendUseAMapColor},
{"BrightDestOnly", BrightDestOnly},
{"Copy", Copy},
{"CopyAMap", CopyAMap},
{"CopyBright", CopyBright},
{"CopyStretch", CopyStretch},
{"CopyStretchBlend", CopyStretchBlend},
{"CopyStretchBlendAMap", CopyStretchBlendAMap},
{"CopyTextureWrap", CopyTextureWrap},
{"CopyTextureWrapAlpha", CopyTextureWrapAlpha},
{"Create", Create},
{"CreateAMapOnly", CreateAMapOnly},
{"CreatePixelOnly", CreatePixelOnly},
{"EffectCopy", EffectCopy},
{"Fill", Fill},
{"FillAMap", FillAMap},
{"FillAMapOverBorder", FillAMapOverBorder},
{"FillAMapUnderBorder", FillAMapUnderBorder},
{"FillAlphaColor", FillAlphaColor},
{"Free", Free},
{"FreeAll", FreeAll},
{"GetCGPosX", GetCGPosX},
{"GetCGPosY", GetCGPosY},
{"GetCreatedSurface", GetCreatedSurface},
{"GetHeight", GetHeight},
{"GetWidth", GetWidth},
{"Init", Init},
{"IsAlpha", IsAlpha},
{"IsPixel", IsPixel},
{"IsSurface", IsSurface},
{"LoadCG", LoadCG},
{"SaturDP_DPxSA", SaturDP_DPxSA},
{"ScreenDA_DAxSA", ScreenDA_DAxSA},
{"SetClickCancelFlag", SetClickCancelFlag},
{"SpriteCopyAMap", SpriteCopyAMap},
{"StretchBlendScreen2x2", StretchBlendScreen2x2},
{"StretchBlendScreen2x2WDS", StretchBlendScreen2x2WDS},
};
const Module module_Gpx = {"Gpx", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(Math MODULE Math.c)
install(TARGETS Math DESTINATION lib/xsystem35)
+14 -4
View File
@@ -28,12 +28,13 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "randMT.h"
static int numtblmax;
void RandMTInit() {
static void RandMTInit() {
/*
(おそらく Mersenne Twister使用の) 乱数初期化
@@ -44,7 +45,7 @@ void RandMTInit() {
DEBUG_COMMAND("Math.RandMTInit %d:\n", p1);
}
void RandMTGet() {
static void RandMTGet() {
/*
1 から num までの乱数を生成
@@ -63,7 +64,7 @@ void RandMTGet() {
DEBUG_COMMAND("Math.RandMTGet %d,%p:\n", num, var);
}
void RandMTMakeNumTable() {
static void RandMTMakeNumTable() {
/*
乱数テーブルの最大値を設定
@@ -76,7 +77,7 @@ void RandMTMakeNumTable() {
DEBUG_COMMAND("Math.RandMTMakeNumTable %d:\n", p1);
}
void RandMTGetNumTable() {
static void RandMTGetNumTable() {
/*
乱数テーブルから値を取得
@@ -88,3 +89,12 @@ void RandMTGetNumTable() {
DEBUG_COMMAND("Math.RandMTGetNumTable %d:\n", *var);
}
static const ModuleFunc functions[] = {
{"RandMTGet", RandMTGet},
{"RandMTGetNumTable", RandMTGetNumTable},
{"RandMTInit", RandMTInit},
{"RandMTMakeNumTable", RandMTMakeNumTable},
};
const Module module_Math = {"Math", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(MsgSkip MODULE MsgSkip.c)
install(TARGETS MsgSkip DESTINATION lib/xsystem35)
+21 -8
View File
@@ -6,12 +6,13 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "message.h"
static char *msgskipfile;
void Init() {
static void Init() {
int *p1 = getCaliVariable();
int p2 = getCaliValue(); /* ISys3x */
int p3 = getCaliValue();
@@ -21,7 +22,7 @@ void Init() {
DEBUG_COMMAND_YET("MsgSkip.Init %p,%d,%d,%d:\n", p1, p2, p3, p4);
}
void Start() {
static void Start() {
int *p1 = getCaliVariable();
int p2 = getCaliValue();
@@ -30,40 +31,52 @@ void Start() {
DEBUG_COMMAND_YET("MsgSkip.Start %p,%d:\n", p1, p2);
}
void SetValid() {
static void SetValid() {
int p1 = getCaliValue();
DEBUG_COMMAND("MsgSkip.SetValid %d:\n", p1);
}
void GetValid() {
static void GetValid() {
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("MsgSkip.GetValid %p:\n", p1);
}
void SetAction() {
static void SetAction() {
int p1 = getCaliValue();
DEBUG_COMMAND("MsgSkip.SetAcion %d:\n", p1);
}
void GetAction() {
static void GetAction() {
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("MsgSkip.GetAcion %p:\n", p1);
}
void PushStr() {
static void PushStr() {
int p1 = getCaliValue();
DEBUG_COMMAND_YET("MsgSkip.PushStr %d:\n", p1);
}
void PopStr() {
static void PopStr() {
int p1 = getCaliValue();
DEBUG_COMMAND_YET("MsgSkip.PopStr %d:\n", p1);
}
static const ModuleFunc functions[] = {
{"GetAction", GetAction},
{"GetValid", GetValid},
{"Init", Init},
{"PopStr", PopStr},
{"PushStr", PushStr},
{"SetAction", SetAction},
{"SetValid", SetValid},
{"Start", Start},
};
const Module module_MsgSkip = {"MsgSkip", functions, sizeof(functions) / sizeof(ModuleFunc)};
-21
View File
@@ -1,21 +0,0 @@
add_library(NIGHTDLL MODULE
NIGHTDLL.c
nt_scenario.c
sactcg.c
sactstring.c
sprite.c
sprite_draw.c
sprite_update.c
sprite_eupdate.c
nt_event.c
nt_msg.c
nt_sel.c
nt_graph.c
nt_sound.c
)
target_compile_options(NIGHTDLL PRIVATE -Wno-pointer-sign -Wno-invalid-source-encoding)
target_link_libraries(NIGHTDLL PRIVATE graph drawtext list)
install(TARGETS NIGHTDLL DESTINATION lib/xsystem35)
+142 -69
View File
@@ -5,6 +5,7 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "night.h"
#include "nt_sound.h"
@@ -19,7 +20,7 @@
night_t nightprv;
void Init(void) { /* 0 */
static void Init(void) { /* 0 */
int *var = getCaliVariable();
int p1 = getCaliValue(); /* ISys3xCG */
int p2 = getCaliValue(); /* ISys3xDIB */
@@ -37,7 +38,7 @@ void Init(void) { /* 0 */
DEBUG_COMMAND_YET("NIGHTDLL.Init %p:\n", var);
}
void InitGame() { /* 1 */
static void InitGame() { /* 1 */
nact->ags.font->antialiase_on = TRUE;
sys_setHankakuMode(2);
@@ -47,13 +48,13 @@ void InitGame() { /* 1 */
nt_gr_init();
ntmsg_init();
sstr_init();
nt_sstr_init();
DEBUG_COMMAND_YET("NIGHTDLL.InitGame:\n");
}
// メッセージの枠の表示
void SetMsgFrame() { /* 2 */
static void SetMsgFrame() { /* 2 */
int p1 = getCaliValue(); // 0=枠消去, 1=枠あり, 2=中央
ntmsg_set_frame(p1);
@@ -62,7 +63,7 @@ void SetMsgFrame() { /* 2 */
}
// メッセージの表示位置の設定
void SetMsgPlaceMethod(void) { /* 3 */
static void SetMsgPlaceMethod(void) { /* 3 */
int p1 = getCaliValue(); // 0=メッセージ枠内, 1=中央,
// 2=メッセージ枠+顔つき
ntmsg_set_place(p1);
@@ -71,21 +72,21 @@ void SetMsgPlaceMethod(void) { /* 3 */
}
// 未実装?
void SetMsgDrawEffect(void) { /* 4 */
static void SetMsgDrawEffect(void) { /* 4 */
int p1 = getCaliValue(); // 0, 1, 2, 3 (実際にはどれも機能しない?)
DEBUG_COMMAND_YET("NIGHTDLL.SetMsgDrawEffect %d:\n", p1);
}
// 未実装?
void SetMsgClearEffect(void) { /* 5 */
static void SetMsgClearEffect(void) { /* 5 */
int p1 = getCaliValue(); // 0, 1, 2, 4 (実際にはどれも機能しない?)
DEBUG_COMMAND_YET("NIGHTDLL.SetMsgClearEffect %d:\n", p1);
}
// 壁紙CGの設定
void SetWallPaper(void) { /* 6 */
static void SetWallPaper(void) { /* 6 */
int p1 = getCaliValue(); // 壁紙CG番号
nt_gr_set_wallpaper(p1);
@@ -94,7 +95,7 @@ void SetWallPaper(void) { /* 6 */
}
// 背景CGの設定
void SetScenery(void) { /* 7 */
static void SetScenery(void) { /* 7 */
int p1 = getCaliValue(); // 背景GC番号
nt_gr_set_scenery(p1);
@@ -103,7 +104,7 @@ void SetScenery(void) { /* 7 */
}
// 顔CGの設定
void SetFace(void) { /* 8 */
static void SetFace(void) { /* 8 */
int p1 = getCaliValue(); // 顔CG番号
nt_gr_set_face(p1);
@@ -112,7 +113,7 @@ void SetFace(void) { /* 8 */
}
// 立ち絵左の設定
void SetSpriteL(void) { /* 9 */
static void SetSpriteL(void) { /* 9 */
int p1 = getCaliValue(); // 左人物スプライト番号
nt_gr_set_spL(p1);
@@ -121,7 +122,7 @@ void SetSpriteL(void) { /* 9 */
}
// 立ち絵中央の設定
void SetSpriteM(void) { /* 10 */
static void SetSpriteM(void) { /* 10 */
int p1 = getCaliValue(); // 中央人物スプライト番号
nt_gr_set_spM(p1);
@@ -130,7 +131,7 @@ void SetSpriteM(void) { /* 10 */
}
// 立ち絵右の設定
void SetSpriteR(void) { /* 11 */
static void SetSpriteR(void) { /* 11 */
int p1 = getCaliValue(); // 右人物スプライト番号
nt_gr_set_spR(p1);
@@ -139,7 +140,7 @@ void SetSpriteR(void) { /* 11 */
}
// 立ち絵左の設定(季節違い?)
void SetSpriteSeasonL(void) { /* 12 */
static void SetSpriteSeasonL(void) { /* 12 */
int p1 = getCaliValue(); // 左人物スプライト番号
nt_gr_set_spsL(p1);
@@ -148,7 +149,7 @@ void SetSpriteSeasonL(void) { /* 12 */
}
// 立ち絵中央の設定(季節違い?)
void SetSpriteSeasonM(void) { /* 13 */
static void SetSpriteSeasonM(void) { /* 13 */
int p1 = getCaliValue(); // 中央人物スプライト番号
nt_gr_set_spM(p1);
@@ -157,7 +158,7 @@ void SetSpriteSeasonM(void) { /* 13 */
}
// 立ち絵右の設定(季節違い?)
void SetSpriteSeasonR(void) { /* 14 */
static void SetSpriteSeasonR(void) { /* 14 */
int p1 = getCaliValue(); // 右人物スプライト番号
nt_gr_set_spsR(p1);
@@ -166,14 +167,14 @@ void SetSpriteSeasonR(void) { /* 14 */
}
// 改行
void StartNewLine(void) { /* 15 */
static void StartNewLine(void) { /* 15 */
ntmsg_newline();
DEBUG_COMMAND_YET("NIGHTDLL.StartNewLine:\n");
}
// メッセージフォントサイズの設定
void SetFontSize(void) { /* 16 */
static void SetFontSize(void) { /* 16 */
int p1 = getCaliValue(); // メッセージフォントサイズ
night.fontsize = p1;
@@ -182,7 +183,7 @@ void SetFontSize(void) { /* 16 */
}
// フォントの種類の設定
void SetFont(void) { /* 17 */
static void SetFont(void) { /* 17 */
int p1 = getCaliValue(); // 0: ゴシック, 1: 明朝
night.fonttype = p1;
@@ -191,7 +192,7 @@ void SetFont(void) { /* 17 */
}
// 選択肢モード ON
void SetSelMode(void) { /* 18 */
static void SetSelMode(void) { /* 18 */
int p1 = getCaliValue(); // 0, 1(ほとんど0)
night.selmode = p1;
@@ -200,7 +201,7 @@ void SetSelMode(void) { /* 18 */
}
// キー入力待ち後、改ページ
void AnalyzeMessage(void) { /* 19 */
static void AnalyzeMessage(void) { /* 19 */
int *var = getCaliVariable(); // 入力されたキー
*var = ntmsg_ana();
@@ -209,7 +210,7 @@ void AnalyzeMessage(void) { /* 19 */
}
// ~DRAWの効果時間
void SetDrawTime(void) { /* 20 */
static void SetDrawTime(void) { /* 20 */
int p1 = getCaliValue(); // 効果時間 (未使用?)
nt_gr_set_drawtime(p1);
@@ -218,7 +219,7 @@ void SetDrawTime(void) { /* 20 */
}
// 効果つき画面更新
void Draw(void) { /* 21 */
static void Draw(void) { /* 21 */
int p1 = getCaliValue(); // 効果番号
nt_gr_draw(p1);
@@ -227,7 +228,7 @@ void Draw(void) { /* 21 */
}
// 音声データを再生
void SetVoice(void) { /* 22 */
static void SetVoice(void) { /* 22 */
int p1 = getCaliValue(); // ファイル番号
nt_voice_set(p1);
@@ -236,13 +237,13 @@ void SetVoice(void) { /* 22 */
}
// 未使用
void WaitKey(void) { /* 23 */
static void WaitKey(void) { /* 23 */
int p1 = getCaliValue(); //
DEBUG_COMMAND_YET("NIGHTDLL.WaitKey %d:\n", p1);
}
void AddFeeling(void) { /* 24 */
static void AddFeeling(void) { /* 24 */
int p1 = getCaliValue(); // person(1:新開,2:星川,3:百瀬,4:いずみ,5:鏡花,6:真言美,7:マコト
int p2 = getCaliValue(); // val
@@ -250,14 +251,14 @@ void AddFeeling(void) { /* 24 */
}
void SubFeeling(void) { /* 25 */
static void SubFeeling(void) { /* 25 */
int p1 = getCaliValue(); // person
int p2 = getCaliValue(); // val
DEBUG_COMMAND_YET("NIGHTDLL.SubFeeling %d:\n", p1);
}
void CallEvent(void) { /* 26 */
static void CallEvent(void) { /* 26 */
int p1 = getCaliValue(); // 1, 2 (Event Number)
nt_sco_callevent(p1);
@@ -265,7 +266,7 @@ void CallEvent(void) { /* 26 */
DEBUG_COMMAND_YET("NIGHTDLL.CallEvent %d:\n", p1);
}
void ScreenCG(void) { /* 27 */
static void ScreenCG(void) { /* 27 */
/*
CG を読み込んで、surface0 と BlendScreen で重ね合わせ
@@ -284,7 +285,7 @@ void ScreenCG(void) { /* 27 */
DEBUG_COMMAND_YET("NIGHTDLL.ScreenCG %d,%d,%d:\n", x, y, no);
}
void RunGameMain(void) { /* 28 */
static void RunGameMain(void) { /* 28 */
int *p1 = getCaliVariable(); // result
int p2 = getCaliValue(); // month
int p3 = getCaliValue(); // day
@@ -300,7 +301,7 @@ void RunGameMain(void) { /* 28 */
DEBUG_COMMAND_YET("NIGHTDLL.RunGameMain %p,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5);
}
void CheckNewGame(void) { /* 29 */
static void CheckNewGame(void) { /* 29 */
int *p1 = getCaliVariable();
*p1 = 0;
@@ -308,21 +309,21 @@ void CheckNewGame(void) { /* 29 */
DEBUG_COMMAND_YET("NIGHTDLL.CheckNewGame %p:\n", p1);
}
void SaveStartData(void) { /* 30 */
static void SaveStartData(void) { /* 30 */
DEBUG_COMMAND_YET("NIGHTDLL.SaveStartData:\n");
}
void PrintExitSystem(void) { /* 31 */
static void PrintExitSystem(void) { /* 31 */
DEBUG_COMMAND_YET("NIGHTDLL.PrintExitSystem:\n");
}
void SetCalendar(void) { /* 32 */
static void SetCalendar(void) { /* 32 */
int p1 = getCaliValue(); // 0, 1, 2
DEBUG_COMMAND_YET("NIGHTDLL.SetCalendar %d:\n", p1);
}
void SetDate(void) { /* 33 */
static void SetDate(void) { /* 33 */
int p1 = getCaliValue(); // month
int p2 = getCaliValue(); // day
int p3 = getCaliValue(); // day of week
@@ -334,7 +335,7 @@ void SetDate(void) { /* 33 */
DEBUG_COMMAND_YET("NIGHTDLL.SetDate %d,%d,%d:\n", p1, p2, p3);
}
void GetDate(void) { /* 34 */
static void GetDate(void) { /* 34 */
int *p1 = getCaliVariable(); // month
int *p2 = getCaliVariable(); // day
int *p3 = getCaliVariable(); // day of weeek
@@ -346,11 +347,11 @@ void GetDate(void) { /* 34 */
DEBUG_COMMAND_YET("NIGHTDLL.GetDate %p,%p,%p:\n", p1, p2, p3);
}
void SelectGameLevel(void) { /* 35 */
static void SelectGameLevel(void) { /* 35 */
DEBUG_COMMAND_YET("NIGHTDLL.SelectGameLevel:\n");
}
void RunEventDungeon(void) { /* 36 */
static void RunEventDungeon(void) { /* 36 */
int *p1 = getCaliVariable();
int p2 = getCaliValue();
@@ -359,14 +360,14 @@ void RunEventDungeon(void) { /* 36 */
DEBUG_COMMAND_YET("NIGHTDLL.RunEventDungeon %p,%d:\n", p1, p2);
}
void RunEventBattle(void) { /* 37 */
static void RunEventBattle(void) { /* 37 */
int p1 = getCaliValue(); // 実際には機能しない?
DEBUG_COMMAND_YET("NIGHTDLL.RunEventBattle %d:\n", p1);
}
// CD再生開始
void CDPlay(void) { /* 38 */
static void CDPlay(void) { /* 38 */
int p1 = getCaliValue(); // no
nt_cd_play(p1);
@@ -375,7 +376,7 @@ void CDPlay(void) { /* 38 */
}
// CD再生停止
void CDStop(void) { /* 39 */
static void CDStop(void) { /* 39 */
int p1 = getCaliValue(); // time(msec)
nt_cd_stop(p1);
@@ -384,7 +385,7 @@ void CDStop(void) { /* 39 */
}
// CDのmute
void CDMute(void) { /* 40 */
static void CDMute(void) { /* 40 */
int p1 = getCaliValue(); // 0: mute off, 1: mute on
nt_cd_mute(p1 == 0 ? FALSE : TRUE);
@@ -393,7 +394,7 @@ void CDMute(void) { /* 40 */
}
// ch に効果音番号をセット
void SoundEffectSetWave(void) { /* 41 */
static void SoundEffectSetWave(void) { /* 41 */
int p1 = getCaliValue(); // ch
int p2 = getCaliValue(); // linkno
@@ -403,7 +404,7 @@ void SoundEffectSetWave(void) { /* 41 */
}
// ch にくり返し数をセット
void SoundEffectSetLoop(void) { /* 42 */
static void SoundEffectSetLoop(void) { /* 42 */
int p1 = getCaliValue(); // ch
int p2 = getCaliValue(); // numloop
@@ -413,7 +414,7 @@ void SoundEffectSetLoop(void) { /* 42 */
}
// ch に音量をセット
void SoundEffectSetVolume(void) { /* 43 */
static void SoundEffectSetVolume(void) { /* 43 */
int p1 = getCaliValue(); // ch
int p2 = getCaliValue(); // vol
@@ -423,7 +424,7 @@ void SoundEffectSetVolume(void) { /* 43 */
}
// 効果音の再生を終るまで待つか待たないか?
void SoundEffectSetSyncFlag(void) { /* 44 */
static void SoundEffectSetSyncFlag(void) { /* 44 */
int p1 = getCaliValue(); // ch
int p2 = getCaliValue(); // 0: 終るまで待たない, 1: 待つ
@@ -433,7 +434,7 @@ void SoundEffectSetSyncFlag(void) { /* 44 */
}
// ch の効果音を再生
void SoundEffectPlay(void) { /* 45 */
static void SoundEffectPlay(void) { /* 45 */
int p1 = getCaliValue(); // ch
nt_snd_play(p1);
@@ -442,7 +443,7 @@ void SoundEffectPlay(void) { /* 45 */
}
// ch の効果音を停止
void SoundEffectStop(void) { /* 46 */
static void SoundEffectStop(void) { /* 46 */
int p1 = getCaliValue(); // ch
int p2 = getCaliValue(); // time (止まるまでの時間)
@@ -452,7 +453,7 @@ void SoundEffectStop(void) { /* 46 */
}
// 全てのチャンネルの再生を停止
void SoundEffectStopAll(void) { /* 47 */
static void SoundEffectStopAll(void) { /* 47 */
int p1 = getCaliValue(); // time (止まるまでの時間)
nt_snd_stopall(p1);
@@ -460,86 +461,86 @@ void SoundEffectStopAll(void) { /* 47 */
DEBUG_COMMAND_YET("NIGHTDLL.SoundEffectStopAll %d:\n", p1);
}
void RunSoundMode(void) { /* 48 */
static void RunSoundMode(void) { /* 48 */
DEBUG_COMMAND_YET("NIGHTDLL.RunSoundMode:\n");
}
void RunMapEditor(void) { /* 49 */
static void RunMapEditor(void) { /* 49 */
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("NIGHTDLL.RunMapEditor %p:\n", p1);
}
void VisualListClear(void) { /* 50 */
static void VisualListClear(void) { /* 50 */
DEBUG_COMMAND_YET("NIGHTDLL.VisualListClear:\n");
}
void VisualListAdd(void) { /* 51 */
static void VisualListAdd(void) { /* 51 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("NIGHTDLL.VisualListAdd %d:\n", p1);
}
void GetLocalCountCG(void) { /* 52 */
static void GetLocalCountCG(void) { /* 52 */
int *p1 = getCaliVariable();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("NIGHTDLL.GetLocalCountCG %p,%d:\n", p1, p2);
}
void PlayMemory(void) { /* 53 */
static void PlayMemory(void) { /* 53 */
int *p1 = getCaliVariable(); // 回想ページ
int *p2 = getCaliVariable(); // 回想RESULT
DEBUG_COMMAND_YET("NIGHTDLL.PlayMemory %p,%p:\n", p1, p2);
}
void GetEventFlagTotal(void) { /* 54 */
static void GetEventFlagTotal(void) { /* 54 */
int *p1 = getCaliVariable();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("NIGHTDLL.GetEventFlagTotal %p,%d:\n", p1, p2);
}
void SetPlayerName(void) { /* 55 */
static void SetPlayerName(void) { /* 55 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("NIGHTDLL.SetPlayerName %d:\n", p1);
}
void GetPlayerName(void) { /* 56 */
static void GetPlayerName(void) { /* 56 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("NIGHTDLL.GetPlayerName %d:\n", p1);
}
void SaveGame(void) { /* 57 */
static void SaveGame(void) { /* 57 */
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("NIGHTDLL.SaveGame %p:\n", p1);
}
void LoadGame(void) { /* 58 */
static void LoadGame(void) { /* 58 */
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("NIGHTDLL.LoadGame %p:\n", p1);
}
void ExistSaveData(void) { /* 59 */
static void ExistSaveData(void) { /* 59 */
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("NIGHTDLL.ExistSaveData %p:\n", p1);
}
void ExistStartData(void) { /* 60 */
static void ExistStartData(void) { /* 60 */
int *p1 = getCaliVariable();
DEBUG_COMMAND_YET("NIGHTDLL.ExistStartData %p:\n", p1);
}
void SetAreaData(void) { /* 61 */
static void SetAreaData(void) { /* 61 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -547,27 +548,27 @@ void SetAreaData(void) { /* 61 */
DEBUG_COMMAND_YET("NIGHTDLL.SetAreaData %d,%d,%d:\n", p1, p2, p3);
}
void RunBattleTest(void) { /* 62 */
static void RunBattleTest(void) { /* 62 */
DEBUG_COMMAND_YET("NIGHTDLL.RunBattleTest:\n");
}
void RunTrainingTest(void) { /* 63 */
static void RunTrainingTest(void) { /* 63 */
DEBUG_COMMAND_YET("NIGHTDLL.RunTrainingTest:\n");
}
void TestEventCall(void) { /* 64 */
static void TestEventCall(void) { /* 64 */
DEBUG_COMMAND_YET("NIGHTDLL.TestEventCall:\n");
}
void Test(void) { /* 65 */
static void Test(void) { /* 65 */
DEBUG_COMMAND_YET("NIGHTDLL.Test:\n");
}
void DebugScenario(void) { /* 66 */
static void DebugScenario(void) { /* 66 */
DEBUG_COMMAND_YET("NIGHTDLL.DebugScenario:\n");
}
void GetDLLTime(void) { /* 67 */
static void GetDLLTime(void) { /* 67 */
int *p1 = getCaliVariable();
int *p2 = getCaliVariable();
int *p3 = getCaliVariable();
@@ -579,3 +580,75 @@ void GetDLLTime(void) { /* 67 */
DEBUG_COMMAND_YET("NIGHTDLL.GetDLLTime %p,%p,%p,%p,%p,%p,%p:\n", p1, p2, p3, p4, p5, p6, p7);
}
static const ModuleFunc functions[] = {
{"AddFeeling", AddFeeling},
{"AnalyzeMessage", AnalyzeMessage},
{"CDMute", CDMute},
{"CDPlay", CDPlay},
{"CDStop", CDStop},
{"CallEvent", CallEvent},
{"CheckNewGame", CheckNewGame},
{"DebugScenario", DebugScenario},
{"Draw", Draw},
{"ExistSaveData", ExistSaveData},
{"ExistStartData", ExistStartData},
{"GetDLLTime", GetDLLTime},
{"GetDate", GetDate},
{"GetEventFlagTotal", GetEventFlagTotal},
{"GetLocalCountCG", GetLocalCountCG},
{"GetPlayerName", GetPlayerName},
{"Init", Init},
{"InitGame", InitGame},
{"LoadGame", LoadGame},
{"PlayMemory", PlayMemory},
{"PrintExitSystem", PrintExitSystem},
{"RunBattleTest", RunBattleTest},
{"RunEventBattle", RunEventBattle},
{"RunEventDungeon", RunEventDungeon},
{"RunGameMain", RunGameMain},
{"RunMapEditor", RunMapEditor},
{"RunSoundMode", RunSoundMode},
{"RunTrainingTest", RunTrainingTest},
{"SaveGame", SaveGame},
{"SaveStartData", SaveStartData},
{"ScreenCG", ScreenCG},
{"SelectGameLevel", SelectGameLevel},
{"SetAreaData", SetAreaData},
{"SetCalendar", SetCalendar},
{"SetDate", SetDate},
{"SetDrawTime", SetDrawTime},
{"SetFace", SetFace},
{"SetFont", SetFont},
{"SetFontSize", SetFontSize},
{"SetMsgClearEffect", SetMsgClearEffect},
{"SetMsgDrawEffect", SetMsgDrawEffect},
{"SetMsgFrame", SetMsgFrame},
{"SetMsgPlaceMethod", SetMsgPlaceMethod},
{"SetPlayerName", SetPlayerName},
{"SetScenery", SetScenery},
{"SetSelMode", SetSelMode},
{"SetSpriteL", SetSpriteL},
{"SetSpriteM", SetSpriteM},
{"SetSpriteR", SetSpriteR},
{"SetSpriteSeasonL", SetSpriteSeasonL},
{"SetSpriteSeasonM", SetSpriteSeasonM},
{"SetSpriteSeasonR", SetSpriteSeasonR},
{"SetVoice", SetVoice},
{"SetWallPaper", SetWallPaper},
{"SoundEffectPlay", SoundEffectPlay},
{"SoundEffectSetLoop", SoundEffectSetLoop},
{"SoundEffectSetSyncFlag", SoundEffectSetSyncFlag},
{"SoundEffectSetVolume", SoundEffectSetVolume},
{"SoundEffectSetWave", SoundEffectSetWave},
{"SoundEffectStop", SoundEffectStop},
{"SoundEffectStopAll", SoundEffectStopAll},
{"StartNewLine", StartNewLine},
{"SubFeeling", SubFeeling},
{"Test", Test},
{"TestEventCall", TestEventCall},
{"VisualListAdd", VisualListAdd},
{"VisualListClear", VisualListClear},
{"WaitKey", WaitKey},
};
const Module module_NIGHTDLL = {"NIGHTDLL", functions, sizeof(functions) / sizeof(ModuleFunc)};
+34 -34
View File
@@ -39,8 +39,8 @@ void nt_gr_set_wallpaper(int no) {
sprite_t *sp = night.sp[SPNO_WALL];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
}
if (no == 1013 && nt_sco_is_natsu()) {
@@ -51,12 +51,12 @@ void nt_gr_set_wallpaper(int no) {
no = 1012;
}
sp = sp_new(SPNO_WALL, no, 0, 0, SPRITE_WP);
sp_add_updatelist(sp);
sp = nt_sp_new(SPNO_WALL, no, 0, 0, SPRITE_WP);
nt_sp_add_updatelist(sp);
if (no == 0) {
sp->cursize.width = sf0->width;
sp->cursize.height = sf0->height;
sp->update = sp_draw_wall;
sp->update = nt_sp_draw_wall;
}
night.sp[SPNO_WALL] = sp;
@@ -66,15 +66,15 @@ void nt_gr_set_scenery(int no) {
sprite_t *sp = night.sp[SPNO_SCENERY];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
sp = NULL;
}
if (no) {
sp = sp_new(SPNO_SCENERY, no, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp_set_loc(sp, SCENERY_LOC_X, SCENERY_LOC_Y);
sp = nt_sp_new(SPNO_SCENERY, no, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, SCENERY_LOC_X, SCENERY_LOC_Y);
}
night.sp[SPNO_SCENERY] = sp;
@@ -84,14 +84,14 @@ void nt_gr_set_face(int no) {
sprite_t *sp = night.sp[SPNO_FACE];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
sp = NULL;
}
if (no) {
sp = sp_new(SPNO_FACE, no, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp_set_loc(sp, FACE_LOC_X, FACE_LOC_Y);
sp = nt_sp_new(SPNO_FACE, no, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, FACE_LOC_X, FACE_LOC_Y);
night.msgplace = 2;
} else {
night.msgplace = 0;
@@ -103,14 +103,14 @@ void nt_gr_set_spL(int no) {
sprite_t *sp = night.sp[SPNO_TACHI_L];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
sp = NULL;
}
if (no) {
sp = sp_new(SPNO_TACHI_L, no, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp_set_loc(sp, TACHI_L_LOC_X, TACHI_L_LOC_Y);
sp = nt_sp_new(SPNO_TACHI_L, no, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, TACHI_L_LOC_X, TACHI_L_LOC_Y);
}
night.sp[SPNO_TACHI_L] = sp;
}
@@ -119,14 +119,14 @@ void nt_gr_set_spM(int no) {
sprite_t *sp = night.sp[SPNO_TACHI_M];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
sp = NULL;
}
if (no) {
sp = sp_new(SPNO_TACHI_M, no, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp_set_loc(sp, TACHI_M_LOC_X, TACHI_M_LOC_Y);
sp = nt_sp_new(SPNO_TACHI_M, no, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, TACHI_M_LOC_X, TACHI_M_LOC_Y);
}
night.sp[SPNO_TACHI_M] = sp;
}
@@ -135,14 +135,14 @@ void nt_gr_set_spR(int no) {
sprite_t *sp = night.sp[SPNO_TACHI_R];
if (sp) {
sp_remove_updatelist(sp);
sp_free(sp);
nt_sp_remove_updatelist(sp);
nt_sp_free(sp);
sp = NULL;
}
if (no) {
sp = sp_new(SPNO_TACHI_R, no, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp_set_loc(sp, TACHI_R_LOC_X, TACHI_R_LOC_Y);
sp = nt_sp_new(SPNO_TACHI_R, no, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, TACHI_R_LOC_X, TACHI_R_LOC_Y);
}
night.sp[SPNO_TACHI_R] = sp;
}
@@ -178,15 +178,15 @@ void nt_gr_draw(int effectno) {
// 全消し
break;
case 1:
sp_update_all(TRUE);
nt_sp_update_all(TRUE);
break;
default:
if (night.waitskiplv > 1) {
sp_update_all(TRUE);
nt_sp_update_all(TRUE);
break;
}
//sp_eupdate(effectno, effecttime, TRUE);
sp_eupdate(effectno, 1000, TRUE);
//nt_sp_eupdate(effectno, effecttime, TRUE);
nt_sp_eupdate(effectno, 1000, TRUE);
}
}
+43 -41
View File
@@ -17,12 +17,14 @@
#include "nt_msg.h"
#include "sprite.h"
#include "sactcg.h"
#include "sjisname.h"
#include "sactstring.h"
extern int ntsel_dosel(void);
#define SNAME_RYO "亮    "
#define SNAME_RYO_DEF "亮"
// 通常メッセージ表示位置と大きさ
#define MSGFRAME_0_X 6
#define MSGFRAME_0_Y 347
@@ -67,34 +69,34 @@ void ntmsg_init() {
sprite_t *sp;
// メッセージスプライト
sp = night.sp[SPNO_MSGFRAME_FG] = sp_msg_new(SPNO_MSGFRAME_FG, 0, 0, sf0->width, sf0->height);
sp_add_updatelist(sp);
sp = night.sp[SPNO_MSGFRAME_FG] = nt_sp_msg_new(SPNO_MSGFRAME_FG, 0, 0, sf0->width, sf0->height);
nt_sp_add_updatelist(sp);
// メッセージ背景用CG
sp = night.sp[SPNO_MSGFRAME_BG] = sp_new(SPNO_MSGFRAME_BG, CGNO_MSGFRAME_LCG, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp = night.sp[SPNO_MSGFRAME_BG] = nt_sp_new(SPNO_MSGFRAME_BG, CGNO_MSGFRAME_LCG, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
// 文字背景CG作成
scg_create(CGNO_MSGFR_BG,
nt_scg_create(CGNO_MSGFR_BG,
sf0->width, sf0->height,
0, 0, 0, 255);
// night.cg[CGNO_MSGFR_BG]->refcnt++;
// 文字背景CGのためのsprite
sp = night.sp[SPNO_MSGBG] = sp_new(SPNO_MSGBG, CGNO_MSGFR_BG, 0, 0, SPRITE_NORMAL);
sp_add_updatelist(sp);
sp = night.sp[SPNO_MSGBG] = nt_sp_new(SPNO_MSGBG, CGNO_MSGFR_BG, 0, 0, SPRITE_NORMAL);
nt_sp_add_updatelist(sp);
// キー入力アニメーションCG作成
scg_cut(CGNO_MSGHAK_1, CGNO_MSGHAK_LCG, 0, 0, 9, 9);
nt_scg_cut(CGNO_MSGHAK_1, CGNO_MSGHAK_LCG, 0, 0, 9, 9);
//night.cg[CGNO_MSGHAK_1]->refcnt++;
scg_cut(CGNO_MSGHAK_2, CGNO_MSGHAK_LCG, 0, 9, 9, 9);
nt_scg_cut(CGNO_MSGHAK_2, CGNO_MSGHAK_LCG, 0, 9, 9, 9);
//night.cg[CGNO_MSGHAK_2]->refcnt++;
sp = night.sp[SPNO_MSG_KEYANIM] = sp_new(SPNO_MSG_KEYANIM, CGNO_MSGHAK_1, CGNO_MSGHAK_2, 0, SPRITE_ANIME);
sp = night.sp[SPNO_MSG_KEYANIM] = nt_sp_new(SPNO_MSG_KEYANIM, CGNO_MSGHAK_1, CGNO_MSGHAK_2, 0, SPRITE_ANIME);
sp->u.anime.interval = HAKANIM_INTERVAL;
sp_add_updatelist(sp);
sp_set_loc(sp, HAKANIM_LOC_X, HAKANIM_LOC_Y);
sp_set_show(sp, FALSE);
sp->update = sp_draw_scg;
nt_sp_add_updatelist(sp);
nt_sp_set_loc(sp, HAKANIM_LOC_X, HAKANIM_LOC_Y);
nt_sp_set_show(sp, FALSE);
sp->update = nt_sp_draw_scg;
@@ -102,7 +104,7 @@ void ntmsg_init() {
// 主人公名前
sstr_regist_replace(SNAME_RYO, SNAME_RYO_DEF);
nt_sstr_regist_replace(utf2sjis(SNAME_RYO), utf2sjis(SNAME_RYO_DEF));
night.msg.cbmove = cb_mousemove;
night.msg.cbrelease = cb_keyrelease;
@@ -129,14 +131,14 @@ void ntmsg_set_frame(int type) {
switch(type) {
case 0:
sp_set_show(night.sp[SPNO_MSGBG], FALSE);
sp_set_show(night.sp[SPNO_MSGFRAME_BG], FALSE);
sp_set_show(night.sp[SPNO_MSGFRAME_FG], FALSE);
nt_sp_set_show(night.sp[SPNO_MSGBG], FALSE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_BG], FALSE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_FG], FALSE);
break;
case 1:
sp_set_show(night.sp[SPNO_MSGBG], TRUE);
sp_set_show(night.sp[SPNO_MSGFRAME_BG], TRUE);
sp_set_show(night.sp[SPNO_MSGFRAME_FG], TRUE);
nt_sp_set_show(night.sp[SPNO_MSGBG], TRUE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_BG], TRUE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_FG], TRUE);
gr_fill(sf, MSGFRAME_0_X, MSGFRAME_0_Y,
MSGFRAME_0_WIDTH, MSGFRAME_0_HEIGHT,
@@ -144,12 +146,12 @@ void ntmsg_set_frame(int type) {
gr_fill_alpha_map(sf, MSGFRAME_0_X, MSGFRAME_0_Y,
MSGFRAME_0_WIDTH, MSGFRAME_0_HEIGHT, 192);
ntmsg_clear(SPNO_MSGFRAME_FG);
sp_update_all(TRUE);
nt_sp_update_all(TRUE);
break;
case 2:
sp_set_show(night.sp[SPNO_MSGBG], TRUE);
sp_set_show(night.sp[SPNO_MSGFRAME_BG], FALSE);
sp_set_show(night.sp[SPNO_MSGFRAME_FG], TRUE);
nt_sp_set_show(night.sp[SPNO_MSGBG], TRUE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_BG], FALSE);
nt_sp_set_show(night.sp[SPNO_MSGFRAME_FG], TRUE);
gr_fill(sf, MSGFRAME_1_X, MSGFRAME_1_Y,
MSGFRAME_1_WIDTH, MSGFRAME_1_HEIGHT,
@@ -157,7 +159,7 @@ void ntmsg_set_frame(int type) {
gr_fill_alpha_map(sf, MSGFRAME_1_X, MSGFRAME_1_Y,
MSGFRAME_1_WIDTH, MSGFRAME_1_HEIGHT, 128);
ntmsg_clear(SPNO_MSGFRAME_FG);
sp_update_all(TRUE);
nt_sp_update_all(TRUE);
break;
}
@@ -179,15 +181,15 @@ void ntmsg_newline() {
ntmsg_add(buf);
}
void ntmsg_add(char *msg) {
void ntmsg_add(const char *msg) {
int len;
WARNING("len = %d\n", strlen(msg));
SACT_DEBUG("len = %d\n", strlen(msg));
if (msg[0] == '\0') return;
if (0) {
char *b = sjis2lang(msg);
char *b = sjis2utf(msg);
fprintf(stderr, "add msg '%s'\n", b);
free(b);
}
@@ -210,12 +212,12 @@ int ntmsg_ana(void) {
} else {
// msg newpage
ntmsg_out(SPNO_MSGFRAME_FG, night.fontsize, 255, 255, 255, night.fonttype, 0, 2);
sp_update_clipped();
nt_sp_update_clipped();
ret = ntmsg_keywait();
// clear msgsprite
ntmsg_clear(SPNO_MSGFRAME_FG);
//sp_update_clipped();
//nt_sp_update_clipped();
}
night.selmode = -1;
@@ -234,7 +236,7 @@ static void ntmsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB
// shortcut
sp = night.sp[wNum];
msg = sstr_replacestr(night.msgbuf);
msg = nt_sstr_replacestr(night.msgbuf);
// 文字アラインメントの調整
set_align(msg, sp, wSize);
@@ -259,7 +261,7 @@ static void ntmsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB
dt_setfont(wFont, wSize);
if (1) {
char *b = sjis2lang(mbuf);
char *b = sjis2utf(mbuf);
fprintf(stderr, "msg '%s'\n", b);
free(b);
}
@@ -273,12 +275,12 @@ static void ntmsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB
needupdate = TRUE;
if (wSpeed > 0) {
sp_updateme_part(sp,
nt_sp_updateme_part(sp,
sp->u.msg.dspcur.x,
sp->u.msg.dspcur.y,
cw,
wSize);
sp_update_clipped();
nt_sp_update_clipped();
needupdate = FALSE;
// keywait
@@ -301,7 +303,7 @@ static void ntmsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB
if (needupdate) {
uparea.width = sp->cursize.width;
uparea.height = min(sp->cursize.height, uparea.y - sp->u.msg.dspcur.y + wLineSpace + wLineSpace);
sp_updateme_part(sp, uparea.x, uparea.y, uparea.width, uparea.height);
nt_sp_updateme_part(sp, uparea.x, uparea.y, uparea.width, uparea.height);
}
}
@@ -455,8 +457,8 @@ static void hakanim(int i) {
sp->curcg = sp->cg2;
}
sp->show = TRUE;
sp_updateme(sp);
sp_update_clipped();
nt_sp_updateme(sp);
nt_sp_update_clipped();
sp->show = show;
}
@@ -489,7 +491,7 @@ int ntmsg_update(sprite_t *sp, MyRectangle *r) {
gre_BlendUseAMap(sf0, dx, dy, sf0, dx, dy, sp->u.msg.canvas, sx, sy, w, h, sp->u.msg.canvas, sx, sy, sp->blendrate);
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
sp->no, sx, sy, w, h, dx, dy);
return OK;
@@ -509,5 +511,5 @@ static void ntmsg_clear(int wNum) {
memset(sf->pixel, 0, sf->bytes_per_line * sf->height);
memset(sf->alpha, 0, sf->width * sf->height);
sp_updateme(sp);
nt_sp_updateme(sp);
}
+1 -1
View File
@@ -5,7 +5,7 @@ extern void ntmsg_init();
extern void ntmsg_set_frame(int type);
extern void ntmsg_set_place(int type);
extern void ntmsg_newline();
extern void ntmsg_add(char *msg);
extern void ntmsg_add(const char *msg);
extern int ntmsg_ana(void);
extern int ntmsg_update(sprite_t *sp, MyRectangle *r);
+2 -2
View File
@@ -33,7 +33,7 @@ static struct _scoadr scene2adr(int no) {
struct _scoadr adr = {0, 0};
snprintf(label, 7, "E%05d", no);
WARNING("seaching %6s\n", label);
SACT_DEBUG("seaching %6s\n", label);
for (i = 0; i < nact->ain.fncnum; i++) {
if (0 == strncmp(nact->ain.fnc[i].name, label, 6)) {
adr.page = nact->ain.fnc[i].page;
@@ -57,7 +57,7 @@ static void ntmain(struct _scoadr inadr) {
while (!nact->is_quit) {
for (int cnt = 0; !nact->wait_vsync && cnt < 10000; cnt++) {
DEBUG_MESSAGE("%d:%x\n", sl_getPage(), sl_getIndex());
//WARNING("%d:%x\n", sl_getPage(), sl_getIndex());
//SACT_DEBUG("%d:%x\n", sl_getPage(), sl_getIndex());
if (!nact->popupmenu_opened) {
check_command(sl_getc());
if (sl_getPage() == inadr.page &&
+36 -36
View File
@@ -61,7 +61,7 @@ static cginfo_t *cgs[CGMAX];
spriteから参照されるときは増やし、CG_xxxを作る時に
参照されるときは増やさない。
*/
cginfo_t *scg_loadcg_no(int no, boolean refinc) {
cginfo_t *nt_scg_loadcg_no(int no, boolean refinc) {
cginfo_t *i;
if (no >= (CGMAX -1)) {
@@ -95,7 +95,7 @@ cginfo_t *scg_loadcg_no(int no, boolean refinc) {
}
// 指定の大きさ、色の矩形の CG を作成
int scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int wBlendRate) {
int nt_scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int wBlendRate) {
cginfo_t *i;
spcg_assert_no(wNumCG);
@@ -109,7 +109,7 @@ int scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int
gr_fill_alpha_map(i->sf, 0, 0, wWidth, wHeight, wBlendRate);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumCG);
nt_scg_free(wNumCG);
cgs[wNumCG] = i;
@@ -117,7 +117,7 @@ int scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int
}
// 指定のCGを反転させたCGを作成
int scg_create_reverse(int wNumCG, int wNumSrcCG, int wReverseX, int wReverseY) {
int nt_scg_create_reverse(int wNumCG, int wNumSrcCG, int wReverseX, int wReverseY) {
cginfo_t *i, *srccg;
surface_t *src;
@@ -125,7 +125,7 @@ int scg_create_reverse(int wNumCG, int wNumSrcCG, int wReverseX, int wReverseY)
spcg_assert_no(wNumSrcCG);
// 元にするCGを参照 (LINKCGなら読み込み)
if (NULL == (srccg = scg_loadcg_no(wNumSrcCG, FALSE))) {
if (NULL == (srccg = nt_scg_loadcg_no(wNumSrcCG, FALSE))) {
return NG;
}
@@ -137,7 +137,7 @@ int scg_create_reverse(int wNumCG, int wNumSrcCG, int wReverseX, int wReverseY)
src = srccg->sf;
i->sf = stretch(src, src->width, src->height, (wReverseX << 1) | wReverseY);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumCG);
nt_scg_free(wNumCG);
cgs[wNumCG] = i;
@@ -145,7 +145,7 @@ int scg_create_reverse(int wNumCG, int wNumSrcCG, int wReverseX, int wReverseY)
}
// 指定のCGを拡大/縮小したCGを作成
int scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG) {
int nt_scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG) {
cginfo_t *i, *srccg;
surface_t *src;
@@ -153,7 +153,7 @@ int scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG) {
spcg_assert_no(wNumSrcCG);
// 元にするCGを参照 (LINKCGなら読み込み)
if (NULL == (srccg = scg_loadcg_no(wNumSrcCG, FALSE))) {
if (NULL == (srccg = nt_scg_loadcg_no(wNumSrcCG, FALSE))) {
return NG;
}
@@ -166,7 +166,7 @@ int scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG) {
i->sf = stretch(src, wWidth, wHeight, 0);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumCG);
nt_scg_free(wNumCG);
cgs[wNumCG] = i;
@@ -174,7 +174,7 @@ int scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG) {
}
// ベースCGの上にブレンドCGを重ねた CG を作成
int scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlendCG, int wAlphaMapMode) {
int nt_scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlendCG, int wAlphaMapMode) {
cginfo_t *i, *basecg, *blendcg;
spcg_assert_no(wNumDstCG);
@@ -182,8 +182,8 @@ int scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlen
spcg_assert_no(wNumBlendCG);
// 元にするCGを参照 (LINKCGなら読み込み)
basecg = scg_loadcg_no(wNumBaseCG, FALSE);
blendcg = scg_loadcg_no(wNumBlendCG, FALSE);
basecg = nt_scg_loadcg_no(wNumBaseCG, FALSE);
blendcg = nt_scg_loadcg_no(wNumBlendCG, FALSE);
if (basecg == NULL || blendcg == NULL) return NG;
i = malloc(sizeof(cginfo_t));
@@ -194,7 +194,7 @@ int scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlen
i->sf = blend(basecg->sf, wX , wY, blendcg->sf, wAlphaMapMode);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumDstCG);
nt_scg_free(wNumDstCG);
cgs[wNumDstCG] = i;
@@ -202,13 +202,13 @@ int scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlen
}
// 指定の文字列のCGを作成
int scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText) {
int nt_scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText) {
cginfo_t *i;
agsurface_t *glyph;
FONT *font;
if (0) {
char *b = sjis2lang(cText);
char *b = sjis2utf(cText);
WARNING("str = '%s'\n", b);
free(b);
}
@@ -232,7 +232,7 @@ int scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText)
gr_draw_amap(i->sf, 0, 0, glyph->pixel, glyph->width, wSize, glyph->bytes_per_line);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumCG);
nt_scg_free(wNumCG);
cgs[wNumCG] = i;
@@ -240,7 +240,7 @@ int scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText)
}
// 数字文字列のCGを作成
int scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs, int wZeroPadding, int wValue) {
int nt_scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs, int wZeroPadding, int wValue) {
cginfo_t *i;
agsurface_t *glyph;
FONT *font;
@@ -270,7 +270,7 @@ int scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs,
gr_draw_amap(i->sf, 0, 0, glyph->pixel, glyph->width, wSize, glyph->bytes_per_line);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumCG);
nt_scg_free(wNumCG);
cgs[wNumCG] = i;
@@ -278,14 +278,14 @@ int scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs,
}
// CGを複製
int scg_copy(int wNumDstCG, int wNumSrcCG) {
int nt_scg_copy(int wNumDstCG, int wNumSrcCG) {
cginfo_t *i, *srccg;
spcg_assert_no(wNumDstCG);
spcg_assert_no(wNumSrcCG);
// 元にするCGを参照 (LINKCGなら読み込み)
if (NULL == (srccg = scg_loadcg_no(wNumSrcCG, FALSE))) {
if (NULL == (srccg = nt_scg_loadcg_no(wNumSrcCG, FALSE))) {
return NG;
}
@@ -296,7 +296,7 @@ int scg_copy(int wNumDstCG, int wNumSrcCG) {
i->sf = sf_dup(srccg->sf);
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumDstCG);
nt_scg_free(wNumDstCG);
cgs[wNumDstCG] = i;
@@ -304,7 +304,7 @@ int scg_copy(int wNumDstCG, int wNumSrcCG) {
}
// CGの一部を切りぬいたCGを作成
int scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight) {
int nt_scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight) {
cginfo_t *i, *srccg;
surface_t *dst, *src;
@@ -312,7 +312,7 @@ int scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeigh
spcg_assert_no(wNumSrcCG);
// 元にするCGを参照 (LINKCGなら読み込み)
if (NULL == (srccg = scg_loadcg_no(wNumSrcCG, FALSE))) {
if (NULL == (srccg = nt_scg_loadcg_no(wNumSrcCG, FALSE))) {
return NG;
}
@@ -337,7 +337,7 @@ int scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeigh
i->sf = dst;
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumDstCG);
nt_scg_free(wNumDstCG);
cgs[wNumDstCG] = i;
@@ -345,7 +345,7 @@ int scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeigh
}
// 元のCGの一部を切りぬいたCGを作成
int scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight) {
int nt_scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight) {
cginfo_t *i, *srccg;
surface_t *dst, *src;
@@ -353,7 +353,7 @@ int scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int w
spcg_assert_no(wNumSrcCG);
// 元にするCGを参照 (LINKCGなら読み込み)
if (NULL == (srccg = scg_loadcg_no(wNumSrcCG, FALSE))) {
if (NULL == (srccg = nt_scg_loadcg_no(wNumSrcCG, FALSE))) {
return NG;
}
@@ -380,7 +380,7 @@ int scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int w
i->sf = dst;
// もし前に作成したものがあり、未開放の場合は開放
scg_free(wNumDstCG);
nt_scg_free(wNumDstCG);
cgs[wNumDstCG] = i;
@@ -388,11 +388,11 @@ int scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int w
}
// 全てのCGの開放
int scg_freeall() {
int nt_scg_freeall() {
int i;
for (i = 1; i < CGMAX; i++) {
scg_free(i);
nt_scg_free(i);
}
return OK;
}
@@ -401,7 +401,7 @@ int scg_freeall() {
* 指定の番号の CG をオブジェクトリストから消し、オブジェクトがどこからも参照
* されていない(参照数が0の)場合のみ、オブジェクトを削除
*/
int scg_free(int no) {
int nt_scg_free(int no) {
cginfo_t *cg;
spcg_assert_no(no);
@@ -410,7 +410,7 @@ int scg_free(int no) {
// 参照数が0の時のみオブジェクトを開放
if (cg->refcnt == 0) {
scg_free_cgobj(cg);
nt_scg_free_cgobj(cg);
}
// 番号で消したときはオブジェクトが開放されなくても
@@ -423,7 +423,7 @@ int scg_free(int no) {
/**
* CG オブジェクトの開放
*/
int scg_free_cgobj(cginfo_t *cg) {
int nt_scg_free_cgobj(cginfo_t *cg) {
if (cg == NULL) return NG;
(cg->refcnt)--;
@@ -448,7 +448,7 @@ int scg_free_cgobj(cginfo_t *cg) {
}
// CGの種類を取得
int scg_querytype(int wNumCG, int *ret) {
int nt_scg_querytype(int wNumCG, int *ret) {
if (wNumCG >= (CGMAX -1)) goto errexit;
if (cgs[wNumCG] == NULL) goto errexit;
@@ -462,7 +462,7 @@ int scg_querytype(int wNumCG, int *ret) {
}
// CGの大きさを取得
int scg_querysize(int wNumCG, int *w, int *h) {
int nt_scg_querysize(int wNumCG, int *w, int *h) {
if (wNumCG >= (CGMAX -1)) goto errexit;
if (cgs[wNumCG] == NULL) goto errexit;
if (cgs[wNumCG]->sf == NULL) goto errexit;
@@ -478,7 +478,7 @@ int scg_querysize(int wNumCG, int *w, int *h) {
}
// CGのBPPを取得
int scg_querybpp(int wNumCG, int *ret) {
int nt_scg_querybpp(int wNumCG, int *ret) {
if (wNumCG >= (CGMAX -1)) goto errexit;
if (cgs[wNumCG] == NULL) goto errexit;
if (cgs[wNumCG]->sf == NULL) goto errexit;
@@ -493,7 +493,7 @@ int scg_querybpp(int wNumCG, int *ret) {
}
// CGの alphamap が存在するかを取得
int scg_existalphamap(int wNumCG, int *ret) {
int nt_scg_existalphamap(int wNumCG, int *ret) {
if (wNumCG >= (CGMAX -1)) goto errexit;
if (cgs[wNumCG] == NULL) goto errexit;
if (cgs[wNumCG]->sf == NULL) goto errexit;
+18 -18
View File
@@ -27,23 +27,23 @@
#include "portab.h"
#include "night.h"
extern cginfo_t *scg_loadcg_no(int no, boolean refinc);
extern int scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int wBlendRate);
extern int scg_create_reverse(int NumCG, int wNumSrcCG, int wReverseX, int wReverseY);
extern int scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG);
extern int scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlendCG, int wAlphaMapMode);
extern int scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText);
extern int scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs, int wZeroPadding, int wValue);
extern int scg_copy(int wNumDstCG, int wNumSrcCG);
extern int scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight);
extern int scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight);
extern int scg_freeall();
extern int scg_free(int cg);
extern int scg_free_cgobj(cginfo_t *cg);
extern int scg_querytype(int wNumCG, int *ret);
extern int scg_querysize(int wNumCG, int *w, int *h);
extern int scg_querybpp(int wNumCG, int *ret);
extern int scg_existalphamap(int wNumCG, int *ret);
extern int scg_linkcgfree(int no);
extern cginfo_t *nt_scg_loadcg_no(int no, boolean refinc);
extern int nt_scg_create(int wNumCG, int wWidth, int wHeight, int wR, int wG, int wB, int wBlendRate);
extern int nt_scg_create_reverse(int NumCG, int wNumSrcCG, int wReverseX, int wReverseY);
extern int nt_scg_create_stretch(int wNumCG, int wWidth, int wHeight, int wNumSrcCG);
extern int nt_scg_create_blend(int wNumDstCG, int wNumBaseCG, int wX, int wY, int wNumBlendCG, int wAlphaMapMode);
extern int nt_scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, char *cText);
extern int nt_scg_create_textnum(int wNumCG, int wSize, int wR, int wG, int wB, int wFigs, int wZeroPadding, int wValue);
extern int nt_scg_copy(int wNumDstCG, int wNumSrcCG);
extern int nt_scg_cut(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight);
extern int nt_scg_partcopy(int wNumDstCG, int wNumSrcCG, int wX, int wY, int wWidth, int wHeight);
extern int nt_scg_freeall();
extern int nt_scg_free(int cg);
extern int nt_scg_free_cgobj(cginfo_t *cg);
extern int nt_scg_querytype(int wNumCG, int *ret);
extern int nt_scg_querysize(int wNumCG, int *w, int *h);
extern int nt_scg_querybpp(int wNumCG, int *ret);
extern int nt_scg_existalphamap(int wNumCG, int *ret);
extern int nt_scg_linkcgfree(int no);
#endif
+8 -8
View File
@@ -51,7 +51,7 @@ static char *replacedst;
/**
* 文字列変数スタックの初期化
*/
int sstr_init() {
int nt_sstr_init() {
stack = malloc(sizeof(char *) * DEFSTACKSIZE);
idx = 0;
idxmax = DEFSTACKSIZE;
@@ -62,7 +62,7 @@ int sstr_init() {
* 文字列変数スタックに文字列を積む
* @param strno: シナリオ上での文字列変数番号
*/
int sstr_push(char *str) {
int nt_sstr_push(char *str) {
if (idx >= idxmax) {
stack = realloc(stack, sizeof(char *) * idx*2);
idxmax = idx*2;
@@ -77,7 +77,7 @@ int sstr_push(char *str) {
* 文字列変数スタックから文字列を取り出す
* @param strno: スタックから戻した文字列を格納する文字列変数番号
*/
int sstr_pop(char *str, int maxlen) {
int nt_sstr_pop(char *str, int maxlen) {
if (idx == 0) return NG;
strncpy(str, stack[--idx], maxlen);
@@ -91,14 +91,14 @@ int sstr_pop(char *str, int maxlen) {
* @param sstrno: 変換元文字列変数番号
* @param dstrno: 変換先文字列変数番号
*/
int sstr_regist_replace(char *sstr, char *dstr) {
int nt_sstr_regist_replace(char *sstr, char *dstr) {
strexchange_t *ex;
if (sstr == dstr) return NG;
ex = malloc(sizeof(strexchange_t));
ex->src = strdup(sstr);
ex->dst = strdup(dstr);
ex->src = sstr;
ex->dst = dstr;
strreplace = slist_append(strreplace, ex);
return OK;
}
@@ -106,7 +106,7 @@ int sstr_regist_replace(char *sstr, char *dstr) {
/**
* 数値 -> 文字列化
*/
int sstr_num2str(int strno, int fig, int nzeropad, int num) {
int nt_sstr_num2str(int strno, int fig, int nzeropad, int num) {
char s[256], ss[256];
if (nzeropad) {
@@ -148,7 +148,7 @@ static void replacestr_cb(void* data, void* userdata) {
}
// 文字列の置き換え
char *sstr_replacestr(char *msg) {
char *nt_sstr_replacestr(char *msg) {
if (strreplace == NULL) return msg;
repbuf[0][0] = '\0';
+6 -6
View File
@@ -24,12 +24,12 @@
#ifndef __SACTSTRING_H__
#define __SACTSTRING_H__
extern int sstr_init();
extern int sstr_push(char *str);
extern int sstr_pop(char *str, int maxlen);
extern int sstr_regist_replace(char *sstr, char *dstr);
extern int sstr_num2str(int strno, int fig, int nzeropad, int num);
extern char *sstr_replacestr(char *msg);
extern int nt_sstr_init();
extern int nt_sstr_push(char *str);
extern int nt_sstr_pop(char *str, int maxlen);
extern int nt_sstr_regist_replace(char *sstr, char *dstr);
extern int nt_sstr_num2str(int strno, int fig, int nzeropad, int num);
extern char *nt_sstr_replacestr(char *msg);
#endif /* __SACTSTRING_H__ */
-2
View File
@@ -1,2 +0,0 @@
#define SNAME_RYO "亮    "
#define SNAME_RYO_DEF "亮"
+15 -15
View File
@@ -9,7 +9,7 @@
#include "ngraph.h"
#include "nt_msg.h"
sprite_t *sp_new(int no, int cg1, int cg2, int cg3, int type) {
sprite_t *nt_sp_new(int no, int cg1, int cg2, int cg3, int type) {
sprite_t *sp;
sp = calloc(1, sizeof(sprite_t));
@@ -17,9 +17,9 @@ sprite_t *sp_new(int no, int cg1, int cg2, int cg3, int type) {
sp->no = no;
sp->type = type;
if (cg1) sp->cg1 = scg_loadcg_no(cg1, TRUE); else sp->cg1 = NULL;
if (cg2) sp->cg2 = scg_loadcg_no(cg2, TRUE); else sp->cg2 = NULL;
if (cg3) sp->cg3 = scg_loadcg_no(cg3, TRUE); else sp->cg3 = NULL;
if (cg1) sp->cg1 = nt_scg_loadcg_no(cg1, TRUE); else sp->cg1 = NULL;
if (cg2) sp->cg2 = nt_scg_loadcg_no(cg2, TRUE); else sp->cg2 = NULL;
if (cg3) sp->cg3 = nt_scg_loadcg_no(cg3, TRUE); else sp->cg3 = NULL;
sp->curcg = sp->cg1;
sp->show = TRUE;
@@ -47,7 +47,7 @@ sprite_t *sp_new(int no, int cg1, int cg2, int cg3, int type) {
return sp;
}
sprite_t *sp_msg_new(int no, int x, int y, int width, int height) {
sprite_t *nt_sp_msg_new(int no, int x, int y, int width, int height) {
sprite_t *sp;
sp = calloc(1, sizeof(sprite_t));
@@ -69,12 +69,12 @@ sprite_t *sp_msg_new(int no, int x, int y, int width, int height) {
return sp;
}
void sp_free(sprite_t *sp) {
void nt_sp_free(sprite_t *sp) {
if (sp == NULL) return;
if (sp->cg1) scg_free_cgobj(sp->cg1);
if (sp->cg2) scg_free_cgobj(sp->cg2);
if (sp->cg3) scg_free_cgobj(sp->cg3);
if (sp->cg1) nt_scg_free_cgobj(sp->cg1);
if (sp->cg2) nt_scg_free_cgobj(sp->cg2);
if (sp->cg3) nt_scg_free_cgobj(sp->cg3);
if (sp->type == SPRITE_MSG) {
sf_free(sp->u.msg.canvas);
@@ -83,7 +83,7 @@ void sp_free(sprite_t *sp) {
free(sp);
}
void sp_set_show(sprite_t *sp, boolean show) {
void nt_sp_set_show(sprite_t *sp, boolean show) {
boolean oldshow;
if (sp == NULL) return;
@@ -92,22 +92,22 @@ void sp_set_show(sprite_t *sp, boolean show) {
sp->show = show;
if (oldshow != show) {
sp_updateme(sp);
nt_sp_updateme(sp);
}
}
#if 0
void sp_set_cg(sprite_t *sp, int no) {
void nt_sp_set_cg(sprite_t *sp, int no) {
cginfo_t *cg;
if (sp == NULL) return;
if (sp->curcg) {
scg_free_cgobj(sp->curcg);
nt_scg_free_cgobj(sp->curcg);
}
if (no) {
cg = scg_loadcg_no(no, TRUE);
cg = nt_scg_loadcg_no(no, TRUE);
} else {
cg = NULL;
}
@@ -124,7 +124,7 @@ void sp_set_cg(sprite_t *sp, int no) {
}
#endif
void sp_set_loc(sprite_t *sp, int x, int y) {
void nt_sp_set_loc(sprite_t *sp, int x, int y) {
if (sp == NULL) return;
sp->cur.x = sp->loc.x = x;
sp->cur.y = sp->loc.y = y;
+19 -19
View File
@@ -6,7 +6,7 @@
#include "surface.h"
#include "graphics.h"
#define DEFAULT_UPDATE sp_draw
#define DEFAULT_UPDATE nt_sp_draw
#define SPRITEMAX 20
@@ -107,30 +107,30 @@ typedef struct _sprite sprite_t;
/* in nt_sprite.c */
extern sprite_t *sp_new(int no, int cg1, int cg2, int cg3, int type);
extern sprite_t *sp_msg_new(int no, int x, int y, int width, int height);
extern void sp_free(sprite_t *sp);
extern void sp_set_show(sprite_t *sp, boolean show);
// extern void sp_set_cg(sprite_t *sp, int no);
extern void sp_set_loc(sprite_t *sp, int x, int y);
extern sprite_t *nt_sp_new(int no, int cg1, int cg2, int cg3, int type);
extern sprite_t *nt_sp_msg_new(int no, int x, int y, int width, int height);
extern void nt_sp_free(sprite_t *sp);
extern void nt_sp_set_show(sprite_t *sp, boolean show);
// extern void nt_sp_set_cg(sprite_t *sp, int no);
extern void nt_sp_set_loc(sprite_t *sp, int x, int y);
/* in nt_sprite_update.c */
extern int sp_update_clipped();
extern int sp_update_all(boolean syncscreen);
extern int sp_updateme(sprite_t *sp);
extern int sp_updateme_part(sprite_t *sp, int x, int y, int w, int h);
extern void sp_add_updatelist(sprite_t *sp);
extern void sp_remove_updatelist(sprite_t *sp);
extern int sp_draw_wall(sprite_t *sp, MyRectangle *r);
extern int nt_sp_update_clipped();
extern int nt_sp_update_all(boolean syncscreen);
extern int nt_sp_updateme(sprite_t *sp);
extern int nt_sp_updateme_part(sprite_t *sp, int x, int y, int w, int h);
extern void nt_sp_add_updatelist(sprite_t *sp);
extern void nt_sp_remove_updatelist(sprite_t *sp);
extern int nt_sp_draw_wall(sprite_t *sp, MyRectangle *r);
/* in nt_sprite_draw.c */
extern int sp_draw(sprite_t *sp, MyRectangle *r);
extern int sp_draw2(sprite_t *sp, cginfo_t *cg, MyRectangle *r);
extern void sp_draw_dmap(void* data, void* userdata);
extern int sp_draw_scg(sprite_t *sp, MyRectangle *r);
extern int nt_sp_draw(sprite_t *sp, MyRectangle *r);
extern int nt_sp_draw2(sprite_t *sp, cginfo_t *cg, MyRectangle *r);
extern void nt_sp_draw_dmap(void* data, void* userdata);
extern int nt_sp_draw_scg(sprite_t *sp, MyRectangle *r);
/* in nt_sprite_eupdate.c */
extern int sp_eupdate(int type, int time, int cancel);
extern int nt_sp_eupdate(int type, int time, int cancel);
#endif /* __SPRITE_H__ */
+6 -6
View File
@@ -38,10 +38,10 @@
@param sp: 描画するスプライト
@param r : 再描画する領域
*/
int sp_draw(sprite_t *sp, MyRectangle *r) {
int nt_sp_draw(sprite_t *sp, MyRectangle *r) {
if (sp == NULL) return NG;
return sp_draw2(sp, sp->curcg, r);
return nt_sp_draw2(sp, sp->curcg, r);
}
/*
@@ -52,7 +52,7 @@ int sp_draw(sprite_t *sp, MyRectangle *r) {
@param cg: 描画するCG
@param r : 再描画する領域
*/
int sp_draw2(sprite_t *sp, cginfo_t *cg, MyRectangle *r) {
int nt_sp_draw2(sprite_t *sp, cginfo_t *cg, MyRectangle *r) {
surface_t update;
int sx, sy, w, h, dx, dy;
@@ -96,14 +96,14 @@ int sp_draw2(sprite_t *sp, cginfo_t *cg, MyRectangle *r) {
}
}
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
sp->no, sx, sy, w, h, dx, dy);
return OK;
}
// BlendScreenによる描画
int sp_draw_scg(sprite_t *sp, MyRectangle *r) {
int nt_sp_draw_scg(sprite_t *sp, MyRectangle *r) {
surface_t update;
cginfo_t *cg;
int sx, sy, w, h, dx, dy;
@@ -136,7 +136,7 @@ int sp_draw_scg(sprite_t *sp, MyRectangle *r) {
sf0, dx, dy,
cg->sf, sx, sy, w, h);
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
sp->no, sx, sy, w, h, dx, dy);
return OK;
+9 -9
View File
@@ -88,7 +88,7 @@ static void ec1_cb(surface_t *sfsrc, surface_t *sfdst) {
}
gre_Blend(sf0, 0, 0, sfsrc, 0, 0, sfdst, 0, 0, sfsrc->width, sfsrc->height, curstep);
// WARNING("step = %d\n", curstep);
// SACT_DEBUG("step = %d\n", curstep);
ags_updateFull();
ecp.oldstep = curstep;
@@ -101,7 +101,7 @@ static void ec7_cb(surface_t *sfsrc, surface_t *sfdst) {
int i, t, y;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
//WARNING("step = %d\n", curstep);
//SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -129,7 +129,7 @@ static void ec8_cb(surface_t *sfsrc, surface_t *sfdst) {
int i, t, x;
curstep = maxstep * (ecp.curtime - ecp.sttime) / (ecp.edtime - ecp.sttime);
//WARNING("step = %d\n", curstep);
//SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -160,7 +160,7 @@ static void ec9_cb(surface_t *sfsrc, surface_t *sfdst) {
sfsrc->width / EC9DELTA + EC9DELTA);
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
//WARNING("step = %d\n", curstep);
//SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -194,7 +194,7 @@ static void ec12_cb(surface_t *src, surface_t *dst) {
int j, st_i, ed_i, l;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0); return;
@@ -225,7 +225,7 @@ static void ec13_cb(surface_t *src, surface_t *dst) {
int dyy = 0 + sf0->height -1;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0); return;
@@ -364,7 +364,7 @@ static void ec_whiteout_cb(surface_t *sfsrc, surface_t *sfdst) {
@param time: 実行時間(msec)
@param cancel: キー抜け(0:なし, 1:あり)
*/
int sp_eupdate(int type, int time, int cancel) {
int nt_sp_eupdate(int type, int time, int cancel) {
surface_t *sfsrc, *sfdst;
int key;
entrypoint *cb;
@@ -372,7 +372,7 @@ int sp_eupdate(int type, int time, int cancel) {
// 現在の sf0 をセーブ
sfsrc = sf_dup(sf0);
sp_update_all(FALSE);
nt_sp_update_all(FALSE);
sfdst = sf_dup(sf0);
@@ -415,7 +415,7 @@ int sp_eupdate(int type, int time, int cancel) {
cb = ec_dummy_cb;
break;
case 1013:
sp_update_all(TRUE); return OK;
nt_sp_update_all(TRUE); return OK;
// cb = ec_dummy_cb;
break;
default:
+14 -14
View File
@@ -67,8 +67,8 @@ static void disjunction(void* region, void* data) {
MyRectangle *r2 = (MyRectangle *)data;
int x1, x2, y1, y2;
//WARNING("r1x=%d,r1y=%d,r1w=%d,r1h=%d\n", r1->x, r1->y, r1->width, r1->height);
//WARNING("r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
//SACT_DEBUG("r1x=%d,r1y=%d,r1w=%d,r1h=%d\n", r1->x, r1->y, r1->width, r1->height);
//SACT_DEBUG("r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
if (r2->width == 0) {
r2->x = r1->x;
@@ -88,7 +88,7 @@ static void disjunction(void* region, void* data) {
r2->width = x2 - x1;
r2->height = y2 - y1;
//WARNING("res:r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
//SACT_DEBUG("res:r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
}
// 更新の必要なスプライトの領域の和をとってクリッピングする
@@ -105,7 +105,7 @@ static MyRectangle get_updatearea() {
// surface0との領域の積をとる
intersection(&rsf0, &clip, &result);
WARNING("clipped area x=%d y=%d w=%d h=%d\n",
SACT_DEBUG("clipped area x=%d y=%d w=%d h=%d\n",
result.x, result.y,
result.width, result.height);
@@ -130,7 +130,7 @@ static void do_update_each(void* data, void* userdata) {
画面全体の更新
@param syncscreen: surface0 に描画したものを Screen に反映させるかどうか
*/
int sp_update_all(boolean syncscreen) {
int nt_sp_update_all(boolean syncscreen) {
// 画面全体を更新領域に
MyRectangle r = {0, 0, sf0->width, sf0->height };
@@ -152,7 +152,7 @@ int sp_update_all(boolean syncscreen) {
画面の一部を更新
updateme(_part)で登録した更新が必要なspriteの和の領域をupdate
*/
int sp_update_clipped() {
int nt_sp_update_clipped() {
MyRectangle r;
// 更新領域の確定
@@ -176,7 +176,7 @@ int sp_update_clipped() {
sprite全体の更新を登録
@param sp: 更新するスプライト
*/
int sp_updateme(sprite_t *sp) {
int nt_sp_updateme(sprite_t *sp) {
MyRectangle *r;
if (sp == NULL) return NG;
@@ -190,7 +190,7 @@ int sp_updateme(sprite_t *sp) {
updatearea = slist_append(updatearea, r);
WARNING("x = %d, y = %d, spno = %d w=%d,h=%d\n",
SACT_DEBUG("x = %d, y = %d, spno = %d w=%d,h=%d\n",
r->x, r->y, sp->no, r->width, r->height);
return OK;
@@ -204,7 +204,7 @@ int sp_updateme(sprite_t *sp) {
@param w: 更新領域幅
@param h: 更新領域高さ
*/
int sp_updateme_part(sprite_t *sp, int x, int y, int w, int h) {
int nt_sp_updateme_part(sprite_t *sp, int x, int y, int w, int h) {
MyRectangle *r;
if (sp == NULL) return NG;
@@ -218,7 +218,7 @@ int sp_updateme_part(sprite_t *sp, int x, int y, int w, int h) {
updatearea = slist_append(updatearea, r);
WARNING("x = %d, y = %d, spno = %d w=%d,h=%d\n",
SACT_DEBUG("x = %d, y = %d, spno = %d w=%d,h=%d\n",
r->x, r->y, sp->no, r->width, r->height);
return OK;
@@ -238,16 +238,16 @@ static int compare_spriteno_smallfirst(const void *a, const void *b) {
return 0;
}
void sp_add_updatelist(sprite_t *sp) {
void nt_sp_add_updatelist(sprite_t *sp) {
updatelist = slist_insert_sorted(updatelist, sp, compare_spriteno_smallfirst);
}
void sp_remove_updatelist(sprite_t *sp) {
void nt_sp_remove_updatelist(sprite_t *sp) {
updatelist = slist_remove(updatelist, sp);
}
// デフォルトの壁紙update
int sp_draw_wall(sprite_t *sp, MyRectangle *area) {
int nt_sp_draw_wall(sprite_t *sp, MyRectangle *area) {
int sx, sy, w, h;
sx = area->x;
@@ -256,7 +256,7 @@ int sp_draw_wall(sprite_t *sp, MyRectangle *area) {
h = area->height;
gr_fill(sf0, sx, sy, w, h, 0, 0, 0);
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, \n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, \n",
sp->no, sx, sy, w, h);
return OK;
-9
View File
@@ -1,9 +0,0 @@
include(FindJPEG)
if (JPEG_FOUND)
add_library(NightDemonDemo MODULE NightDemonDemo.c ndd.c jpeg2surface.c)
target_link_libraries(NightDemonDemo PRIVATE graph alk JPEG::JPEG)
install(TARGETS NightDemonDemo DESTINATION lib/xsystem35)
endif()
+15 -3
View File
@@ -28,28 +28,40 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
extern void ndd_init(char *files[], int n);
extern void ndd_init(const char *files[], int n);
extern void ndd_run(int demonum);
void Init() {
static void Init() {
int p1 = getCaliValue(); /* ISys3x */
int p2 = getCaliValue(); /* IWinMsg */
int p3 = getCaliValue(); /* ITimer */
int *var = getCaliVariable();
#ifdef HAVE_JPEG
ndd_init(nact->files.alk, 4);
#endif
*var = 1;
DEBUG_COMMAND("NightDemonDemo.Init %d,%d,%d,%p:\n", p1, p2, p3, var);
}
void Run() {
static void Run() {
int p1 = getCaliValue(); // デモ番号 0,1,2
int p2 = getCaliValue();
#ifdef HAVE_JPEG
ndd_run(p1);
#endif
DEBUG_COMMAND("NightDemonDemo.Run %d,%d:\n", p1, p2);
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"Run", Run},
};
const Module module_NightDemonDemo = {"NightDemonDemo", functions, sizeof(functions) / sizeof(ModuleFunc)};
+4 -2
View File
@@ -21,10 +21,12 @@
*/
/* $Id: jpeg2surface.c,v 1.2 2003/11/09 15:06:12 chikama Exp $ */
#include "config.h"
#include <stdio.h>
#include <jpeglib.h>
#undef max
#undef min
#include "config.h"
#include "portab.h"
#include "ags.h"
+2 -2
View File
@@ -39,7 +39,7 @@
// 2: Meteo
struct nddemo {
char **fn;
const char **fn;
alk_t *alk;
surface_t *sf[10];
};
@@ -52,7 +52,7 @@ static int ndemo_nums[3] = {150, 603, 467};
extern surface_t *jpeg2surface(FILE *fp, int offset);
// ALKファイルの登録
void ndd_init(char *files[], int n) {
void ndd_init(const char *files[], int n) {
int i;
ndd.fn = malloc(sizeof(char *) * n);
-3
View File
@@ -1,3 +0,0 @@
add_library(RandMT MODULE RandMT.c)
install(TARGETS RandMT DESTINATION lib/xsystem35)
+12 -3
View File
@@ -28,10 +28,11 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "randMT.h"
void Init() {
static void Init() {
/*
乱数初期化
@@ -42,7 +43,7 @@ void Init() {
DEBUG_COMMAND_YET("RandMT.Init %p:\n", p1);
}
void Get() {
static void Get() {
/*
1 から num までの乱数を生成
@@ -61,10 +62,18 @@ void Get() {
DEBUG_COMMAND_YET("RandMT.Get %d,%p:\n", num, var);
}
void GetNoOverlap() { /* not used ? */
static void GetNoOverlap() { /* not used ? */
int p1 = getCaliValue();
int p2 = getCaliValue();
int *var1 = getCaliVariable();
DEBUG_COMMAND_YET("RandMT.GetNoOverlap %p:\n", p1);
}
static const ModuleFunc functions[] = {
{"Get", Get},
{"GetNoOverlap", GetNoOverlap},
{"Init", Init},
};
const Module module_RandMT = {"RandMT", functions, sizeof(functions) / sizeof(ModuleFunc)};
-35
View File
@@ -1,35 +0,0 @@
add_library(SACT MODULE
SACT.c
sactcg.c
sactsound.c
sactbgm.c
sacttimer.c
sactstring.c
sactcrypto.c
sactchart.c
sactamask.c
sactlog.c
sprite.c
sprite_event.c
sprite_tevent.c
sprite_move.c
sprite_anime.c
sprite_get.c
sprite_put.c
sprite_switch.c
sprite_sel.c
sprite_msg.c
sprite_draw.c
sprite_update.c
sprite_eupdate.c
sprite_quake.c
sprite_keywait.c
screen_quake.c
sprite_xmenu.c
)
target_compile_options(SACT PRIVATE -Wno-pointer-sign -Wno-invalid-source-encoding)
target_link_libraries(SACT PRIVATE graph drawtext list)
install(TARGETS SACT DESTINATION lib/xsystem35)
+248 -122
View File
File diff suppressed because it is too large Load Diff
+2 -4
View File
@@ -32,7 +32,7 @@
#include "surface.h"
#include "sacttimer.h"
#include "variable.h"
#include "mmap.h"
// スプライトの最大数
#define SPRITEMAX 21845
@@ -63,9 +63,7 @@ typedef struct {
// SACTEFAM を使ったマスク
typedef struct {
int fd; // SACTEFAM.KLD のファイルディスクプリタ
char *mapadr; // mmap された最初のアドレス
off_t size; // mmap した大きさ
mmap_t *mmap;
int datanum; // SACTEFAM.KLD 中のマスクファイルの数
int *no; // シナリオ側での番号
int *offset; // データへのオフセット
+8 -32
View File
@@ -27,11 +27,6 @@
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "portab.h"
#include "system.h"
@@ -60,40 +55,21 @@ static ecopyparam_t ecp;
// SACTEFAM.KLD の読み込み
int smask_init(char *path) {
struct stat sbuf;
int i, fd;
char *adr;
int i;
SACTEFAM_t *am;
if (0 > (fd = open(path, O_RDONLY))) {
WARNING("open: %s\n", strerror(errno));
mmap_t *m = map_file(path);
if (!m)
return NG;
}
if (0 > fstat(fd, &sbuf)) {
WARNING("fstat: %s\n", strerror(errno));
close(fd);
return NG;
}
if (MAP_FAILED == (adr = mmap(0, sbuf.st_size, PROT_READ, MAP_SHARED, fd, 0))) {
WARNING("mmap: %s\n", strerror(errno));
close(fd);
return NG;
}
am = &sact.am;
am->mapadr = adr;
am->size = sbuf.st_size;
am->fd = fd;
am->datanum = LittleEndian_getDW(adr, 0);
am->mmap = m;
am->datanum = LittleEndian_getDW(m->addr, 0);
am->no = malloc(sizeof(int) * am->datanum);
am->offset = malloc(sizeof(int) * am->datanum);
for (i = 0; i < am->datanum; i++) {
am->no[i] = LittleEndian_getDW(adr, 16 + i * 16);
am->offset[i] = LittleEndian_getDW(adr, 16 + i * 16 + 8);
am->no[i] = LittleEndian_getDW(m->addr, 16 + i * 16);
am->offset[i] = LittleEndian_getDW(m->addr, 16 + i * 16 + 8);
}
return OK;
@@ -110,7 +86,7 @@ static surface_t *smask_get(int no) {
if (i == am->datanum) return NULL;
return sf_getcg(am->mapadr + am->offset[i]);
return sf_getcg(am->mmap->addr + am->offset[i]);
}
// ベースになるマスクの alpha 値を拡大して取り出す
+1 -1
View File
@@ -24,6 +24,6 @@
#ifndef __SACTAMASK_H__
#define __SACTAMASK_H__
extern int smask_init(char *path);
extern int smask_init(const char *path);
#endif
+1 -1
View File
@@ -206,7 +206,7 @@ int scg_create_text(int wNumCG, int wSize, int wR, int wG, int wB, int wText) {
FONT *font;
if (0) {
char *b = sjis2lang(v_str(wText-1));
char *b = sjis2utf(v_str(wText-1));
WARNING("str = '%s'\n", b);
free(b);
}
+21 -12
View File
@@ -40,7 +40,17 @@
#include "ngraph.h"
#include "drawtext.h"
#include "utfsjis.h"
#include "sactlog_sjismsg.c"
#define LOGMSG_LINES 6
static const char *logmsg[LOGMSG_LINES] = {
"\n",
"※バックログ操作方法※",
"[ESC]またはマウス右クリックでゲームに戻る",
"[PageUp][PageDown]でページスクロール",
"[↑][↓]またはマウスホイールで行スクロール",
"\n",
};
/*
ホイールで上下スクロール
@@ -73,21 +83,18 @@ static void draw_log() {
// 表示始め位置
node = list_nth(sact.log, list_length(sact.log) - curline);
for (i = 0; i < LOGLINENUM; i++) {
char *str, *streuc;
if (cur <= 0) continue;
str = (char *)(node->data);
char *str = (char *)(node->data);
if (0 == strcmp(str, "\n")) {
gr_fill(chr, 0, y + FONTSIZE/2, sf0->width, 3, 128, 0, 0);
} else {
streuc = sjis2lang(str);
if (cur < 6) {
dt_setfont(FONT_MINCHO, FONTSIZE);
} else {
dt_setfont(FONT_GOTHIC, FONTSIZE);
}
dt_drawtext(chr, 0, y, str);
free(streuc);
}
y += FONTSIZE;
cur--;
@@ -103,13 +110,15 @@ static void draw_log() {
int sblog_start(void) {
static char *logmsg_sjis[6];
if (!logmsg_sjis[0]) {
for (int i = 0; i < LOGMSG_LINES; i++)
logmsg_sjis[i] = utf2sjis(logmsg[i]);
}
// 説明文章を追加
sact.log = list_append(sact.log, "\n");
sact.log = list_append(sact.log, LOGMSG1);
sact.log = list_append(sact.log, LOGMSG2);
sact.log = list_append(sact.log, LOGMSG3);
sact.log = list_append(sact.log, LOGMSG4);
sact.log = list_append(sact.log, "\n");
for (int i = 0; i < LOGMSG_LINES; i++)
sact.log = list_append(sact.log, logmsg_sjis[i]);
back = sf_dup(sf0);
chr = sf_create_surface(sf0->width, sf0->height, 8);
@@ -129,7 +138,7 @@ int sblog_end(void) {
sf_free(chr);
// 説明文章を削除
for (i = 0; i < 6; i++) {
for (i = 0; i < LOGMSG_LINES; i++) {
node = list_last(sact.log);
sact.log = list_remove(sact.log, node->data);
}
-5
View File
@@ -1,5 +0,0 @@
#define LOGMSG1 "※バックログ操作方法※"
#define LOGMSG2 "[ESC]またはマウス右クリックでゲームに戻る"
#define LOGMSG3 "[PageUp][PageDown]でページスクロール"
#define LOGMSG4 "[↑][↓]またはマウスホイールで行スクロール"
+2 -3
View File
@@ -140,14 +140,13 @@ int ssnd_waitkey(int no, int *res) {
}
if (sact.waitkey == -1) {
cache[slot - SLOTOFFSET] = 0;
*res = 0;
} else {
*res = sact.waitkey;
}
sact.waittype = KEYWAIT_NONE;
cache[slot - SLOTOFFSET] = 0;
return OK;
}
+1 -1
View File
@@ -81,7 +81,7 @@ static int sp_draw_wall(sprite_t *sp) {
h = sact.updaterect.height;
gr_fill(sf0, sx, sy, w, h, 0, 0, 0);
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, \n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, \n",
sp->no, sx, sy, w, h);
return OK;
+1 -1
View File
@@ -83,7 +83,7 @@ extern void sp_draw_dmap(void* data, void* userdata);
// in sprite_msg.c
extern void smsg_add(char *msg);
extern void smsg_add(const char *msg);
extern void smsg_newline(int wNum, int size);
extern void smsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB, int wFont, int wSpeed, int wLineSpace, int wAlign, int wRSize, int wRFont, int wRLineSpace, int *wLength);
extern void smsg_clear(int wNum);
+1 -1
View File
@@ -62,7 +62,7 @@ static int eventCB_ANIM(sprite_t *sp, agsevent_t *e) {
sp->curcg = sp->cg3; break;
}
// WARNING("anime update\n");
// SACT_DEBUG("anime update\n");
// カウントアップ
sp->u.anime.tick++;
+1 -1
View File
@@ -137,7 +137,7 @@ int sp_draw2(sprite_t *sp, cginfo_t *cg) {
}
}
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n", sp->no, sx, sy, w, h, dx, dy);
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n", sp->no, sx, sy, w, h, dx, dy);
return OK;
}
+6 -6
View File
@@ -131,7 +131,7 @@ static void ec1_cb(surface_t *sfsrc, surface_t *sfdst) {
}
gre_Blend(sf0, 0, 0, sfsrc, 0, 0, sfdst, 0, 0, sfsrc->width, sfsrc->height, curstep);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
ags_updateFull();
ecp.oldstep = curstep;
@@ -144,7 +144,7 @@ static void ec7_cb(surface_t *sfsrc, surface_t *sfdst) {
int i, t, y;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -172,7 +172,7 @@ static void ec8_cb(surface_t *sfsrc, surface_t *sfdst) {
int i, t, x;
curstep = maxstep * (ecp.curtime - ecp.sttime) / (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -203,7 +203,7 @@ static void ec9_cb(surface_t *sfsrc, surface_t *sfdst) {
sfsrc->width / EC9DELTA + EC9DELTA);
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0);
@@ -237,7 +237,7 @@ static void ec12_cb(surface_t *src, surface_t *dst) {
int j, st_i, ed_i, l;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0); return;
@@ -268,7 +268,7 @@ static void ec13_cb(surface_t *src, surface_t *dst) {
int dyy = 0 + sf0->height -1;
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
WARNING("step = %d\n", curstep);
SACT_DEBUG("step = %d\n", curstep);
if (ecp.oldstep == curstep) {
usleep(0); return;
+1 -1
View File
@@ -15,7 +15,7 @@ static void ec10_cb(surface_t *sfsrc, surface_t *sfdst) {
curstep = maxstep * (ecp.curtime - ecp.sttime)/ (ecp.edtime - ecp.sttime);
turstep = maxstep / 2;
WARNING("step = %d/%d\n", curstep, maxstep);
SACT_DEBUG("step = %d/%d\n", curstep, maxstep);
if (curstep > turstep) {
// 帰り
+4 -4
View File
@@ -92,7 +92,7 @@ static void cb_focused_swsp(void* s, void* data) {
int *update = (int *)data;
boolean oldstate = sp->show;
WARNING("show up spex %d\n", sp->no);
SACT_DEBUG("show up spex %d\n", sp->no);
sp->show = TRUE;
if (oldstate != sp->show) {
@@ -110,7 +110,7 @@ static void cb_defocused_swsp(void* s, void* data) {
int *update = (int *)data;
boolean oldstate = sp->show;
WARNING("hide spex %d\n", sp->no);
SACT_DEBUG("hide spex %d\n", sp->no);
sp->show = FALSE;
if (oldstate != sp->show) {
@@ -174,7 +174,7 @@ static int cb_focused(sprite_t *sp) {
update++;
}
sp->focused = TRUE;
WARNING("get forcused %d, type %d\n", sp->no, sp->type);
SACT_DEBUG("get forcused %d, type %d\n", sp->no, sp->type);
if (sp->numsound1) {
ssnd_play(sp->numsound1);
}
@@ -197,7 +197,7 @@ static int cb_defocused(sprite_t *sp) {
sp->curcg = sp->cg1;
update++;
sp->focused = FALSE;
WARNING("lost forcused %d\n", sp->no);
SACT_DEBUG("lost forcused %d\n", sp->no);
}
return update;
+4 -2
View File
@@ -74,7 +74,7 @@ static int move_cb(sprite_t *sp, agsevent_t *e) {
// 現在時刻の取得
now = sact.movecurtime;
WARNING("no = %d now = %d st = %d, ed = %d\n",
SACT_DEBUG("no = %d now = %d st = %d, ed = %d\n",
sp->no, now, sp->move.starttime, sp->move.endtime);
if (now >= sp->move.endtime) {
@@ -135,7 +135,7 @@ void spev_move_setup(void* data, void* userdata) {
// タイマコールバック登録
spev_add_teventlistener(sp, move_cb);
WARNING("no=%d,from(%d,%d@%d)to(%d,%d@%d),time=%d\n", sp->no,
SACT_DEBUG("no=%d,from(%d,%d@%d)to(%d,%d@%d),time=%d\n", sp->no,
sp->cur.x, sp->cur.y, sp->move.starttime,
sp->move.to.x, sp->move.to.y, sp->move.endtime,
sp->move.time);
@@ -164,6 +164,7 @@ void spev_move_waitend(sprite_t *sp, int dx, int dy, int time) {
while (sp->move.moving) {
nact->callback();
WaitVsync();
}
}
@@ -182,6 +183,7 @@ void spev_wait4moving_sp() {
while (sp->move.moving) {
nact->callback();
WaitVsync();
}
}
}
+6 -6
View File
@@ -188,13 +188,13 @@ static int setupmark(int wNum1, int wNum2, struct markinfo *minfo) {
@param msg: 追加する文字列
*/
void smsg_add(char *msg) {
void smsg_add(const char *msg) {
int len;
if (msg[0] == '\0') return;
if (0) {
char *b = sjis2lang(msg);
char *b = sjis2utf(msg);
fprintf(stderr, "add msg '%s'\n", b);
free(b);
}
@@ -305,7 +305,7 @@ void smsg_out(int wNum, int wSize, int wColorR, int wColorG, int wColorB, int wF
dt_setfont(wFont, wSize);
if (0) {
char *b = sjis2lang(mbuf);
char *b = sjis2utf(mbuf);
fprintf(stderr, "msg '%s'\n", b);
free(b);
}
@@ -392,10 +392,10 @@ void smsg_clear(int wNum) {
/*
出力中の文字列があるかチェック
@return: なし(0) , あり(1)
@return: なし(1) , あり(0)
*/
int smsg_is_empty() {
return (sact.msgbuf[0] != '\0');
return (sact.msgbuf[0] == '\0');
}
/*
@@ -471,7 +471,7 @@ int smsg_update(sprite_t *sp) {
gre_BlendUseAMap(sf0, dx, dy, sf0, dx, dy, sp->u.msg.canvas, sx, sy, w, h, sp->u.msg.canvas, sx, sy, sp->blendrate);
WARNING("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
SACT_DEBUG("do update no=%d, sx=%d, sy=%d, w=%d, h=%d, dx=%d, dy=%d\n",
sp->no, sx, sy, w, h, dx, dy);
return OK;
+6 -6
View File
@@ -63,8 +63,8 @@ static void disjunction(void* region, void* data) {
MyRectangle *r2 = (MyRectangle *)data;
int x1, x2, y1, y2;
//WARNING("r1x=%d,r1y=%d,r1w=%d,r1h=%d\n", r1->x, r1->y, r1->width, r1->height);
//WARNING("r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
//SACT_DEBUG("r1x=%d,r1y=%d,r1w=%d,r1h=%d\n", r1->x, r1->y, r1->width, r1->height);
//SACT_DEBUG("r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
if (r2->width == 0) {
r2->x = r1->x;
@@ -84,7 +84,7 @@ static void disjunction(void* region, void* data) {
r2->width = x2 - x1;
r2->height = y2 - y1;
//WARNING("res:r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
//SACT_DEBUG("res:r2x=%d,r2y=%d,r2w=%d,r2h=%d\n", r2->x, r2->y, r2->width, r2->height);
}
// 更新の必要なスプライトの領域の和をとってクリッピングする
@@ -100,7 +100,7 @@ static void get_updatearea() {
// surface0との領域の積をとる
intersection(&rsf0, &clip, &sact.updaterect);
WARNING("clipped area x=%d y=%d w=%d h=%d\n",
SACT_DEBUG("clipped area x=%d y=%d w=%d h=%d\n",
sact.updaterect.x, sact.updaterect.y,
sact.updaterect.width, sact.updaterect.height);
@@ -206,7 +206,7 @@ int sp_updateme(sprite_t *sp) {
updatearea = slist_append(updatearea, r);
WARNING("x = %d, y = %d, spno = %d w=%d,h=%d\n",
SACT_DEBUG("x = %d, y = %d, spno = %d w=%d,h=%d\n",
r->x, r->y, sp->no, r->width, r->height);
return OK;
@@ -234,7 +234,7 @@ int sp_updateme_part(sprite_t *sp, int x, int y, int w, int h) {
updatearea = slist_append(updatearea, r);
WARNING("x = %d, y = %d, spno = %d w=%d,h=%d\n",
SACT_DEBUG("x = %d, y = %d, spno = %d w=%d,h=%d\n",
r->x, r->y, sp->no, r->width, r->height);
return OK;
-3
View File
@@ -1,3 +0,0 @@
add_library(ShArray MODULE ShArray.c)
install(TARGETS ShArray DESTINATION lib/xsystem35)
+114 -54
View File
@@ -31,9 +31,10 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
void GetAtArray(void) { /* 0 */
static void GetAtArray(void) { /* 0 */
/*
配列から演算しながら値を取り出す
@@ -79,7 +80,7 @@ void GetAtArray(void) { /* 0 */
*vResult = j;
}
void AddAtArray(void) { /* 1 */
static void AddAtArray(void) { /* 1 */
/*
配列1に配列2を足す。65535 を超えたら 65535 に。
@@ -105,7 +106,7 @@ void AddAtArray(void) { /* 1 */
}
}
void SubAtArray(void) { /* 2 */
static void SubAtArray(void) { /* 2 */
/*
配列1から配列2を引く。負になったら0をかく
@@ -131,7 +132,7 @@ void SubAtArray(void) { /* 2 */
}
}
void MulAtArray(void) { /* 3 */
static void MulAtArray(void) { /* 3 */
/*
配列1に配列2をかけて、配列1に格納、65535まで。
@@ -157,7 +158,7 @@ void MulAtArray(void) { /* 3 */
}
}
void DivAtArray(void) { /* 4 */
static void DivAtArray(void) { /* 4 */
/*
配列1を配列2で割って、配列1に格納、65535まで。
@@ -187,7 +188,7 @@ void DivAtArray(void) { /* 4 */
}
}
void MinAtArray(void) { /* 5 */
static void MinAtArray(void) { /* 5 */
/*
配列 vAry1 の中身を配列 vAry2 で下限に設定する
@@ -210,7 +211,7 @@ void MinAtArray(void) { /* 5 */
}
}
void MaxAtArray(void) { /* 6 */
static void MaxAtArray(void) { /* 6 */
/*
配列 vAry1 の中身を配列 vAry2 で上限に設定する
@@ -233,7 +234,7 @@ void MaxAtArray(void) { /* 6 */
}
}
void AndNumArray(void) { /* 7 */
static void AndNumArray(void) { /* 7 */
/*
配列のデータと val で AND をとる
@@ -254,7 +255,7 @@ void AndNumArray(void) { /* 7 */
}
}
void OrNumArray(void) { /* 8 */
static void OrNumArray(void) { /* 8 */
/*
配列のデータと val で OR をとる
@@ -275,7 +276,7 @@ void OrNumArray(void) { /* 8 */
}
}
void XorNumArray(void) { /* 9 */
static void XorNumArray(void) { /* 9 */
/*
配列のデータと val で XOR をとる
@@ -296,7 +297,7 @@ void XorNumArray(void) { /* 9 */
}
}
void SetEquArray(void) { /* 10 */
static void SetEquArray(void) { /* 10 */
/*
配列が val と等しければ 配列 vResults に 1 を、そうでなければ
0 を代入
@@ -320,7 +321,7 @@ void SetEquArray(void) { /* 10 */
}
}
void SetNotArray(void) { /* 11 */
static void SetNotArray(void) { /* 11 */
/*
配列が val と等しくなければ配列 vResults に 1 を、そうでなければ
0 を代入
@@ -344,7 +345,7 @@ void SetNotArray(void) { /* 11 */
}
}
void SetLowArray(void) { /* 12 */
static void SetLowArray(void) { /* 12 */
/*
配列データが val よりも小さければ vResult に 1 をセット
@@ -367,7 +368,7 @@ void SetLowArray(void) { /* 12 */
}
}
void SetHighArray(void) { /* 13 */
static void SetHighArray(void) { /* 13 */
/*
配列データが val よりも大きければ vResult に 1 をセット
@@ -390,7 +391,7 @@ void SetHighArray(void) { /* 13 */
}
}
void SetRangeArray(void) { /* 14 */
static void SetRangeArray(void) { /* 14 */
/*
配列データがある範囲(min〜max)にあるかチェック
@@ -417,7 +418,7 @@ void SetRangeArray(void) { /* 14 */
}
}
void SetAndEquArray(void) { /* 15 */
static void SetAndEquArray(void) { /* 15 */
/*
配列 vAry と mask との AND をとって val に等しければ
配列 vResults に1を、等しくなければ 0 を書く
@@ -444,7 +445,7 @@ void SetAndEquArray(void) { /* 15 */
}
}
void AndEquArray(void) { /* 16 */
static void AndEquArray(void) { /* 16 */
/*
配列 vAry 中で val と同じならば、vResult と 1 の AND を
違うならば 0 をかく。
@@ -468,7 +469,7 @@ void AndEquArray(void) { /* 16 */
}
}
void AndNotArray(void) { /* 17 */
static void AndNotArray(void) { /* 17 */
/*
配列 vAry 中で val と等しくないならば、vResult と 1 の AND を
違う場合は 0 をかく。
@@ -492,7 +493,7 @@ void AndNotArray(void) { /* 17 */
}
}
void AndLowArray(void) { /* 18 */
static void AndLowArray(void) { /* 18 */
/*
配列 vAry が min よりも小さいならば、vResult と 1 の AND を
そうでないならば 0 をかく。
@@ -516,7 +517,7 @@ void AndLowArray(void) { /* 18 */
}
}
void AndHighArray(void) { /* 19 */
static void AndHighArray(void) { /* 19 */
/*
配列 vAry が min よりも大きいならば、vResult と 1 の AND を
そうでないならば 0 をかく。
@@ -540,7 +541,7 @@ void AndHighArray(void) { /* 19 */
}
}
void AndRangeArray(void) { /* 20 */
static void AndRangeArray(void) { /* 20 */
/*
vAry が min から max にある場合、vResults と 1 の AND を
そうでなければ 0 をかく。
@@ -566,7 +567,7 @@ void AndRangeArray(void) { /* 20 */
}
}
void AndAndEquArray(void) { /* 21 */
static void AndAndEquArray(void) { /* 21 */
/*
配列 vAry と mask との AND をとって val に等しければ
配列 vResults と1の AND、等しくなければ 0 を書く
@@ -593,7 +594,7 @@ void AndAndEquArray(void) { /* 21 */
}
}
void OrEquArray(void) { /* 22 */
static void OrEquArray(void) { /* 22 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -602,7 +603,7 @@ void OrEquArray(void) { /* 22 */
DEBUG_COMMAND_YET("ShArray.OrEquArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void OrNotArray(void) { /* 23 */
static void OrNotArray(void) { /* 23 */
/*
配列の値が val と等しくなければ vResult に 1 を書き込む
@@ -626,7 +627,7 @@ void OrNotArray(void) { /* 23 */
}
}
void OrLowArray(void) { /* 24 */
static void OrLowArray(void) { /* 24 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -635,7 +636,7 @@ void OrLowArray(void) { /* 24 */
DEBUG_COMMAND_YET("ShArray.OrLowArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void OrHighArray(void) { /* 25 */
static void OrHighArray(void) { /* 25 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -644,7 +645,7 @@ void OrHighArray(void) { /* 25 */
DEBUG_COMMAND_YET("ShArray.OrHighArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void OrRangeArray(void) { /* 26 */
static void OrRangeArray(void) { /* 26 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -654,7 +655,7 @@ void OrRangeArray(void) { /* 26 */
DEBUG_COMMAND_YET("ShArray.OrRangeArray: %d,%d,%d,%d,%d:\n", p1, p2, p3, p4,p5);
}
void OrAndEquArray(void) { /* 27 */
static void OrAndEquArray(void) { /* 27 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -664,7 +665,7 @@ void OrAndEquArray(void) { /* 27 */
DEBUG_COMMAND_YET("ShArray.OrAndEquArray: %d,%d,%d,%d,%d:\n", p1, p2, p3, p4,p5);
}
void EnumEquArray(void) { /* 28 */
static void EnumEquArray(void) { /* 28 */
/*
配列のデータ中に val と同じデータを数を vResult に返す
@@ -689,7 +690,7 @@ void EnumEquArray(void) { /* 28 */
}
}
void EnumEquArray2(void) { /* 29 */
static void EnumEquArray2(void) { /* 29 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -700,7 +701,7 @@ void EnumEquArray2(void) { /* 29 */
DEBUG_COMMAND_YET("ShArray.EnumEquArray2: %d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6);
}
void EnumEquNotArray2(void) { /* 30 */
static void EnumEquNotArray2(void) { /* 30 */
/*
配列1が val1 に等しく、配列2がval2 に等しくないものの数を
vResult に返す。
@@ -732,7 +733,7 @@ void EnumEquNotArray2(void) { /* 30 */
}
}
void EnumNotArray(void) { /* 31 */
static void EnumNotArray(void) { /* 31 */
/*
配列のなかで val と等しくないものの個数を返す
@@ -759,7 +760,7 @@ void EnumNotArray(void) { /* 31 */
}
}
void EnumNotArray2(void) { /* 32 */
static void EnumNotArray2(void) { /* 32 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -770,7 +771,7 @@ void EnumNotArray2(void) { /* 32 */
DEBUG_COMMAND_YET("ShArray.EnumNotArray2: %d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6);
}
void EnumLowArray(void) { /* 33 */
static void EnumLowArray(void) { /* 33 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -779,7 +780,7 @@ void EnumLowArray(void) { /* 33 */
DEBUG_COMMAND_YET("ShArray.EnumLowArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void EnumHighArray(void) { /* 34 */
static void EnumHighArray(void) { /* 34 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -788,7 +789,7 @@ void EnumHighArray(void) { /* 34 */
DEBUG_COMMAND_YET("ShArray.EnumHighArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void EnumRangeArray(void) { /* 35 */
static void EnumRangeArray(void) { /* 35 */
/*
配列の値のうちが min と max の間あるものの数を vResult に返す
@@ -818,7 +819,7 @@ void EnumRangeArray(void) { /* 35 */
}
void GrepEquArray(void) { /* 36 */
static void GrepEquArray(void) { /* 36 */
/*
配列の値が val と等しければ vLastMatch に一致した index を返し
vResult に 1 を返す
@@ -850,7 +851,7 @@ void GrepEquArray(void) { /* 36 */
}
}
void GrepNotArray(void) { /* 37 */
static void GrepNotArray(void) { /* 37 */
/*
配列の値が val と等しくなければ vLastMatch にその index を返し
vResult に 1 を返す
@@ -882,7 +883,7 @@ void GrepNotArray(void) { /* 37 */
}
}
void GrepEquArray2(void) { /* 38 */
static void GrepEquArray2(void) { /* 38 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -894,7 +895,7 @@ void GrepEquArray2(void) { /* 38 */
DEBUG_COMMAND_YET("ShArray.GrepEquArray2: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7);
}
void GrepNotArray2(void) { /* 39 */
static void GrepNotArray2(void) { /* 39 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -906,7 +907,7 @@ void GrepNotArray2(void) { /* 39 */
DEBUG_COMMAND_YET("ShArray.GrepNotArray2: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7);
}
void GrepEquNotArray2(void) { /* 40 */
static void GrepEquNotArray2(void) { /* 40 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -918,7 +919,7 @@ void GrepEquNotArray2(void) { /* 40 */
DEBUG_COMMAND_YET("ShArray.GrepEquNotArray2: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p4, p5, p6, p7);
}
void GrepLowArray(void) { /* 41 */
static void GrepLowArray(void) { /* 41 */
/*
配列の値が min よりも小さければ vMatch に一致した index
を返し vResult に 1 を返す
@@ -950,7 +951,7 @@ void GrepLowArray(void) { /* 41 */
}
}
void GrepHighArray(void) { /* 42 */
static void GrepHighArray(void) { /* 42 */
/*
配列の値が min よりも大きければ vMatch に一致した index
を返し vResult に 1 を返す
@@ -982,7 +983,7 @@ void GrepHighArray(void) { /* 42 */
}
}
void GrepRangeArray(void) { /* 43 */
static void GrepRangeArray(void) { /* 43 */
/*
配列の値が max と min の間にあれば vMatch に一致した index
を返し vResult に 1 を返す
@@ -1016,7 +1017,7 @@ void GrepRangeArray(void) { /* 43 */
}
}
void GrepLowOrderArray(void) { /* 44 */
static void GrepLowOrderArray(void) { /* 44 */
/*
配列 vAry の中で minよりも大きく、 max よりも小さいもの
のうち、最も小さいものの index を vLastMatch に返す。
@@ -1067,7 +1068,7 @@ void GrepLowOrderArray(void) { /* 44 */
}
void GrepHighOrderArray(void) { /* 45 */
static void GrepHighOrderArray(void) { /* 45 */
/*
配列 vAry の中で minよりも大きく、 max よりも小さいもの
のうち、最も大きいものの index を vLastMatch に返す。
@@ -1117,7 +1118,7 @@ void GrepHighOrderArray(void) { /* 45 */
}
}
void ChangeEquArray(void) { /* 46 */
static void ChangeEquArray(void) { /* 46 */
int *vAry = getCaliVariable();
int cnt = getCaliValue();
int src = getCaliValue();
@@ -1134,7 +1135,7 @@ void ChangeEquArray(void) { /* 46 */
}
}
void ChangeNotArray(void) { /* 47 */
static void ChangeNotArray(void) { /* 47 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -1143,7 +1144,7 @@ void ChangeNotArray(void) { /* 47 */
DEBUG_COMMAND_YET("ShArray.ChangeNotArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void ChangeLowArray(void) { /* 48 */
static void ChangeLowArray(void) { /* 48 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -1152,7 +1153,7 @@ void ChangeLowArray(void) { /* 48 */
DEBUG_COMMAND_YET("ShArray.ChangeLowArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void ChangeHighArray(void) { /* 49 */
static void ChangeHighArray(void) { /* 49 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -1161,7 +1162,7 @@ void ChangeHighArray(void) { /* 49 */
DEBUG_COMMAND_YET("ShArray.ChangeHighArray: %d,%d,%d,%d:\n", p1, p2, p3, p4);
}
void ChangeRangeArray(void) { /* 50 */
static void ChangeRangeArray(void) { /* 50 */
/*
配列内データが min から max の間にあるときは val で置き換え
@@ -1188,7 +1189,7 @@ void ChangeRangeArray(void) { /* 50 */
}
}
void CopyArrayToRect(void) { /* 51 */
static void CopyArrayToRect(void) { /* 51 */
/*
vSrc の sw * sh の領域を vDst の dx,dy の位置にコピー
@@ -1222,7 +1223,7 @@ void CopyArrayToRect(void) { /* 51 */
}
}
void CopyRectToArray(void) { /* 52 */
static void CopyRectToArray(void) { /* 52 */
/*
vSrc の sw * sh の領域を vDst の dx,dy の位置にコピー
@@ -1256,7 +1257,7 @@ void CopyRectToArray(void) { /* 52 */
}
}
void ChangeSecretArray(void) { /* 53 */
static void ChangeSecretArray(void) { /* 53 */
/*
良く分からないが、データをコード化しているようだ
@@ -1340,3 +1341,62 @@ void ChangeSecretArray(void) { /* 53 */
break;
}
}
static const ModuleFunc functions[] = {
{"AddAtArray", AddAtArray},
{"AndAndEquArray", AndAndEquArray},
{"AndEquArray", AndEquArray},
{"AndHighArray", AndHighArray},
{"AndLowArray", AndLowArray},
{"AndNotArray", AndNotArray},
{"AndNumArray", AndNumArray},
{"AndRangeArray", AndRangeArray},
{"ChangeEquArray", ChangeEquArray},
{"ChangeHighArray", ChangeHighArray},
{"ChangeLowArray", ChangeLowArray},
{"ChangeNotArray", ChangeNotArray},
{"ChangeRangeArray", ChangeRangeArray},
{"ChangeSecretArray", ChangeSecretArray},
{"CopyArrayToRect", CopyArrayToRect},
{"CopyRectToArray", CopyRectToArray},
{"DivAtArray", DivAtArray},
{"EnumEquArray", EnumEquArray},
{"EnumEquArray2", EnumEquArray2},
{"EnumEquNotArray2", EnumEquNotArray2},
{"EnumHighArray", EnumHighArray},
{"EnumLowArray", EnumLowArray},
{"EnumNotArray", EnumNotArray},
{"EnumNotArray2", EnumNotArray2},
{"EnumRangeArray", EnumRangeArray},
{"GetAtArray", GetAtArray},
{"GrepEquArray", GrepEquArray},
{"GrepEquArray2", GrepEquArray2},
{"GrepEquNotArray2", GrepEquNotArray2},
{"GrepHighArray", GrepHighArray},
{"GrepHighOrderArray", GrepHighOrderArray},
{"GrepLowArray", GrepLowArray},
{"GrepLowOrderArray", GrepLowOrderArray},
{"GrepNotArray", GrepNotArray},
{"GrepNotArray2", GrepNotArray2},
{"GrepRangeArray", GrepRangeArray},
{"MaxAtArray", MaxAtArray},
{"MinAtArray", MinAtArray},
{"MulAtArray", MulAtArray},
{"OrAndEquArray", OrAndEquArray},
{"OrEquArray", OrEquArray},
{"OrHighArray", OrHighArray},
{"OrLowArray", OrLowArray},
{"OrNotArray", OrNotArray},
{"OrNumArray", OrNumArray},
{"OrRangeArray", OrRangeArray},
{"SetAndEquArray", SetAndEquArray},
{"SetEquArray", SetEquArray},
{"SetHighArray", SetHighArray},
{"SetLowArray", SetLowArray},
{"SetNotArray", SetNotArray},
{"SetRangeArray", SetRangeArray},
{"SubAtArray", SubAtArray},
{"XorNumArray", XorNumArray},
};
const Module module_ShArray = {"ShArray", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(ShCalc MODULE ShCalc.c)
install(TARGETS ShCalc DESTINATION lib/xsystem35)
+52 -23
View File
@@ -34,6 +34,7 @@
#include "nact.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "randMT.h"
static int numbase;
@@ -51,7 +52,7 @@ static int64_t div64(int64_t a1, int64_t a2) {
return a1 / a2;
}
void SetIntNumBase(void) { /* 0 */
static void SetIntNumBase(void) { /* 0 */
/*
64 bit 演算のための倍数をセット
@@ -65,7 +66,7 @@ void SetIntNumBase(void) { /* 0 */
}
void SetIntNum16(void) { /* 1 */
static void SetIntNum16(void) { /* 1 */
/*
64 bit 演算のための数値をセット
@@ -78,13 +79,13 @@ void SetIntNum16(void) { /* 1 */
DEBUG_COMMAND("ShCalc.SetIntNum16 %p:\n", var);
}
void SetIntNum32(void) { /* 2 */
static void SetIntNum32(void) { /* 2 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.SetIntNum32: %d:\n", p1);
}
void GetIntNum16(void) { /* 3 */
static void GetIntNum16(void) { /* 3 */
/*
64 bit 演算した結果を得る
@@ -104,13 +105,13 @@ void GetIntNum16(void) { /* 3 */
DEBUG_COMMAND("ShCalc.GetIntNum16 %d:\n", var);
}
void GetIntNum32(void) { /* 4 */
static void GetIntNum32(void) { /* 4 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.GetIntNum32: %d:\n", p1);
}
void AddIntNum16(void) { /* 5 */
static void AddIntNum16(void) { /* 5 */
/*
64 bit 加算
@@ -123,25 +124,25 @@ void AddIntNum16(void) { /* 5 */
DEBUG_COMMAND("ShCalc.AddIntNum16 %p:\n", var);
}
void AddIntNum32(void) { /* 6 */
static void AddIntNum32(void) { /* 6 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.AddIntNum32: %d:\n", p1);
}
void SubIntNum16(void) { /* 7 */
static void SubIntNum16(void) { /* 7 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.SubIntNum16: %d:\n", p1);
}
void SubIntNum32(void) { /* 8 */
static void SubIntNum32(void) { /* 8 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.SubIntNum32: %d:\n", p1);
}
void MulIntNum16(void) { /* 9 */
static void MulIntNum16(void) { /* 9 */
/*
64 bit 乗算
@@ -154,13 +155,13 @@ void MulIntNum16(void) { /* 9 */
DEBUG_COMMAND("ShCalc.MulIntNum16: %p:\n", var);
}
void MulIntNum32(void) { /* 10 */
static void MulIntNum32(void) { /* 10 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.MulIntNum32: %d:\n", p1);
}
void DivIntNum16(void) { /* 11 */
static void DivIntNum16(void) { /* 11 */
/*
64 bit 除算
@@ -177,13 +178,13 @@ void DivIntNum16(void) { /* 11 */
DEBUG_COMMAND("ShCalc.DivIntNum16 %p:\n", var);
}
void DivIntNum32(void) { /* 12 */
static void DivIntNum32(void) { /* 12 */
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.DivIntNum32: %d:\n", p1);
}
void CmpIntNum16(void) { /* 13 */
static void CmpIntNum16(void) { /* 13 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -191,7 +192,7 @@ void CmpIntNum16(void) { /* 13 */
DEBUG_COMMAND_YET("ShCalc.CmpIntNum16: %d,%d,%d:\n", p1, p2, p3);
}
void CmpIntNum32(void) { /* 14 */
static void CmpIntNum32(void) { /* 14 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -199,7 +200,7 @@ void CmpIntNum32(void) { /* 14 */
DEBUG_COMMAND_YET("ShCalc.CmpIntNum32: %d,%d,%d:\n", p1, p2, p3);
}
void GetLengthNum16(void) { /* 15 */
static void GetLengthNum16(void) { /* 15 */
/*
数値の桁数を返す
var: 数値
@@ -223,14 +224,14 @@ void GetLengthNum16(void) { /* 15 */
DEBUG_COMMAND("ShCalc.GetLengthNum16 %p,%p:\n", var, vResult);
}
void GetLengthNum32(void) { /* 16 */
static void GetLengthNum32(void) { /* 16 */
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("ShCalc.GetLengthNum32: %d,%d:\n", p1, p2);
}
void NumToRate(void) { /* 17 */
static void NumToRate(void) { /* 17 */
/*
p1 * (p3/p2) の演算結果を返す。
@@ -262,7 +263,7 @@ void NumToRate(void) { /* 17 */
}
void NumToRateNum(void) { /* 18 */
static void NumToRateNum(void) { /* 18 */
/*
p1 * (p2/p3) の演算結果を返す。
@@ -293,7 +294,7 @@ void NumToRateNum(void) { /* 18 */
DEBUG_COMMAND("ShCalc.NumToRateNum %d,%d,%d,%d,%p:\n", p1, p2, p3, flag, vResult);
}
void SetRandomSeed() {
static void SetRandomSeed() {
/*
乱数の種の設定
@@ -306,7 +307,7 @@ void SetRandomSeed() {
DEBUG_COMMAND("ShCalc.SetRandomSeed %d:\n", seed);
}
void GetRandomNumA() {
static void GetRandomNumA() {
int num = getCaliValue();
int *var = getCaliVariable();
@@ -319,7 +320,7 @@ void GetRandomNumA() {
DEBUG_COMMAND("ShCalc.GetRandomNumA %d,%p:\n", num, var);
}
void NumToBit() {
static void NumToBit() {
/*
2^(beki-1)
@@ -341,7 +342,7 @@ void NumToBit() {
DEBUG_COMMAND("ShCalc.NumToBit %d,%p:\n", beki, var);
}
void BitToNum() {
static void BitToNum() {
/*
val -> var
1 -> 1
@@ -374,3 +375,31 @@ void BitToNum() {
(*var)++;
}
}
static const ModuleFunc functions[] = {
{"AddIntNum16", AddIntNum16},
{"AddIntNum32", AddIntNum32},
{"BitToNum", BitToNum},
{"CmpIntNum16", CmpIntNum16},
{"CmpIntNum32", CmpIntNum32},
{"DivIntNum16", DivIntNum16},
{"DivIntNum32", DivIntNum32},
{"GetIntNum16", GetIntNum16},
{"GetIntNum32", GetIntNum32},
{"GetLengthNum16", GetLengthNum16},
{"GetLengthNum32", GetLengthNum32},
{"GetRandomNumA", GetRandomNumA},
{"MulIntNum16", MulIntNum16},
{"MulIntNum32", MulIntNum32},
{"NumToBit", NumToBit},
{"NumToRate", NumToRate},
{"NumToRateNum", NumToRateNum},
{"SetIntNum16", SetIntNum16},
{"SetIntNum32", SetIntNum32},
{"SetIntNumBase", SetIntNumBase},
{"SetRandomSeed", SetRandomSeed},
{"SubIntNum16", SubIntNum16},
{"SubIntNum32", SubIntNum32},
};
const Module module_ShCalc = {"ShCalc", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(ShGraph MODULE ShGraph.c)
install(TARGETS ShGraph DESTINATION lib/xsystem35)
+30 -12
View File
@@ -32,6 +32,7 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "ags.h"
#include "counter.h"
@@ -89,7 +90,7 @@ static struct _s2 s2[SLOT];
static int* add_p5[SLOT]; /* どこまでアニメーションのコマが進んだか */
void Init() {
static void Init() {
/*
モジュール初期化
*/
@@ -98,13 +99,13 @@ void Init() {
DEBUG_COMMAND("ShGraph.Init %d:\n", p1);
}
void GetSurfaceData() {
static void GetSurfaceData() {
int p1 = getCaliValue(); /* ISurface */
DEBUG_COMMAND_YET("ShGraph.GetSurfaceData %d:\n", p1);
}
void ChangeEquColor() {
static void ChangeEquColor() {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -116,7 +117,7 @@ void ChangeEquColor() {
DEBUG_COMMAND_YET("ShGraph.ChangeEquColor %d,%d,%d,%d,%p,%p,%d:\n", p1, p2, p3, p4, p5, p6, p7);
}
void ChangeNotColor() {
static void ChangeNotColor() {
/*
指定の領域が src と等しくなければ dst に塗りつぶす
@@ -228,7 +229,7 @@ void ChangeNotColor() {
lastslotが0の場合は 7 で指定したところまで。
*/
void ResetAnimeData() {
static void ResetAnimeData() {
/*
アニメーション用の各種データをクリア
@@ -253,7 +254,7 @@ void ResetAnimeData() {
}
void SetAnimeSrc() {
static void SetAnimeSrc() {
/*
アニメーションの各パターンのソース領域の設定
@@ -296,7 +297,7 @@ void SetAnimeSrc() {
src[no].b = b;
}
void SetAnimeDst() {
static void SetAnimeDst() {
/*
アニメーションの描画先設定
@@ -331,7 +332,7 @@ void SetAnimeDst() {
s2[no].w_1000A8A2 = 0;
}
void AddAnimeData() {
static void AddAnimeData() {
/*
アニメーション各種設定
@@ -375,7 +376,7 @@ void AddAnimeData() {
add_p5[i] = p5;
}
void AddAnimeRemain() {
static void AddAnimeRemain() {
/*
アニメーション各種設定
@@ -401,7 +402,7 @@ void AddAnimeRemain() {
}
}
void SetAnimeRect() {
static void SetAnimeRect() {
/*
アニメーション描画領域設定
@@ -423,7 +424,7 @@ void SetAnimeRect() {
maprect.height = h;
}
void SetAnimeBack() {
static void SetAnimeBack() {
/*
アニメーション背景領域設定
@@ -451,7 +452,7 @@ void SetAnimeBack() {
mapback_p6 = p6;
}
void PlayAnimeData() {
static void PlayAnimeData() {
/*
実際にアニメーションを実行
@@ -641,3 +642,20 @@ static void copy_sprite(int sx, int sy, int width, int height, int dx, int dy, i
}
}
}
static const ModuleFunc functions[] = {
{"AddAnimeData", AddAnimeData},
{"AddAnimeRemain", AddAnimeRemain},
{"ChangeEquColor", ChangeEquColor},
{"ChangeNotColor", ChangeNotColor},
{"GetSurfaceData", GetSurfaceData},
{"Init", Init},
{"PlayAnimeData", PlayAnimeData},
{"ResetAnimeData", ResetAnimeData},
{"SetAnimeBack", SetAnimeBack},
{"SetAnimeDst", SetAnimeDst},
{"SetAnimeRect", SetAnimeRect},
{"SetAnimeSrc", SetAnimeSrc},
};
const Module module_ShGraph = {"ShGraph", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(ShPort MODULE ShPort.c)
install(TARGETS ShPort DESTINATION lib/xsystem35)
+23 -9
View File
@@ -34,13 +34,14 @@
#include "nact.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "graphicsdevice.h"
// キー変換テーブル
#define KEYMAP_MAX 8
static BYTE *keymap[KEYMAP_MAX];
void OutputMessageBox(void) { /* 0 */
static void OutputMessageBox(void) { /* 0 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -51,7 +52,7 @@ void OutputMessageBox(void) { /* 0 */
DEBUG_COMMAND_YET("ShPort.OutputMessageBox: %d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p3, p4, p5, p6);
}
void InputListNum(void) { /* 1 */
static void InputListNum(void) { /* 1 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -68,7 +69,7 @@ void InputListNum(void) { /* 1 */
* ShPortサブシステム全体の初期化
* @param p1: ISys3x
*/
void Init(void) {
static void Init(void) {
int p1 = getCaliValue();
DEBUG_COMMAND_YET("ShPort.Init: %d:\n", p1);
@@ -79,7 +80,7 @@ void Init(void) {
* 指定のキーコードマップの初期化
* @param no: キーコードマップの番号(1~)
*/
void InitKeyStatus(void) {
static void InitKeyStatus(void) {
int no = getCaliValue();
if (no >= KEYMAP_MAX) {
@@ -103,7 +104,7 @@ void InitKeyStatus(void) {
* @param key: キーコード
* @param func: 機能キーコード
*/
void SetKeyStatus(void) {
static void SetKeyStatus(void) {
int no = getCaliValue();
int key = getCaliValue();
int func = getCaliValue();
@@ -124,7 +125,7 @@ void SetKeyStatus(void) {
* @param no: マップ番号
* @param var: 押下キーに対応する機能コードを返す変数
*/
void GetKeyStatus(void) {
static void GetKeyStatus(void) {
int no = getCaliValue();
int *var = getCaliVariable();
int i;
@@ -142,7 +143,7 @@ void GetKeyStatus(void) {
DEBUG_COMMAND("ShPort.GetKeyStatus: %d,%p:\n", no, var);
}
void InputListString(void) {
static void InputListString(void) {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -154,7 +155,7 @@ void InputListString(void) {
DEBUG_COMMAND_YET("ShPort.InputListString: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p3, p4, p5, p6, p7);
}
void InputOpenFile(void) {
static void InputOpenFile(void) {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -166,7 +167,7 @@ void InputOpenFile(void) {
DEBUG_COMMAND_YET("ShPort.InputOpenFile: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p3, p4, p5, p6, p7);
}
void InputSaveFile(void) {
static void InputSaveFile(void) {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -178,3 +179,16 @@ void InputSaveFile(void) {
DEBUG_COMMAND_YET("ShPort.InputSaveFile: %d,%d,%d,%d,%d,%d,%d:\n", p1, p2, p3, p3, p4, p5, p6, p7);
}
static const ModuleFunc functions[] = {
{"GetKeyStatus", GetKeyStatus},
{"Init", Init},
{"InitKeyStatus", InitKeyStatus},
{"InputListNum", InputListNum},
{"InputListString", InputListString},
{"InputOpenFile", InputOpenFile},
{"InputSaveFile", InputSaveFile},
{"OutputMessageBox", OutputMessageBox},
{"SetKeyStatus", SetKeyStatus},
};
const Module module_ShPort = {"ShPort", functions, sizeof(functions) / sizeof(ModuleFunc)};
-6
View File
@@ -1,6 +0,0 @@
add_library(ShSound MODULE ShSound.c)
if (SDL2MIXER_FOUND)
target_link_libraries(ShSound PRIVATE PkgConfig::SDL2MIXER)
endif()
install(TARGETS ShSound DESTINATION lib/xsystem35)
+38 -16
View File
@@ -29,6 +29,7 @@
#include "portab.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "dri.h"
#include "ald_manager.h"
@@ -41,7 +42,7 @@
static Mix_Chunk *chunk;
#endif
void Init() {
static void Init() {
/*
モジュール初期化
*/
@@ -50,7 +51,7 @@ void Init() {
DEBUG_COMMAND("ShSound.Init %d:\n", p1);
}
void wavLoad() {
static void wavLoad() {
/*
指定のスロットにPCMファイルをロード
@@ -65,7 +66,7 @@ void wavLoad() {
mus_wav_load(slot, no);
}
void wavUnload() {
static void wavUnload() {
/*
指定のスロットのPCMファイルを削除
@@ -78,7 +79,7 @@ void wavUnload() {
DEBUG_COMMAND("ShSound.wavUnload %d:\n",slot);
}
void wavUnloadRange() {
static void wavUnloadRange() {
/*
指定のスロット(複数)のPCMファイルを削除
@@ -96,7 +97,7 @@ void wavUnloadRange() {
DEBUG_COMMAND("ShSound.wavUnloadRange %d,%d:\n", slot, range);
}
void wavUnloadAll() {
static void wavUnloadAll() {
/*
すべてのスロットのPCMファイルを削除
*/
@@ -109,7 +110,7 @@ void wavUnloadAll() {
DEBUG_COMMAND("ShSound.wavUnloadAll:\n");
}
void wavLoadMemory() {
static void wavLoadMemory() {
/*
指定の番号の WAV ファイルをメモリ上に読み込み
@@ -124,7 +125,7 @@ void wavLoadMemory() {
DEBUG_COMMAND("ShSound.wavLoadMemory %d:\n", no);
}
void wavSendMemory() {
static void wavSendMemory() {
/*
wavLoadMemory で読み込んだデータを指定のスロットに投入
@@ -142,7 +143,7 @@ void wavSendMemory() {
DEBUG_COMMAND("ShSound.wavSendMemory %d:\n", slot);
}
void wavFadeVolumeMemory() {
static void wavFadeVolumeMemory() {
/*
wavLoadMemory で読み込んだデータのボリュームのフェード
@@ -161,7 +162,7 @@ void wavFadeVolumeMemory() {
DEBUG_COMMAND("ShSound.wavFadeVolumeMemory %d,%d:\n", start, range);
}
void wavReversePanMemory() {
static void wavReversePanMemory() {
/*
wavLoadMemoryで読み込んだデータの左右のチャンネルを反転
*/
@@ -175,7 +176,7 @@ void wavReversePanMemory() {
DEBUG_COMMAND("ShSound.wavReversePanMemory:\n");
}
void wavPlay() {
static void wavPlay() {
/*
指定のスロットのPCMを再生
@@ -190,7 +191,7 @@ void wavPlay() {
DEBUG_COMMAND("ShSound.wavPlay %d, %d:\n", slot, loop);
}
void wavPlayRing() {
static void wavPlayRing() {
/*
指定の範囲のスロットのPCMを呼ばれる毎に繰り返し
@@ -208,7 +209,7 @@ void wavPlayRing() {
DEBUG_COMMAND("ShSound.wavPlayRing %d,%d,%d:\n", start, cnt, *cur);
}
void wavStop() {
static void wavStop() {
/*
指定のスロットの再生を停止
@@ -221,7 +222,7 @@ void wavStop() {
mus_wav_stop(slot);
}
void wavStopAll() {
static void wavStopAll() {
/*
全てのスロットの再生を停止
*/
@@ -234,7 +235,7 @@ void wavStopAll() {
DEBUG_COMMAND("ShSound.wavStopAll:\n");
}
void wavPause() {
static void wavPause() {
/*
指定のスロットの再生を一時停止
@@ -245,7 +246,7 @@ void wavPause() {
DEBUG_COMMAND_YET("ShSound.wavPause %d:\n", slot);
}
void wavIsPlay() {
static void wavIsPlay() {
/*
指定のスロットが再生中かどうかを調べる
@@ -260,7 +261,7 @@ void wavIsPlay() {
DEBUG_COMMAND("ShSound.wavIsPlay %d,%p:\n", slot, result);
}
void wavIsPlayRange() {
static void wavIsPlayRange() {
/*
指定の範囲のスロットが再生中かどうかを調べる
@@ -281,3 +282,24 @@ void wavIsPlayRange() {
DEBUG_COMMAND("ShSound.wavIsPlayRange %d,%d,%p:\n", slot, range, result);
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"wavFadeVolumeMemory", wavFadeVolumeMemory},
{"wavIsPlay", wavIsPlay},
{"wavIsPlayRange", wavIsPlayRange},
{"wavLoad", wavLoad},
{"wavLoadMemory", wavLoadMemory},
{"wavPause", wavPause},
{"wavPlay", wavPlay},
{"wavPlayRing", wavPlayRing},
{"wavReversePanMemory", wavReversePanMemory},
{"wavSendMemory", wavSendMemory},
{"wavStop", wavStop},
{"wavStopAll", wavStopAll},
{"wavUnload", wavUnload},
{"wavUnloadAll", wavUnloadAll},
{"wavUnloadRange", wavUnloadRange},
};
const Module module_ShSound = {"ShSound", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(ShString MODULE ShString.c)
install(TARGETS ShString DESTINATION lib/xsystem35)
+28 -30
View File
@@ -34,67 +34,50 @@
#include "nact.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "variable.h"
#include "ags.h"
void ExchangeString(void) {
static void ExchangeString(void) {
/*
文字列(target)中の一部(pat)を別の文字列(patr)で置き換える
*/
int target = getCaliValue();
int pat = getCaliValue();
int patr = getCaliValue();
char *start = v_str(target -1);
char *next;
char dst[STRVAR_LEN] = "";
v_strReplaceAll(target - 1, pat - 1, patr - 1);
DEBUG_COMMAND("ShString.ExchangeString: %d,%d,%d:\n", target, pat, patr);
if (v_strlen(target -1) == 0 || v_strlen(pat -1) == 0) {
return;
}
while(TRUE) {
next = strstr(start, v_str(pat -1));
if (next == NULL) break;
strncat(dst, start, (size_t)(next - start));
strncat(dst, v_str(patr -1), sizeof(dst) - strlen(dst));
start = next + v_strlen(pat -1);
}
strncat(dst, start, sizeof(dst) - strlen(dst));
v_strcpy(target -1, dst);
}
void SetNum16String(void) { /* 1 */
static void SetNum16String(void) { /* 1 */
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("ShString.SetNum16String: %d,%d:\n", p1, p2);
}
void SetNum16HalfString(void) { /* 2 */
static void SetNum16HalfString(void) { /* 2 */
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("ShString.SetNum16HalfString: %d,%d:\n", p1, p2);
}
void SetNum32String(void) { /* 3 */
static void SetNum32String(void) { /* 3 */
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("ShString.SetNum32String: %d,%d:\n", p1, p2);
}
void SetNum32HalfString(void) { /* 4 */
static void SetNum32HalfString(void) { /* 4 */
int p1 = getCaliValue();
int p2 = getCaliValue();
DEBUG_COMMAND_YET("ShString.SetNum32HalfString: %d,%d:\n", p1, p2);
}
void GetArrayString(void) { /* 5 */
static void GetArrayString(void) { /* 5 */
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -102,7 +85,7 @@ void GetArrayString(void) { /* 5 */
DEBUG_COMMAND_YET("ShString.GetArrayString: %d,%d,%d:\n", p1, p2, p3);
}
void SetWindowTitle(void) { /* 6 */
static void SetWindowTitle(void) { /* 6 */
int strno = getCaliValue();
int p2 = getCaliValue(); /* ISys3xSystem */
@@ -111,7 +94,7 @@ void SetWindowTitle(void) { /* 6 */
DEBUG_COMMAND("ShString.SetWindowTitle: %d,%d:\n", strno, p2);
}
void FillString() {
static void FillString() {
/*
指定の番号の文字列を他の文字列にコピー
@@ -133,7 +116,7 @@ void FillString() {
DEBUG_COMMAND("ShString.FillString: %d,%d,%d,%d:\n", st, cnt, src, p4);
}
void SetStringNum16(void) {
static void SetStringNum16(void) {
/*
文字列を数値に変換
大文字、小文字、混在可
@@ -143,7 +126,7 @@ void SetStringNum16(void) {
*/
int st = getCaliValue();
int *var = getCaliVariable();
char *str = v_str(st -1);
const char *str = v_str(st -1);
char _dst[100];
char *dst = _dst;
@@ -173,9 +156,24 @@ void SetStringNum16(void) {
*var = atoi(_dst);
}
void SetStringNum32(void) {
static void SetStringNum32(void) {
int p1 = getCaliValue();
int *p2 = getCaliVariable();
DEBUG_COMMAND_YET("ShString.SetStringNum32: %d,%p:\n", p1, p2);
}
static const ModuleFunc functions[] = {
{"ExchangeString", ExchangeString},
{"FillString", FillString},
{"GetArrayString", GetArrayString},
{"SetNum16HalfString", SetNum16HalfString},
{"SetNum16String", SetNum16String},
{"SetNum32HalfString", SetNum32HalfString},
{"SetNum32String", SetNum32String},
{"SetStringNum16", SetStringNum16},
{"SetStringNum32", SetStringNum32},
{"SetWindowTitle", SetWindowTitle},
};
const Module module_ShString = {"ShString", functions, sizeof(functions) / sizeof(ModuleFunc)};
-5
View File
@@ -1,5 +0,0 @@
add_library(dDemo MODULE dDemo.c)
target_link_libraries(dDemo PRIVATE graph alk)
install(TARGETS dDemo DESTINATION lib/xsystem35)
+14 -4
View File
@@ -7,6 +7,7 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
#include "input.h"
#include "music.h"
@@ -17,7 +18,7 @@ static struct ddemo dd;
#include "scene.c"
#endif
void Init() {
static void Init() {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -31,20 +32,20 @@ void Init() {
DEBUG_COMMAND_YET("dDemo.Init %d,%d,%d,%p:\n", p1, p2, p3, var);
}
void SetKeyCancelFlag() {
static void SetKeyCancelFlag() {
int cancelflag = getCaliValue();
DEBUG_COMMAND_YET("dDemo.SetKeyCancelFlag %d:\n", cancelflag);
}
void SetLoopFlag() {
static void SetLoopFlag() {
/* Loop Flag */
int loopflag = getCaliValue(); /* 0 なら無限繰り返し */
DEBUG_COMMAND_YET("dDemo.SetLoopFlag %d:\n", loopflag);
}
void Run() {
static void Run() {
DEBUG_COMMAND_YET("dDemo.Run:\n");
#ifdef DDEMODEV
@@ -58,3 +59,12 @@ void Run() {
mus_cdrom_stop();
#endif
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"Run", Run},
{"SetKeyCancelFlag", SetKeyCancelFlag},
{"SetLoopFlag", SetLoopFlag},
};
const Module module_dDemo = {"dDemo", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(eDemo MODULE eDemo.c)
install(TARGETS eDemo DESTINATION lib/xsystem35)
+16 -5
View File
@@ -5,10 +5,11 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
void Init() {
static void Init() {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -19,26 +20,36 @@ void Init() {
DEBUG_COMMAND_YET("eDEMO.Init %d,%d,%d,%p:\n", p1, p2, p3, var);
}
void SetKeyCancelFlag() {
static void SetKeyCancelFlag() {
int cancelflag = getCaliValue();
DEBUG_COMMAND_YET("eDEMO.SetKeyCancelFlag %d:\n", cancelflag);
}
void SetLoopFlag() {
static void SetLoopFlag() {
/* Loop Flag */
int loopflag = getCaliValue(); /* 0 なら無限繰り返し */
DEBUG_COMMAND_YET("eDEMO.SetLoopFlag %d:\n", loopflag);
}
void SetDrawStaffFlag() {
static void SetDrawStaffFlag() {
/* Loop Flag */
int staffflag = getCaliValue();
DEBUG_COMMAND_YET("eDEMO.SetDrawStaffFlag %d:\n", staffflag);
}
void Run() {
static void Run() {
DEBUG_COMMAND_YET("eDEMO.Run:\n");
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"Run", Run},
{"SetDrawStaffFlag", SetDrawStaffFlag},
{"SetKeyCancelFlag", SetKeyCancelFlag},
{"SetLoopFlag", SetLoopFlag},
};
const Module module_eDemo = {"eDemo", functions, sizeof(functions) / sizeof(ModuleFunc)};
-3
View File
@@ -1,3 +0,0 @@
add_library(eeDemo MODULE eeDemo.c)
install(TARGETS eeDemo DESTINATION lib/xsystem35)
+14 -4
View File
@@ -5,10 +5,11 @@
#include "portab.h"
#include "system.h"
#include "xsystem35.h"
#include "modules.h"
#include "nact.h"
void Init() {
static void Init() {
int p1 = getCaliValue();
int p2 = getCaliValue();
int p3 = getCaliValue();
@@ -19,21 +20,30 @@ void Init() {
DEBUG_COMMAND_YET("eeDEMO.Init %d,%d,%d,%p:\n", p1, p2, p3, var);
}
void SetKeyCancelFlag() {
static void SetKeyCancelFlag() {
int cancelflag = getCaliValue();
DEBUG_COMMAND_YET("eeDEMO.SetKeyCancelFlag %d:\n", cancelflag);
}
void SetLoopFlag() {
static void SetLoopFlag() {
/* Loop Flag */
int loopflag = getCaliValue(); /* 0 なら無限繰り返し */
DEBUG_COMMAND_YET("eeDEMO.SetLoopFlag %d:\n", loopflag);
}
void Run() {
static void Run() {
int p1 = getCaliValue();
DEBUG_COMMAND_YET("eeDEMO.Run %d:\n", p1);
}
static const ModuleFunc functions[] = {
{"Init", Init},
{"Run", Run},
{"SetKeyCancelFlag", SetKeyCancelFlag},
{"SetLoopFlag", SetLoopFlag},
};
const Module module_eeDemo = {"eeDemo", functions, sizeof(functions) / sizeof(ModuleFunc)};
-2
View File
@@ -1,5 +1,3 @@
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
add_library(graph STATIC
graph.c
surface.c
+11 -39
View File
@@ -27,58 +27,31 @@
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <unistd.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include "portab.h"
#include "system.h"
#include "LittleEndian.h"
#include "alk.h"
alk_t *alk_new(char *path) {
alk_t *alk_new(const char *path) {
alk_t *alk;
int i, fd;
char *adr;
struct stat sbuf;
int i;
if (0 > (fd = open(path, O_RDONLY))) {
WARNING("open: %s\n", strerror(errno));
return NULL;
}
if (0 > fstat(fd, &sbuf)) {
WARNING("fstat: %s\n", strerror(errno));
close(fd);
return NULL;
}
mmap_t *m = map_file(path);
if (MAP_FAILED == (adr = mmap(0, sbuf.st_size, PROT_READ, MAP_SHARED, fd, 0))) {
WARNING("mmap: %s\n", strerror(errno));
close(fd);
return NULL;
}
if (0 != strncmp(adr, "ALK0", 4)) {
WARNING("mmap: %s\n", strerror(errno));
munmap(adr, sbuf.st_size);
close(fd);
if (0 != strncmp(m->addr, "ALK0", 4)) {
WARNING("%s: not an ALK file\n", path);
unmap_file(m);
return NULL;
}
alk = calloc(1, sizeof(alk_t));
alk->mapadr = adr;
alk->size = sbuf.st_size;
alk->fd = fd;
alk->datanum = LittleEndian_getDW(adr, 4);
alk->mmap = m;
alk->datanum = LittleEndian_getDW(m->addr, 4);
alk->offset = malloc(sizeof(int) * alk->datanum);
for (i = 0; i < alk->datanum; i++) {
alk->offset[i] = LittleEndian_getDW(adr, 8 + i * 8);
alk->offset[i] = LittleEndian_getDW(m->addr, 8 + i * 8);
}
return alk;
@@ -87,8 +60,7 @@ alk_t *alk_new(char *path) {
int alk_free(alk_t *alk) {
if (alk == NULL) return OK;
munmap(alk->mapadr, alk->size);
close(alk->fd);
unmap_file(alk->mmap);
free(alk->offset);
free(alk);
@@ -98,5 +70,5 @@ int alk_free(alk_t *alk) {
char *alk_get(alk_t *alk, int no) {
if (no >= alk->datanum) return NULL;
return alk->mapadr + alk->offset[no];
return (char *)alk->mmap->addr + alk->offset[no];
}

Some files were not shown because too many files have changed in this diff Show More