| diff --new-file -w -r pcsx_rearmed/build_clean.sh pcsx_rearmed_custom/build_clean.sh | |
| 0a1,18 | |
| > #!/bin/bash | |
| > # clean make resource | |
| > make clean | |
| > rm -f plugins/*.so | |
| > rm -f build.log | |
| > # clean configure resource | |
| > rm -f config.log | |
| > rm -f config.mak | |
| > # clean binary data | |
| > if [ -e ../rootfs/usr/sony/bin/pcsx ]; then | |
| > rm -f ../rootfs/usr/sony/bin/pcsx | |
| > fi | |
| > if [ -e ../rootfs/usr/sony/bin/plugins ]; then | |
| > rm -rf ../rootfs/usr/sony/bin/plugins | |
| > fi | |
| > | |
| > TARGET_EXECUTABLE=pcsx | |
| > rm -f ${TARGET_EXECUTABLE}.unstripped | |
| diff --new-file -w -r pcsx_rearmed/build_pcsx_continue.sh pcsx_rearmed_custom/build_pcsx_continue.sh | |
| 0a1,9 | |
| > #!/bin/bash | |
| > if [ ! -e config.log ]; then | |
| > # run configure | |
| > echo "CFLAGS=-march=armv7-a ./configure --sound-drivers=sdl" | |
| > CFLAGS=-march=armv7-a ./configure --sound-drivers=sdl | |
| > fi | |
| > # build.log include stdout & stderr | |
| > echo "make -j 4 2>&1 | tee build.log" | |
| > make -k -j 4 2>&1 | tee build.log | |
| diff --new-file -w -r pcsx_rearmed/build_pcsx_enable_menu.sh pcsx_rearmed_custom/build_pcsx_enable_menu.sh | |
| 0a1,2 | |
| > #!/bin/bash | |
| > ./build_pcsx.sh enable_menu | |
| diff --new-file -w -r pcsx_rearmed/build_pcsx.sh pcsx_rearmed_custom/build_pcsx.sh | |
| 0a1,39 | |
| > #!/bin/bash | |
| > # | |
| > # 使い方: | |
| > # $./build_pcsx.sh | |
| > # →リリース用のpcsxがビルドされます。 | |
| > # | |
| > # $./build_pcsx.sh enable_menu | |
| > # →Joysticの「select + △」押下でpcsxのメニューが開くpcsxがビルドされます。 | |
| > # | |
| > # | |
| > source /usr/local/oecore-x86_64/environment-setup-cortexa7hf-neon-vfpv4-poky-linux-gnueabi | |
| > if [ ! -e config.log ]; then | |
| > # run configure | |
| > # set sdl2-config path | |
| > export PATH=$PATH:$SDKTARGETSYSROOT/usr/bin | |
| > CROSS_COMPILE=arm-poky-linux-gnueabi CFLAGS="-march=armv7ve -mfloat-abi=hard -mfpu=neon-vfpv4 -mcpu=cortex-a7 -mtune=cortex-a7" ./configure --sound-drivers=sdl | |
| > fi | |
| > # build.log include stdout & stderr | |
| > if [ $# -eq 1 ]; then | |
| > if [ $1 = "enable_menu" ]; then | |
| > BUILD_OPTION="CONFIG_ENABLE_MENU=1" | |
| > fi | |
| > fi | |
| > echo "make $BUILD_OPTION -j4 2>&1 | tee build.log" | |
| > make $BUILD_OPTION -j4 2>&1 | tee build.log | |
| > | |
| > TARGET_EXECUTABLE=pcsx | |
| > STRIP_OPTION=-s | |
| > cp ${TARGET_EXECUTABLE} ${TARGET_EXECUTABLE}.unstripped | |
| > $(${STRIP} ${STRIP_OPTION} -o ${TARGET_EXECUTABLE} ${TARGET_EXECUTABLE}.unstripped) | |
| > | |
| > if [ -e ./pcsx ]; then | |
| > mkdir -p ../rootfs/usr/sony/bin/ | |
| > cp ./pcsx ../rootfs/usr/sony/bin/ | |
| > fi | |
| > if [ -e ./plugins ]; then | |
| > mkdir -p ../rootfs/usr/sony/bin/plugins | |
| > cp ./plugins/gpu_peops.so ../rootfs/usr/sony/bin/plugins | |
| > fi | |
| diff --new-file -w -r pcsx_rearmed/build_pcsx.sh.bak pcsx_rearmed_custom/build_pcsx.sh.bak | |
| 0a1,12 | |
| > #!/bin/bash | |
| > if [ ! -e config.log ]; then | |
| > # run configure | |
| > echo "CFLAGS=-march=armv7-a ./configure --sound-drivers=sdl --disable-neon" | |
| > CFLAGS=-march=armv7-a ./configure --sound-drivers=sdl --disable-neon | |
| > | |
| > mv config.mak config.mak.org | |
| > sed s/SDL/SDL2/ config.mak.org > config.mak | |
| > fi | |
| > # build.log include stdout & stderr | |
| > echo "make -j 4 2>&1 | tee build.log" | |
| > make -j 4 2>&1 | tee build.log | |
| diff --new-file -w -r pcsx_rearmed/configure pcsx_rearmed_custom/configure | |
| 255,259c255,259 | |
| < floatabi_set_by_gcc=`$CC -v 2>&1 | grep -q -- --with-float= && echo yes` || true | |
| < if [ "$floatabi_set_by_gcc" != "yes" ]; then | |
| < echo "$CFLAGS" | grep -q -- '-mfloat-abi=' || CFLAGS="$CFLAGS -mfloat-abi=softfp" | |
| < echo "$ASFLAGS" | grep -q -- '-mfloat-abi=' || ASFLAGS="$ASFLAGS -mfloat-abi=softfp" | |
| < fi | |
| --- | |
| > #floatabi_set_by_gcc=`$CC -v 2>&1 | grep -q -- --with-float= && echo yes` || true | |
| > #if [ "$floatabi_set_by_gcc" != "yes" ]; then | |
| > #echo "$CFLAGS" | grep -q -- '-mfloat-abi=' || CFLAGS="$CFLAGS -mfloat-abi=softfp" | |
| > #echo "$ASFLAGS" | grep -q -- '-mfloat-abi=' || ASFLAGS="$ASFLAGS -mfloat-abi=softfp" | |
| > #fi | |
| 405c405 | |
| < if [ "$need_sdl" = "yes" ] || check_sdl `sdl-config --cflags --libs`; then | |
| --- | |
| > if [ "$need_sdl" = "yes" ] || check_sdl `sdl2-config --cflags --libs`; then | |
| 424,428c424,428 | |
| < which sdl-config > /dev/null || \ | |
| < fail "sdl-config is missing; please install libsdl (libsdl1.2-dev)" | |
| < CFLAGS="$CFLAGS `sdl-config --cflags`" | |
| < MAIN_LDLIBS="`sdl-config --libs` $MAIN_LDLIBS" | |
| < check_sdl || fail "please install libsdl (libsdl1.2-dev)" | |
| --- | |
| > which sdl2-config > /dev/null || \ | |
| > fail "sdl2-config is missing; please install libsdl2" | |
| > CFLAGS="$CFLAGS `pkg-config --cflags sdl2`" | |
| > MAIN_LDLIBS="`pkg-config --libs sdl2` $MAIN_LDLIBS" | |
| > check_sdl || fail "please install libsdl2" | |
| 451c451 | |
| < need_xlib="yes" | |
| --- | |
| > need_xlib="no" | |
| 533a534,535 | |
| > | |
| > MAIN_LDLIBS="$MAIN_LDLIBS -lwayland-client -lwayland-egl" | |
| diff --new-file -w -r pcsx_rearmed/frontend/cspace.c pcsx_rearmed_custom/frontend/cspace.c | |
| 36a37,51 | |
| > void bgr555_to_rgb565_without_neon(void *dst_, const void *src_, int bytes) | |
| > { | |
| > const unsigned int *src = src_; | |
| > unsigned int *dst = dst_; | |
| > unsigned int p; | |
| > int x; | |
| > | |
| > for (x = 0; x < bytes / 4; x++) { | |
| > p = src[x]; | |
| > p = ((p & 0x7c007c00) >> 10) | ((p & 0x03e003e0) << 1) | |
| > | ((p & 0x001f001f) << 11); | |
| > dst[x] = p; | |
| > } | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/frontend/cspace.h pcsx_rearmed_custom/frontend/cspace.h | |
| 6a7,9 | |
| > #ifdef __ARM_NEON__ | |
| > void bgr555_to_rgb565_without_neon(void *dst, const void *src, int bytes); | |
| > #endif __ARM_NEON__ | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/.gitignore pcsx_rearmed_custom/frontend/libpicofe/.gitignore | |
| 1,4d0 | |
| < *.o | |
| < *.swp | |
| < cscope.out | |
| < tags | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/gl.c pcsx_rearmed_custom/frontend/libpicofe/gl.c | |
| 44a45 | |
| > | |
| 49a51,52 | |
| > printf("frontend/libpicore/gl.c : gl_init()\n"); | |
| > | |
| 56c59 | |
| < tmp_texture_mem = calloc(1, 1024 * 512 * 2); | |
| --- | |
| > tmp_texture_mem = calloc(1, 1024 * 1024 * 3); | |
| 106,107c109,110 | |
| < glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 512, 0, GL_RGB, | |
| < GL_UNSIGNED_SHORT_5_6_5, tmp_texture_mem); | |
| --- | |
| > glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 1024, 1024, 0, GL_RGB, | |
| > GL_UNSIGNED_BYTE, tmp_texture_mem); | |
| 135,138c138,141 | |
| < -1.0f, 1.0f, 0.0f, // 0 0 1 | |
| < 1.0f, 1.0f, 0.0f, // 1 ^ | |
| < -1.0f, -1.0f, 0.0f, // 2 | 2 3 | |
| < 1.0f, -1.0f, 0.0f, // 3 +--> | |
| --- | |
| > -0.95f, 0.95f, 0.0f, // 0 0 1 | |
| > 0.95f, 0.95f, 0.0f, // 1 ^ | |
| > -0.95f, -0.95f, 0.0f, // 2 | 2 3 | |
| > 0.95f, -0.95f, 0.0f, // 3 +--> | |
| 148c151 | |
| < int gl_flip(const void *fb, int w, int h) | |
| --- | |
| > int gl_flip(const void *fb, int w, int h, int rgb888) | |
| 155c158 | |
| < float f_h = (float)h / 512.0f; | |
| --- | |
| > float f_h = (float)h / 1024.0f; | |
| 164c167,171 | |
| < glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h, | |
| --- | |
| > if( rgb888 ){ | |
| > glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h > 1024 ? 1024 : h, | |
| > GL_RGB, GL_UNSIGNED_BYTE, fb); | |
| > }else{ | |
| > glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, w, h > 1024 ? 1024 : h, | |
| 165a173 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/gl.h pcsx_rearmed_custom/frontend/libpicofe/gl.h | |
| 7c7 | |
| < int gl_flip(const void *fb, int w, int h); | |
| --- | |
| > int gl_flip(const void *fb, int w, int h, int rgb888); | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/gl_platform.c pcsx_rearmed_custom/frontend/libpicofe/gl_platform.c | |
| 8a9,22 | |
| > #include <errno.h> | |
| > #include <stdbool.h> | |
| > #include <string.h> | |
| > #include <time.h> | |
| > #include <assert.h> | |
| > | |
| > #include <EGL/egl.h> | |
| > #include <wayland-client.h> | |
| > #include <wayland-egl.h> | |
| > #include <libdrm/drm_fourcc.h> | |
| > //#include <xf86drm.h> | |
| > //#include <xf86drmMode.h> | |
| > | |
| > | |
| 17c31 | |
| < #include <X11/Xlib.h> | |
| --- | |
| > //#include <X11/Xlib.h> | |
| 20,21c34,35 | |
| < static Display *x11display; | |
| < static Window x11window; | |
| --- | |
| > //static Display *x11display; | |
| > //static Window x11window; | |
| 27,29c41,43 | |
| < static FPTR(XGetGeometry); | |
| < static FPTR(XGetWindowAttributes); | |
| < static FPTR(XTranslateCoordinates); | |
| --- | |
| > //static FPTR(XGetGeometry); | |
| > //static FPTR(XGetWindowAttributes); | |
| > //static FPTR(XTranslateCoordinates); | |
| 33c47 | |
| < XWindowAttributes xattrs_root; | |
| --- | |
| > // XWindowAttributes xattrs_root; | |
| 37c51 | |
| < Window root, dummyw; | |
| --- | |
| > // Window root, dummyw; | |
| 48c62 | |
| < if (x11display == NULL || x11window == 0) | |
| --- | |
| > // if (x11display == NULL || x11window == 0) | |
| 51,53c65,67 | |
| < pXGetGeometry(x11display, x11window, &root, &dx, &dy, &dw, &dh, | |
| < &dummy, &dummy); | |
| < pXGetWindowAttributes(x11display, root, &xattrs_root); | |
| --- | |
| > // pXGetGeometry(x11display, x11window, &root, &dx, &dy, &dw, &dh, | |
| > // &dummy, &dummy); | |
| > // pXGetWindowAttributes(x11display, root, &xattrs_root); | |
| 55,56c69,70 | |
| < if (dw == xattrs_root.width && dh == xattrs_root.height) | |
| < return; // use fullscreen | |
| --- | |
| > // if (dw == xattrs_root.width && dh == xattrs_root.height) | |
| > // return; // use fullscreen | |
| 58,59c72,73 | |
| < pXTranslateCoordinates(x11display, x11window, root, | |
| < dx, dy, &dx, &dy, &dummyw); | |
| --- | |
| > // pXTranslateCoordinates(x11display, x11window, root, | |
| > // dx, dy, &dx, &dy, &dummyw); | |
| 63,64c77,78 | |
| < dx += (disp_w - xattrs_root.width) / 2; | |
| < dy += (disp_h - xattrs_root.height) / 2; | |
| --- | |
| > // dx += (disp_w - xattrs_root.width) / 2; | |
| > // dy += (disp_h - xattrs_root.height) / 2; | |
| 66,69c80,83 | |
| < rect->x = dx; | |
| < rect->y = dy; | |
| < rect->width = dw; | |
| < rect->height = dh; | |
| --- | |
| > // rect->x = dx; | |
| > // rect->y = dy; | |
| > // rect->width = dw; | |
| > // rect->height = dh; | |
| 97,98c111,112 | |
| < x11display = NULL; | |
| < x11window = 0; | |
| --- | |
| > // x11display = NULL; | |
| > // x11window = 0; | |
| 100,111c114,125 | |
| < x11lib = dlopen("libX11.so.6", RTLD_LAZY); | |
| < if (x11lib != NULL) { | |
| < pXGetGeometry = dlsym(x11lib, "XGetGeometry"); | |
| < pXGetWindowAttributes = dlsym(x11lib, "XGetWindowAttributes"); | |
| < pXTranslateCoordinates = dlsym(x11lib, "XTranslateCoordinates"); | |
| < if (pXGetGeometry != NULL && pXGetWindowAttributes != NULL | |
| < && pXTranslateCoordinates != NULL) | |
| < { | |
| < x11display = *display; | |
| < x11window = (Window)*window; | |
| < } | |
| < } | |
| --- | |
| > // x11lib = dlopen("libX11.so.6", RTLD_LAZY); | |
| > // if (x11lib != NULL) { | |
| > // pXGetGeometry = dlsym(x11lib, "XGetGeometry"); | |
| > // pXGetWindowAttributes = dlsym(x11lib, "XGetWindowAttributes"); | |
| > // pXTranslateCoordinates = dlsym(x11lib, "XTranslateCoordinates"); | |
| > // if (pXGetGeometry != NULL && pXGetWindowAttributes != NULL | |
| > // && pXTranslateCoordinates != NULL) | |
| > // { | |
| > // x11display = *display; | |
| > // x11window = (Window)*window; | |
| > // } | |
| > // } | |
| 133,134c147,148 | |
| < x11display = NULL; | |
| < x11window = 0; | |
| --- | |
| > // x11display = NULL; | |
| > // x11window = 0; | |
| 138a153,313 | |
| > #if 1 | |
| > struct wayland_info { | |
| > struct wl_display *display; | |
| > struct wl_registry *registry; | |
| > struct wl_compositor *compositor; | |
| > struct wl_shell *shell; | |
| > | |
| > bool roundtrip_needed; | |
| > | |
| > struct { | |
| > struct wl_shell_surface *shell_surface; | |
| > struct wl_surface *surface; | |
| > struct wl_egl_window *egl_window; | |
| > EGLSurface egl_surface; | |
| > } surface; | |
| > | |
| > }; | |
| > #endif | |
| > | |
| > #if 0 | |
| > static void | |
| > global_handler(void *data, struct wl_registry *registry, uint32_t id, | |
| > const char *interface, uint32_t version) | |
| > { | |
| > struct wayland_info *info = data; | |
| > | |
| > if (strcmp(interface, "wl_compositor") == 0) { | |
| > info->compositor = wl_registry_bind(registry, id, | |
| > &wl_compositor_interface, 1); | |
| > } | |
| > else if (strcmp(interface, "wl_shell") == 0) { | |
| > info->shell = wl_registry_bind(registry, id, | |
| > &wl_shell_interface, 1); | |
| > } | |
| > } | |
| > | |
| > static void | |
| > global_remove_handler(void *data, struct wl_registry *registry, uint32_t name) | |
| > { | |
| > | |
| > } | |
| > | |
| > static const struct wl_registry_listener registry_listener = { | |
| > global_handler, | |
| > global_remove_handler | |
| > }; | |
| > | |
| > static void | |
| > handle_ping (void *data, struct wl_shell_surface *shell_surface, | |
| > uint32_t serial) | |
| > { | |
| > wl_shell_surface_pong (shell_surface, serial); | |
| > } | |
| > | |
| > | |
| > static void | |
| > handle_configure (void *data, struct wl_shell_surface *shell_surface, | |
| > uint32_t edges, int32_t width, int32_t height) | |
| > { | |
| > struct wayland_info *info = data; | |
| > | |
| > wl_egl_window_resize (info->surface.egl_window, width, height, 0, 0); | |
| > printf("handle_configure ReSize Window[%d, %d]\n", width, height); | |
| > } | |
| > | |
| > static void | |
| > handle_popup_done (void *data, struct wl_shell_surface *shell_surface) | |
| > { | |
| > } | |
| > | |
| > static const struct wl_shell_surface_listener shell_surface_listener = { | |
| > handle_ping, | |
| > handle_configure, | |
| > handle_popup_done | |
| > }; | |
| > | |
| > static void | |
| > create_surface(struct wayland_info *info) | |
| > { | |
| > info->surface.shell_surface = wl_shell_get_shell_surface (info->shell, info->surface.surface); | |
| > wl_shell_surface_add_listener(info->surface.shell_surface, &shell_surface_listener, info); | |
| > wl_shell_surface_set_toplevel(info->surface.shell_surface); | |
| > } | |
| > | |
| > int __gl_platform_init(void **display, void **window, int *quirks) | |
| > { | |
| > | |
| > struct wayland_info *info = malloc(sizeof(struct wayland_info)); | |
| > | |
| > if (info == NULL) | |
| > return 0; | |
| > | |
| > info->display = wl_display_connect(NULL); | |
| > if (!info->display) { | |
| > printf("wl_display_connect is failed\n"); | |
| > exit(EXIT_SUCCESS); | |
| > } | |
| > | |
| > info->registry = wl_display_get_registry(info->display); | |
| > wl_registry_add_listener(info->registry, ®istry_listener, info); | |
| > wl_display_dispatch (info->display); | |
| > wl_display_roundtrip(info->display); | |
| > | |
| > *display = info->display; | |
| > | |
| > info->surface.surface = wl_compositor_create_surface(info->compositor); | |
| > create_surface(info); | |
| > | |
| > wl_display_roundtrip(info->display); | |
| > | |
| > info->surface.egl_window = wl_egl_window_create(info->surface.surface, | |
| > 1280, | |
| > 720); | |
| > *window = info->surface.egl_window; | |
| > | |
| > return 0; | |
| > } | |
| > | |
| > void gl_platform_finish(void) | |
| > { | |
| > } | |
| > #endif | |
| > | |
| > #if 1 | |
| > #if 1 | |
| > static struct wl_display * aa_display; | |
| > static struct wl_shell_surface *aa_shell_surface; | |
| > static struct wl_surface *aa_surface; | |
| > static struct wl_egl_window *aa_window; | |
| > | |
| > void gl_setup_wl_information(struct wl_display * idisplay, | |
| > struct wl_surface *isurface, | |
| > struct wl_shell_surface *ishell_surface) | |
| > { | |
| > aa_display = idisplay; | |
| > aa_surface = isurface; | |
| > aa_shell_surface = ishell_surface; | |
| > | |
| > printf("gl_setup_wl_information, display:0x%x, surface: 0x%x\n", | |
| > aa_display, aa_surface); | |
| > | |
| > } | |
| > #endif | |
| > | |
| > #if 0 | |
| > static struct wl_display * plat_display; | |
| > static struct wl_surface *plat_surface; | |
| > static struct wl_egl_window *plat_window; | |
| > | |
| > void gl_setup_wl_information(struct wl_display * idisplay, | |
| > struct wl_surface *isurface) | |
| > { | |
| > plat_display = idisplay; | |
| > plat_surface = isurface; | |
| > | |
| > printf("aaaa gl_setup_wl_information, display:0x%x, surface: 0x%x\n", | |
| > plat_display, plat_surface); | |
| > | |
| > } | |
| > #endif | |
| > | |
| 140a316,348 | |
| > #if 1 | |
| > struct wayland_info *info = malloc(sizeof(struct wayland_info)); | |
| > | |
| > if (info == NULL) | |
| > return 0; | |
| > | |
| > info->display = aa_display; | |
| > if (!info->display) { | |
| > printf("wl_display_connect is failed\n"); | |
| > } | |
| > | |
| > | |
| > *display = info->display; | |
| > | |
| > info->surface.surface = aa_surface; | |
| > info->surface.shell_surface = aa_shell_surface; | |
| > | |
| > | |
| > printf("gl_platform_init before window_create\n"); | |
| > | |
| > info->surface.egl_window = wl_egl_window_create(info->surface.surface, | |
| > 960, | |
| > 720); | |
| > *window = info->surface.egl_window; | |
| > | |
| > printf("gl_platform_init, display:0x%x, window: 0x%x\n", | |
| > info->display, info->surface.egl_window); | |
| > #endif | |
| > | |
| > //plat_window = wl_egl_window_create(plat_surface, 1280, 720); //640, 480); | |
| > //*display = plat_display; | |
| > //*window = plat_window; | |
| > | |
| 145a354 | |
| > //wl_egl_window_destroy(plat_window); | |
| 148a358,359 | |
| > | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/input.c pcsx_rearmed_custom/frontend/libpicofe/input.c | |
| 14a15 | |
| > #include <SDL.h> | |
| 18a20 | |
| > #include "../main.h" | |
| 250c252 | |
| < | |
| --- | |
| > SDL_QuitSubSystem(SDL_INIT_JOYSTICK); | |
| 318c320 | |
| < while (1) | |
| --- | |
| > while (!power_off_flg) | |
| 471a474,476 | |
| > if (power_off_flg) { | |
| > break; | |
| > } | |
| 1026a1032,1045 | |
| > | |
| > typedef int bool; | |
| > #define true 1 | |
| > #define false 0 | |
| > | |
| > bool bIsValidHotPlugEvent(SDL_Event *arg_pEvent) { | |
| > bool bRet = false; | |
| > | |
| > if((arg_pEvent->jdevice.type == SDL_JOYDEVICEADDED) || | |
| > (arg_pEvent->jdevice.type == SDL_JOYDEVICEREMOVED)) { | |
| > bRet = true; | |
| > } | |
| > return bRet; | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/input.h pcsx_rearmed_custom/frontend/libpicofe/input.h | |
| 79a80 | |
| > int p2_connected; | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/in_sdl.c pcsx_rearmed_custom/frontend/libpicofe/in_sdl.c | |
| 13a14,17 | |
| > #include <sys/types.h> | |
| > #include <sys/stat.h> | |
| > #include <fcntl.h> | |
| > | |
| 15a20,26 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > #include "keysym.h" | |
| > typedef int bool; | |
| > #define true 1 | |
| > #define false 0 | |
| > //#define CONFIG_DEBUG | |
| > #endif | |
| 31a43,458 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > SDLK_to_MY_SDLK SDLK_to_My_SDLK_ARRAY[] = { | |
| > {SDLK_UNKNOWN, MY_SDLK_UNKNOWN}, | |
| > | |
| > {SDLK_RETURN, MY_SDLK_RETURN}, | |
| > {SDLK_ESCAPE, MY_SDLK_ESCAPE}, | |
| > {SDLK_BACKSPACE, MY_SDLK_BACKSPACE}, | |
| > {SDLK_TAB, MY_SDLK_TAB}, | |
| > {SDLK_SPACE, MY_SDLK_SPACE}, | |
| > {SDLK_EXCLAIM, MY_SDLK_EXCLAIM}, | |
| > {SDLK_QUOTEDBL, MY_SDLK_QUOTEDBL}, | |
| > {SDLK_HASH, MY_SDLK_HASH}, | |
| > {SDLK_PERCENT, MY_SDLK_PERCENT}, | |
| > {SDLK_DOLLAR, MY_SDLK_DOLLAR}, | |
| > {SDLK_AMPERSAND, MY_SDLK_AMPERSAND}, | |
| > {SDLK_QUOTE, MY_SDLK_QUOTE}, | |
| > {SDLK_LEFTPAREN, MY_SDLK_LEFTPAREN}, | |
| > {SDLK_RIGHTPAREN, MY_SDLK_RIGHTPAREN}, | |
| > {SDLK_ASTERISK, MY_SDLK_ASTERISK}, | |
| > {SDLK_PLUS, MY_SDLK_PLUS}, | |
| > {SDLK_COMMA, MY_SDLK_COMMA}, | |
| > {SDLK_MINUS, MY_SDLK_MINUS}, | |
| > {SDLK_PERIOD, MY_SDLK_PERIOD}, | |
| > {SDLK_SLASH, MY_SDLK_SLASH}, | |
| > {SDLK_0, MY_SDLK_0}, | |
| > {SDLK_1, MY_SDLK_1}, | |
| > {SDLK_2, MY_SDLK_2}, | |
| > {SDLK_3, MY_SDLK_3}, | |
| > {SDLK_4, MY_SDLK_4}, | |
| > {SDLK_5, MY_SDLK_5}, | |
| > {SDLK_6, MY_SDLK_6}, | |
| > {SDLK_7, MY_SDLK_7}, | |
| > {SDLK_8, MY_SDLK_8}, | |
| > {SDLK_9, MY_SDLK_9}, | |
| > {SDLK_COLON, MY_SDLK_COLON}, | |
| > {SDLK_SEMICOLON, MY_SDLK_SEMICOLON}, | |
| > {SDLK_LESS, MY_SDLK_LESS}, | |
| > {SDLK_EQUALS, MY_SDLK_EQUALS}, | |
| > {SDLK_GREATER, MY_SDLK_GREATER}, | |
| > {SDLK_QUESTION, MY_SDLK_QUESTION}, | |
| > {SDLK_AT, MY_SDLK_AT}, | |
| > /* | |
| > Skip uppercase letters | |
| > */ | |
| > {SDLK_LEFTBRACKET, MY_SDLK_LEFTBRACKET}, | |
| > {SDLK_BACKSLASH, MY_SDLK_BACKSLASH}, | |
| > {SDLK_RIGHTBRACKET, MY_SDLK_RIGHTBRACKET}, | |
| > {SDLK_CARET, MY_SDLK_CARET}, | |
| > {SDLK_UNDERSCORE, MY_SDLK_UNDERSCORE}, | |
| > {SDLK_BACKQUOTE, MY_SDLK_BACKQUOTE}, | |
| > {SDLK_a, MY_SDLK_a}, | |
| > {SDLK_b, MY_SDLK_b}, | |
| > {SDLK_c, MY_SDLK_c}, | |
| > {SDLK_d, MY_SDLK_d}, | |
| > {SDLK_e, MY_SDLK_e}, | |
| > {SDLK_f, MY_SDLK_f}, | |
| > {SDLK_g, MY_SDLK_g}, | |
| > {SDLK_h, MY_SDLK_h}, | |
| > {SDLK_i, MY_SDLK_i}, | |
| > {SDLK_j, MY_SDLK_j}, | |
| > {SDLK_k, MY_SDLK_k}, | |
| > {SDLK_l, MY_SDLK_l}, | |
| > {SDLK_m, MY_SDLK_m}, | |
| > {SDLK_n, MY_SDLK_n}, | |
| > {SDLK_o, MY_SDLK_o}, | |
| > {SDLK_p, MY_SDLK_p}, | |
| > {SDLK_q, MY_SDLK_q}, | |
| > {SDLK_r, MY_SDLK_r}, | |
| > {SDLK_s, MY_SDLK_s}, | |
| > {SDLK_t, MY_SDLK_t}, | |
| > {SDLK_u, MY_SDLK_u}, | |
| > {SDLK_v, MY_SDLK_v}, | |
| > {SDLK_w, MY_SDLK_w}, | |
| > {SDLK_x, MY_SDLK_x}, | |
| > {SDLK_y, MY_SDLK_y}, | |
| > {SDLK_z, MY_SDLK_z}, | |
| > | |
| > {SDLK_CAPSLOCK, MY_SDLK_CAPSLOCK}, | |
| > | |
| > {SDLK_F1, MY_SDLK_F1}, | |
| > {SDLK_F2, MY_SDLK_F2}, | |
| > {SDLK_F3, MY_SDLK_F3}, | |
| > {SDLK_F4, MY_SDLK_F4}, | |
| > {SDLK_F5, MY_SDLK_F5}, | |
| > {SDLK_F6, MY_SDLK_F6}, | |
| > {SDLK_F7, MY_SDLK_F7}, | |
| > {SDLK_F8, MY_SDLK_F8}, | |
| > {SDLK_F9, MY_SDLK_F9}, | |
| > {SDLK_F10, MY_SDLK_F10}, | |
| > {SDLK_F11, MY_SDLK_F11}, | |
| > {SDLK_F12, MY_SDLK_F12}, | |
| > | |
| > {SDLK_PRINTSCREEN, MY_SDLK_PRINTSCREEN}, | |
| > {SDLK_SCROLLLOCK, MY_SDLK_SCROLLLOCK}, | |
| > {SDLK_PAUSE, MY_SDLK_PAUSE}, | |
| > {SDLK_INSERT, MY_SDLK_INSERT}, | |
| > {SDLK_HOME, MY_SDLK_HOME}, | |
| > {SDLK_PAGEUP, MY_SDLK_PAGEUP}, | |
| > {SDLK_DELETE, MY_SDLK_DELETE}, | |
| > {SDLK_END, MY_SDLK_END}, | |
| > {SDLK_PAGEDOWN, MY_SDLK_PAGEDOWN}, | |
| > {SDLK_RIGHT, MY_SDLK_RIGHT}, | |
| > {SDLK_LEFT, MY_SDLK_LEFT}, | |
| > {SDLK_DOWN, MY_SDLK_DOWN}, | |
| > {SDLK_UP, MY_SDLK_UP}, | |
| > | |
| > {SDLK_NUMLOCKCLEAR, MY_SDLK_NUMLOCKCLEAR}, | |
| > {SDLK_KP_DIVIDE, MY_SDLK_KP_DIVIDE}, | |
| > {SDLK_KP_MULTIPLY, MY_SDLK_KP_MULTIPLY}, | |
| > {SDLK_KP_MINUS, MY_SDLK_KP_MINUS}, | |
| > {SDLK_KP_PLUS, MY_SDLK_KP_PLUS}, | |
| > {SDLK_KP_ENTER, MY_SDLK_KP_ENTER}, | |
| > {SDLK_KP_1, MY_SDLK_KP_1}, | |
| > {SDLK_KP_2, MY_SDLK_KP_2}, | |
| > {SDLK_KP_3, MY_SDLK_KP_3}, | |
| > {SDLK_KP_4, MY_SDLK_KP_4}, | |
| > {SDLK_KP_5, MY_SDLK_KP_5}, | |
| > {SDLK_KP_6, MY_SDLK_KP_6}, | |
| > {SDLK_KP_7, MY_SDLK_KP_7}, | |
| > {SDLK_KP_8, MY_SDLK_KP_8}, | |
| > {SDLK_KP_9, MY_SDLK_KP_9}, | |
| > {SDLK_KP_0, MY_SDLK_KP_0}, | |
| > {SDLK_KP_PERIOD, MY_SDLK_KP_PERIOD}, | |
| > | |
| > {SDLK_APPLICATION, MY_SDLK_APPLICATION}, | |
| > {SDLK_POWER, MY_SDLK_POWER}, | |
| > {SDLK_KP_EQUALS, MY_SDLK_KP_EQUALS}, | |
| > {SDLK_F13, MY_SDLK_F13}, | |
| > {SDLK_F14, MY_SDLK_F14}, | |
| > {SDLK_F15, MY_SDLK_F15}, | |
| > {SDLK_F16, MY_SDLK_F16}, | |
| > {SDLK_F17, MY_SDLK_F17}, | |
| > {SDLK_F18, MY_SDLK_F18}, | |
| > {SDLK_F19, MY_SDLK_F19}, | |
| > {SDLK_F20, MY_SDLK_F20}, | |
| > {SDLK_F21, MY_SDLK_F21}, | |
| > {SDLK_F22, MY_SDLK_F22}, | |
| > {SDLK_F23, MY_SDLK_F23}, | |
| > {SDLK_F24, MY_SDLK_F24}, | |
| > {SDLK_EXECUTE, MY_SDLK_EXECUTE}, | |
| > {SDLK_HELP, MY_SDLK_HELP}, | |
| > {SDLK_MENU, MY_SDLK_MENU}, | |
| > {SDLK_SELECT, MY_SDLK_SELECT}, | |
| > {SDLK_STOP, MY_SDLK_STOP}, | |
| > {SDLK_AGAIN, MY_SDLK_AGAIN}, | |
| > {SDLK_UNDO, MY_SDLK_UNDO}, | |
| > {SDLK_CUT, MY_SDLK_CUT}, | |
| > {SDLK_COPY, MY_SDLK_COPY}, | |
| > {SDLK_PASTE, MY_SDLK_PASTE}, | |
| > {SDLK_FIND, MY_SDLK_FIND}, | |
| > {SDLK_MUTE, MY_SDLK_MUTE}, | |
| > {SDLK_VOLUMEUP, MY_SDLK_VOLUMEUP}, | |
| > {SDLK_VOLUMEDOWN, MY_SDLK_VOLUMEDOWN}, | |
| > {SDLK_KP_COMMA, MY_SDLK_KP_COMMA}, | |
| > {SDLK_KP_EQUALSAS400, MY_SDLK_KP_EQUALSAS400}, | |
| > | |
| > {SDLK_ALTERASE, MY_SDLK_ALTERASE}, | |
| > {SDLK_SYSREQ, MY_SDLK_SYSREQ}, | |
| > {SDLK_CANCEL, MY_SDLK_CANCEL}, | |
| > {SDLK_CLEAR, MY_SDLK_CLEAR}, | |
| > {SDLK_PRIOR, MY_SDLK_PRIOR}, | |
| > {SDLK_RETURN2, MY_SDLK_RETURN2}, | |
| > {SDLK_SEPARATOR, MY_SDLK_SEPARATOR}, | |
| > {SDLK_OUT, MY_SDLK_OUT}, | |
| > {SDLK_OPER, MY_SDLK_OPER}, | |
| > {SDLK_CLEARAGAIN, MY_SDLK_CLEARAGAIN}, | |
| > {SDLK_CRSEL, MY_SDLK_CRSEL}, | |
| > {SDLK_EXSEL, MY_SDLK_EXSEL}, | |
| > | |
| > {SDLK_KP_00, MY_SDLK_KP_00}, | |
| > {SDLK_KP_000, MY_SDLK_KP_000}, | |
| > {SDLK_THOUSANDSSEPARATOR, MY_SDLK_THOUSANDSSEPARATOR}, | |
| > {SDLK_DECIMALSEPARATOR, MY_SDLK_DECIMALSEPARATOR}, | |
| > {SDLK_CURRENCYUNIT, MY_SDLK_CURRENCYUNIT}, | |
| > {SDLK_CURRENCYSUBUNIT, MY_SDLK_CURRENCYSUBUNIT}, | |
| > {SDLK_KP_LEFTPAREN, MY_SDLK_KP_LEFTPAREN}, | |
| > {SDLK_KP_RIGHTPAREN, MY_SDLK_KP_RIGHTPAREN}, | |
| > {SDLK_KP_LEFTBRACE, MY_SDLK_KP_LEFTBRACE}, | |
| > {SDLK_KP_RIGHTBRACE, MY_SDLK_KP_RIGHTBRACE}, | |
| > {SDLK_KP_TAB, MY_SDLK_KP_TAB}, | |
| > {SDLK_KP_BACKSPACE, MY_SDLK_KP_BACKSPACE}, | |
| > {SDLK_KP_A, MY_SDLK_KP_A}, | |
| > {SDLK_KP_B, MY_SDLK_KP_B}, | |
| > {SDLK_KP_C, MY_SDLK_KP_C}, | |
| > {SDLK_KP_D, MY_SDLK_KP_D}, | |
| > {SDLK_KP_E, MY_SDLK_KP_E}, | |
| > {SDLK_KP_F, MY_SDLK_KP_F}, | |
| > {SDLK_KP_XOR, MY_SDLK_KP_XOR}, | |
| > {SDLK_KP_POWER, MY_SDLK_KP_POWER}, | |
| > {SDLK_KP_PERCENT, MY_SDLK_KP_PERCENT}, | |
| > {SDLK_KP_LESS, MY_SDLK_KP_LESS}, | |
| > {SDLK_KP_GREATER, MY_SDLK_KP_GREATER}, | |
| > {SDLK_KP_AMPERSAND, MY_SDLK_KP_AMPERSAND}, | |
| > {SDLK_KP_DBLAMPERSAND, MY_SDLK_KP_DBLAMPERSAND}, | |
| > {SDLK_KP_VERTICALBAR, MY_SDLK_KP_VERTICALBAR}, | |
| > {SDLK_KP_DBLVERTICALBAR, MY_SDLK_KP_DBLVERTICALBAR}, | |
| > {SDLK_KP_COLON, MY_SDLK_KP_COLON}, | |
| > {SDLK_KP_HASH, MY_SDLK_KP_HASH}, | |
| > {SDLK_KP_SPACE, MY_SDLK_KP_SPACE}, | |
| > {SDLK_KP_AT, MY_SDLK_KP_AT}, | |
| > {SDLK_KP_EXCLAM, MY_SDLK_KP_EXCLAM}, | |
| > {SDLK_KP_MEMSTORE, MY_SDLK_KP_MEMSTORE}, | |
| > {SDLK_KP_MEMRECALL, MY_SDLK_KP_MEMRECALL}, | |
| > {SDLK_KP_MEMCLEAR, MY_SDLK_KP_MEMCLEAR}, | |
| > {SDLK_KP_MEMADD, MY_SDLK_KP_MEMADD}, | |
| > {SDLK_KP_MEMSUBTRACT, MY_SDLK_KP_MEMSUBTRACT}, | |
| > {SDLK_KP_MEMMULTIPLY, MY_SDLK_KP_MEMMULTIPLY}, | |
| > {SDLK_KP_MEMDIVIDE, MY_SDLK_KP_MEMDIVIDE}, | |
| > {SDLK_KP_PLUSMINUS, MY_SDLK_KP_PLUSMINUS}, | |
| > {SDLK_KP_CLEAR, MY_SDLK_KP_CLEAR}, | |
| > {SDLK_KP_CLEARENTRY, MY_SDLK_KP_CLEARENTRY}, | |
| > {SDLK_KP_BINARY, MY_SDLK_KP_BINARY}, | |
| > {SDLK_KP_OCTAL, MY_SDLK_KP_OCTAL}, | |
| > {SDLK_KP_DECIMAL, MY_SDLK_KP_DECIMAL}, | |
| > {SDLK_KP_HEXADECIMAL, MY_SDLK_KP_HEXADECIMAL}, | |
| > | |
| > {SDLK_LCTRL, MY_SDLK_LCTRL}, | |
| > {SDLK_LSHIFT, MY_SDLK_LSHIFT}, | |
| > {SDLK_LALT, MY_SDLK_LALT}, | |
| > {SDLK_LGUI, MY_SDLK_LGUI}, | |
| > {SDLK_RCTRL, MY_SDLK_RCTRL}, | |
| > {SDLK_RSHIFT, MY_SDLK_RSHIFT}, | |
| > {SDLK_RALT, MY_SDLK_RALT}, | |
| > {SDLK_RGUI, MY_SDLK_RGUI}, | |
| > | |
| > {SDLK_MODE, MY_SDLK_MODE}, | |
| > | |
| > {SDLK_AUDIONEXT, MY_SDLK_AUDIONEXT}, | |
| > {SDLK_AUDIOPREV, MY_SDLK_AUDIOPREV}, | |
| > {SDLK_AUDIOSTOP, MY_SDLK_AUDIOSTOP}, | |
| > {SDLK_AUDIOPLAY, MY_SDLK_AUDIOPLAY}, | |
| > {SDLK_AUDIOMUTE, MY_SDLK_AUDIOMUTE}, | |
| > {SDLK_MEDIASELECT, MY_SDLK_MEDIASELECT}, | |
| > {SDLK_WWW, MY_SDLK_WWW}, | |
| > {SDLK_MAIL, MY_SDLK_MAIL}, | |
| > {SDLK_CALCULATOR, MY_SDLK_CALCULATOR}, | |
| > {SDLK_COMPUTER, MY_SDLK_COMPUTER}, | |
| > {SDLK_AC_SEARCH, MY_SDLK_AC_SEARCH}, | |
| > {SDLK_AC_HOME, MY_SDLK_AC_HOME}, | |
| > {SDLK_AC_BACK, MY_SDLK_AC_BACK}, | |
| > {SDLK_AC_FORWARD, MY_SDLK_AC_FORWARD}, | |
| > {SDLK_AC_STOP, MY_SDLK_AC_STOP}, | |
| > {SDLK_AC_REFRESH, MY_SDLK_AC_REFRESH}, | |
| > {SDLK_AC_BOOKMARKS, MY_SDLK_AC_BOOKMARKS}, | |
| > | |
| > {SDLK_BRIGHTNESSDOWN, MY_SDLK_BRIGHTNESSDOWN}, | |
| > {SDLK_BRIGHTNESSUP, MY_SDLK_BRIGHTNESSUP}, | |
| > {SDLK_DISPLAYSWITCH, MY_SDLK_DISPLAYSWITCH}, | |
| > {SDLK_KBDILLUMTOGGLE, MY_SDLK_KBDILLUMTOGGLE}, | |
| > {SDLK_KBDILLUMDOWN, MY_SDLK_KBDILLUMDOWN}, | |
| > {SDLK_KBDILLUMUP, MY_SDLK_KBDILLUMUP}, | |
| > {SDLK_EJECT, MY_SDLK_EJECT}, | |
| > {SDLK_SLEEP, MY_SDLK_SLEEP}, | |
| > //{SDLK_APP1, MY_SDLK_APP1}, | |
| > //{SDLK_APP2, MY_SDLK_APP2}, | |
| > | |
| > //{SDLK_AUDIOREWIND, MY_SDLK_AUDIOREWIND}, | |
| > //{SDLK_AUDIOFASTFORWARD, MY_SDLK_AUDIOFASTFORWARD}, | |
| > | |
| > {SDLK_LAST, MY_SDLK_UNKNOWN} | |
| > }; | |
| > | |
| > static int func_SDLK_TO_MY_SDLK(int argSDLK) { | |
| > int i = 0; | |
| > | |
| > do { | |
| > if(SDLK_to_My_SDLK_ARRAY[i].m_SDLK == argSDLK) { | |
| > break; | |
| > } | |
| > i++; | |
| > } while(SDLK_to_My_SDLK_ARRAY[i].m_SDLK != SDLK_LAST); | |
| > return SDLK_to_My_SDLK_ARRAY[i].m_MySDLK; | |
| > } | |
| > | |
| > // SDL1で定義されているものを文字列と指定 | |
| > static const char * const in_sdl_keys[SDLK_LAST] = { | |
| > [MY_SDLK_BACKSPACE] = "backspace", | |
| > [MY_SDLK_TAB] = "tab", | |
| > [MY_SDLK_CLEAR] = "clear", | |
| > [MY_SDLK_RETURN] = "return", | |
| > [MY_SDLK_PAUSE] = "pause", | |
| > [MY_SDLK_ESCAPE] = "escape", | |
| > [MY_SDLK_SPACE] = "space", | |
| > [MY_SDLK_EXCLAIM] = "!", | |
| > [MY_SDLK_QUOTEDBL] = "\"", | |
| > [MY_SDLK_HASH] = "#", | |
| > [MY_SDLK_DOLLAR] = "$", | |
| > [MY_SDLK_AMPERSAND] = "&", | |
| > [MY_SDLK_QUOTE] = "'", | |
| > [MY_SDLK_LEFTPAREN] = "(", | |
| > [MY_SDLK_RIGHTPAREN] = ")", | |
| > [MY_SDLK_ASTERISK] = "*", | |
| > [MY_SDLK_PLUS] = "+", | |
| > [MY_SDLK_COMMA] = ",", | |
| > [MY_SDLK_MINUS] = "-", | |
| > [MY_SDLK_PERIOD] = ".", | |
| > [MY_SDLK_SLASH] = "/", | |
| > [MY_SDLK_0] = "0", | |
| > [MY_SDLK_1] = "1", | |
| > [MY_SDLK_2] = "2", | |
| > [MY_SDLK_3] = "3", | |
| > [MY_SDLK_4] = "4", | |
| > [MY_SDLK_5] = "5", | |
| > [MY_SDLK_6] = "6", | |
| > [MY_SDLK_7] = "7", | |
| > [MY_SDLK_8] = "8", | |
| > [MY_SDLK_9] = "9", | |
| > [MY_SDLK_COLON] = ":", | |
| > [MY_SDLK_SEMICOLON] = ";", | |
| > [MY_SDLK_LESS] = "<", | |
| > [MY_SDLK_EQUALS] = "=", | |
| > [MY_SDLK_GREATER] = ">", | |
| > [MY_SDLK_QUESTION] = "?", | |
| > [MY_SDLK_AT] = "@", | |
| > [MY_SDLK_LEFTBRACKET] = "[", | |
| > [MY_SDLK_BACKSLASH] = "\\", | |
| > [MY_SDLK_RIGHTBRACKET] = "]", | |
| > [MY_SDLK_CARET] = "^", | |
| > [MY_SDLK_UNDERSCORE] = "_", | |
| > [MY_SDLK_BACKQUOTE] = "`", | |
| > [MY_SDLK_a] = "a", | |
| > [MY_SDLK_b] = "b", | |
| > [MY_SDLK_c] = "c", | |
| > [MY_SDLK_d] = "d", | |
| > [MY_SDLK_e] = "e", | |
| > [MY_SDLK_f] = "f", | |
| > [MY_SDLK_g] = "g", | |
| > [MY_SDLK_h] = "h", | |
| > [MY_SDLK_i] = "i", | |
| > [MY_SDLK_j] = "j", | |
| > [MY_SDLK_k] = "k", | |
| > [MY_SDLK_l] = "l", | |
| > [MY_SDLK_m] = "m", | |
| > [MY_SDLK_n] = "n", | |
| > [MY_SDLK_o] = "o", | |
| > [MY_SDLK_p] = "p", | |
| > [MY_SDLK_q] = "q", | |
| > [MY_SDLK_r] = "r", | |
| > [MY_SDLK_s] = "s", | |
| > [MY_SDLK_t] = "t", | |
| > [MY_SDLK_u] = "u", | |
| > [MY_SDLK_v] = "v", | |
| > [MY_SDLK_w] = "w", | |
| > [MY_SDLK_x] = "x", | |
| > [MY_SDLK_y] = "y", | |
| > [MY_SDLK_z] = "z", | |
| > [MY_SDLK_DELETE] = "delete", | |
| > | |
| > [MY_SDLK_KP_0] = "[0]", | |
| > [MY_SDLK_KP_1] = "[1]", | |
| > [MY_SDLK_KP_2] = "[2]", | |
| > [MY_SDLK_KP_3] = "[3]", | |
| > [MY_SDLK_KP_4] = "[4]", | |
| > [MY_SDLK_KP_5] = "[5]", | |
| > [MY_SDLK_KP_6] = "[6]", | |
| > [MY_SDLK_KP_7] = "[7]", | |
| > [MY_SDLK_KP_8] = "[8]", | |
| > [MY_SDLK_KP_9] = "[9]", | |
| > [MY_SDLK_KP_PERIOD] = "[.]", | |
| > [MY_SDLK_KP_DIVIDE] = "[/]", | |
| > [MY_SDLK_KP_MULTIPLY] = "[*]", | |
| > [MY_SDLK_KP_MINUS] = "[-]", | |
| > [MY_SDLK_KP_PLUS] = "[+]", | |
| > [MY_SDLK_KP_ENTER] = "enter", | |
| > [MY_SDLK_KP_EQUALS] = "equals", | |
| > | |
| > [MY_SDLK_UP] = "up", | |
| > [MY_SDLK_DOWN] = "down", | |
| > [MY_SDLK_RIGHT] = "right", | |
| > [MY_SDLK_LEFT] = "left", | |
| > [MY_SDLK_INSERT] = "insert", | |
| > [MY_SDLK_HOME] = "home", | |
| > [MY_SDLK_END] = "end", | |
| > [MY_SDLK_PAGEUP] = "page up", | |
| > [MY_SDLK_PAGEDOWN] = "page down", | |
| > | |
| > [MY_SDLK_F1] = "f1", | |
| > [MY_SDLK_F2] = "f2", | |
| > [MY_SDLK_F3] = "f3", | |
| > [MY_SDLK_F4] = "f4", | |
| > [MY_SDLK_F5] = "f5", | |
| > [MY_SDLK_F6] = "f6", | |
| > [MY_SDLK_F7] = "f7", | |
| > [MY_SDLK_F8] = "f8", | |
| > [MY_SDLK_F9] = "f9", | |
| > [MY_SDLK_F10] = "f10", | |
| > [MY_SDLK_F11] = "f11", | |
| > [MY_SDLK_F12] = "f12", | |
| > [MY_SDLK_F13] = "f13", | |
| > [MY_SDLK_F14] = "f14", | |
| > [MY_SDLK_F15] = "f15", | |
| > | |
| > [MY_SDLK_NUMLOCKCLEAR] = "numlock", | |
| > [MY_SDLK_CAPSLOCK] = "caps lock", | |
| > [MY_SDLK_SCROLLLOCK] = "scroll lock", | |
| > [MY_SDLK_RSHIFT] = "right shift", | |
| > [MY_SDLK_LSHIFT] = "left shift", | |
| > [MY_SDLK_RCTRL] = "right ctrl", | |
| > [MY_SDLK_LCTRL] = "left ctrl", | |
| > [MY_SDLK_RALT] = "right alt", | |
| > [MY_SDLK_LALT] = "left alt", | |
| > #ifdef NOTDEF | |
| > [MY_SDLK_RMETA] = "right meta", | |
| > [MY_SDLK_LMETA] = "left meta", | |
| > [MY_SDLK_LSUPER] = "left super", /* "Windows" keys */ | |
| > [MY_SDLK_RSUPER] = "right super", | |
| > #endif | |
| > [MY_SDLK_MODE] = "alt gr", | |
| > #ifdef NOTDEF | |
| > [MY_SDLK_COMPOSE] = "compose", | |
| > #endif | |
| > [MY_SDLK_EJECT] = "eject", | |
| > [MY_SDLK_SLEEP] = "sleep", | |
| > [MY_SDLK_AUDIOPLAY] = "reset", | |
| > }; | |
| > #else | |
| 163a591,593 | |
| > [SDLK_EJECT] = "eject", | |
| > [SDLK_SLEEP] = "sleep", | |
| > [SDLK_AUDIOPLAY] = "reset", | |
| 164a595 | |
| > #endif | |
| 190a622,630 | |
| > int fd0 = open("/dev/input/joystick0",O_RDONLY); | |
| > int fd1 = open("/dev/input/joystick1",O_RDONLY); | |
| > | |
| > if( fd1 != -1 ){ | |
| > p2_connected = 1; | |
| > }else{ | |
| > p2_connected = 0; | |
| > } | |
| > | |
| 205a646,654 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > | |
| > if(fd1 != -1 && fd0 == -1) { | |
| > snprintf(name, sizeof(name), IN_SDL_PREFIX "%s [%d]", SDL_JoystickName(joy), 1); | |
| > } else { | |
| > snprintf(name, sizeof(name), IN_SDL_PREFIX "%s", SDL_JoystickName(joy)); | |
| > } | |
| > | |
| > #else | |
| 206a656 | |
| > #endif | |
| 209a660,664 | |
| > if(fd0 != -1) | |
| > close(fd0); | |
| > if(fd1 != -1) | |
| > close(fd1); | |
| > | |
| 211a667 | |
| > | |
| 273a730,737 | |
| > #ifdef CONFIG_DEBUG | |
| > printf("%s:%d SDL_JOYAXISMOTION which=%d axis=%d value=%d\n", | |
| > __func__, | |
| > __LINE__, | |
| > event->jaxis.which, | |
| > event->jaxis.axis, | |
| > event->jaxis.value); | |
| > #endif | |
| 286a751,753 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > kc = event->jaxis.axis ? MY_SDLK_UP : MY_SDLK_LEFT; | |
| > #else | |
| 287a755 | |
| > #endif | |
| 295a764,766 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > kc = event->jaxis.axis ? MY_SDLK_DOWN : MY_SDLK_RIGHT; | |
| > #else | |
| 296a768 | |
| > #endif | |
| 304a777,783 | |
| > #ifdef CONFIG_DEBUG | |
| > printf("%s:%d SDL_JOYBUTTONxxxx which=%d button=%d\n", | |
| > __func__, | |
| > __LINE__, | |
| > event->jbutton.which, | |
| > event->jbutton.button); | |
| > #endif | |
| 306a786,788 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > kc = (int)event->jbutton.button + MY_SDLK_WORLD_0; | |
| > #else | |
| 307a790 | |
| > #endif | |
| 311a795,801 | |
| > #ifdef CONFIG_DEBUG | |
| > printf("%s:%d event=0x%x(%d)\n", | |
| > __func__, | |
| > __LINE__, | |
| > event->type, | |
| > event->type); | |
| > #endif | |
| 324a815,1007 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > static void ControlJoysticEscape(struct in_sdl_state *arg_pState, | |
| > SDL_Event *arg_pEvent) | |
| > { | |
| > SDL_Event myEvent; | |
| > static bool bIsCurrentSelectButtonDown = false; | |
| > static bool bIsCurrentStartButtonDown = false; | |
| > | |
| > bool bIsFormerSelectButtonDown = bIsCurrentSelectButtonDown; | |
| > bool bIsFormerStartButtonDown = bIsCurrentStartButtonDown; | |
| > char *env_menu, *endptr; | |
| > #ifdef CONFIG_ENABLE_MENU | |
| > int env = 2; | |
| > #else | |
| > int env = 0; | |
| > #endif | |
| > #ifdef CONFIG_DEBUG | |
| > printf("%s:%d keysym.scancode=%d keysym.sym=%d keysym.mod=%d\n", | |
| > __func__, | |
| > __LINE__, | |
| > myEvent.key.keysym.scancode, | |
| > myEvent.key.keysym.sym, | |
| > myEvent.key.keysym.mod); | |
| > printf("ControlJoysticEscape SDLK_WORLD %d",(arg_pEvent->jbutton.button + MY_SDLK_WORLD_0)); | |
| > | |
| > #endif | |
| > | |
| > if (arg_pState->joy) { | |
| > env_menu = getenv("PCSX_ESC_KEY"); | |
| > if(env_menu != NULL) { | |
| > env = strtol(env_menu, &endptr, 10); | |
| > if(strlen(endptr) > 0 || env > 2) { | |
| > #ifdef CONFIG_ENABLE_MENU | |
| > env = 2; | |
| > #else | |
| > env = 0; | |
| > #endif | |
| > } | |
| > } | |
| > | |
| > switch(env) { | |
| > case 0: | |
| > break; | |
| > case 1: | |
| > if((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0) == MY_SDLK_WORLD_8) { | |
| > // "select" key event | |
| > switch (arg_pEvent->type) { | |
| > case SDL_JOYBUTTONDOWN: | |
| > bIsCurrentSelectButtonDown = true; | |
| > break; | |
| > case SDL_JOYBUTTONUP: | |
| > bIsCurrentSelectButtonDown = false; | |
| > break; | |
| > } | |
| > | |
| > } else if(((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0) == MY_SDLK_WORLD_9)) { | |
| > // "start" key event | |
| > switch (arg_pEvent->type) { | |
| > case SDL_JOYBUTTONDOWN: | |
| > bIsCurrentStartButtonDown = true; | |
| > break; | |
| > case SDL_JOYBUTTONUP: | |
| > bIsCurrentStartButtonDown = false; | |
| > break; | |
| > } | |
| > } | |
| > | |
| > if(!((bIsFormerSelectButtonDown == true) && (bIsFormerStartButtonDown == true)) | |
| > && | |
| > ((bIsCurrentSelectButtonDown == true) && (bIsCurrentStartButtonDown == true))) { | |
| > | |
| > switch((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0)) { | |
| > case MY_SDLK_WORLD_9: | |
| > #ifdef CONFIG_DEBUG | |
| > printf("ControlJoysticEscape SDL_SCANCODE_ESCAPE - SDL_KEYDOWN"); | |
| > #endif | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_ESCAPE; | |
| > myEvent.key.keysym.sym = SDLK_ESCAPE; | |
| > break; | |
| > } | |
| > | |
| > // make ESC-key/Open-key/Reset-key down event | |
| > myEvent.type = myEvent.key.type = SDL_KEYDOWN; | |
| > myEvent.key.timestamp = arg_pEvent->key.timestamp; | |
| > myEvent.key.windowID = 1; | |
| > myEvent.key.state = 1; | |
| > myEvent.key.repeat = 0; | |
| > myEvent.key.keysym.mod = 0; | |
| > | |
| > SDL_PushEvent(&myEvent); | |
| > | |
| > } else if(((bIsFormerSelectButtonDown == true) && (bIsFormerStartButtonDown == true)) | |
| > && | |
| > !((bIsCurrentSelectButtonDown == true) && (bIsCurrentStartButtonDown == true))) { | |
| > | |
| > // make ESC-key up event | |
| > switch((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0)) { | |
| > case MY_SDLK_WORLD_9: | |
| > #ifdef CONFIG_DEBUG | |
| > printf("ControlJoysticEscape SDL_SCANCODE_ESCAPE - SDL_KEYUP"); | |
| > #endif | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_ESCAPE; | |
| > myEvent.key.keysym.sym = SDLK_ESCAPE; | |
| > break; | |
| > case MY_SDLK_WORLD_0: | |
| > #ifdef CONFIG_DEBUG | |
| > printf("ControlJoysticEscape SDL_SCANCODE_F9 - SDL_KEYUP"); | |
| > #endif | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_F9; | |
| > myEvent.key.keysym.sym = SDLK_F9; | |
| > break; | |
| > case MY_SDLK_WORLD_1: | |
| > #ifdef CONFIG_DEBUG | |
| > printf("ControlJoysticEscape SDL_SCANCODE_F10 - SDL_KEYUP"); | |
| > #endif | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_F10; | |
| > myEvent.key.keysym.sym = SDLK_F10; | |
| > break; | |
| > } | |
| > | |
| > // make ESC-key/Open-key/Reset-key up event | |
| > myEvent.type = myEvent.key.type = SDL_KEYUP; | |
| > myEvent.key.timestamp = arg_pEvent->key.timestamp; | |
| > myEvent.key.windowID = 1; | |
| > myEvent.key.state = 0; | |
| > myEvent.key.repeat = 0; | |
| > myEvent.key.keysym.mod = 0; | |
| > | |
| > SDL_PushEvent(&myEvent); | |
| > } | |
| > break; | |
| > case 2: | |
| > if((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0) == MY_SDLK_WORLD_8) { | |
| > // "select" key event | |
| > switch (arg_pEvent->type) { | |
| > case SDL_JOYBUTTONDOWN: | |
| > bIsCurrentSelectButtonDown = true; | |
| > break; | |
| > case SDL_JOYBUTTONUP: | |
| > bIsCurrentSelectButtonDown = false; | |
| > break; | |
| > } | |
| > | |
| > } else if(((arg_pEvent->jbutton.button + MY_SDLK_WORLD_0) == MY_SDLK_WORLD_0)) { | |
| > // "tryangle" key event | |
| > switch (arg_pEvent->type) { | |
| > case SDL_JOYBUTTONDOWN: | |
| > bIsCurrentStartButtonDown = true; | |
| > break; | |
| > case SDL_JOYBUTTONUP: | |
| > bIsCurrentStartButtonDown = false; | |
| > break; | |
| > } | |
| > } | |
| > | |
| > if(!((bIsFormerSelectButtonDown == true) && (bIsFormerStartButtonDown == true)) | |
| > && | |
| > ((bIsCurrentSelectButtonDown == true) && (bIsCurrentStartButtonDown == true))) { | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_ESCAPE; | |
| > myEvent.key.keysym.sym = SDLK_ESCAPE; | |
| > myEvent.type = myEvent.key.type = SDL_KEYDOWN; | |
| > myEvent.key.timestamp = arg_pEvent->key.timestamp; | |
| > myEvent.key.windowID = 1; | |
| > myEvent.key.state = 1; | |
| > myEvent.key.repeat = 0; | |
| > myEvent.key.keysym.mod = 0; | |
| > | |
| > SDL_PushEvent(&myEvent); | |
| > | |
| > } else if(((bIsFormerSelectButtonDown == true) && (bIsFormerStartButtonDown == true)) | |
| > && | |
| > !((bIsCurrentSelectButtonDown == true) && (bIsCurrentStartButtonDown == true))) { | |
| > myEvent.key.keysym.scancode = SDL_SCANCODE_ESCAPE; | |
| > myEvent.key.keysym.sym = SDLK_ESCAPE; | |
| > | |
| > // make ESC-key/Open-key/Reset-key up event | |
| > myEvent.type = myEvent.key.type = SDL_KEYUP; | |
| > myEvent.key.timestamp = arg_pEvent->key.timestamp; | |
| > myEvent.key.windowID = 1; | |
| > myEvent.key.state = 0; | |
| > myEvent.key.repeat = 0; | |
| > myEvent.key.keysym.mod = 0; | |
| > | |
| > SDL_PushEvent(&myEvent); | |
| > } | |
| > default: | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > #endif | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 326a1010 | |
| > #endif | |
| 330a1015,1018 | |
| > #ifdef CONFIG_DEBUG | |
| > static int cnt=0; | |
| > #endif | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 331a1020,1060 | |
| > #else | |
| > static int checkjoy0=0; | |
| > int i=0, eventcnt=0; | |
| > Uint32 minType; | |
| > Uint32 maxType; | |
| > eventcnt = SDL_PeepEvents(events, | |
| > sizeof(events) / sizeof(events[0]), | |
| > SDL_GETEVENT, | |
| > SDL_JOYDEVICEADDED, | |
| > SDL_JOYDEVICEREMOVED); | |
| > if(eventcnt) { | |
| > #ifdef CONFIG_DEBUG | |
| > printf("eventcnt : %d\n", eventcnt); | |
| > printf("events->type : 0x%x\n", events->type); | |
| > printf("jdevice.which : %d\n", events->jdevice.which); | |
| > #endif | |
| > int check = 0; | |
| > for(i=0; i < eventcnt; i++) { | |
| > check = bIsValidHotPlugEvent(&events[i]); | |
| > if(check) { | |
| > in_probe(); | |
| > } | |
| > } | |
| > SDL_PumpEvents(); | |
| > SDL_FlushEvents(SDL_FIRSTEVENT, SDL_LASTEVENT); | |
| > fflush(stdout); | |
| > if (check) { | |
| > // SDL_JOYDEVICEADDED or SDL_JOYDEVICEREMOVED イベントあり | |
| > // デバイス情報領域が再確保 | |
| > return -1; | |
| > } else { | |
| > for (i = 0; i < SDLK_LAST / KEYBITS_WORD_BITS + 1; i++) { | |
| > if(state == NULL) | |
| > break; | |
| > state->keystate[i] = 0; | |
| > } | |
| > return 0; | |
| > } | |
| > } | |
| > | |
| > #endif | |
| 333c1062 | |
| < int i, ret, retval = 0; | |
| --- | |
| > int ret, retval = 0; | |
| 340a1070,1087 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > minType = SDL_KEYDOWN; | |
| > maxType = SDL_KEYUP; | |
| > if(state->joy) { | |
| > minType = SDL_JOYAXISMOTION; | |
| > maxType = SDL_JOYDEVICEREMOVED; | |
| > } | |
| > num_events = SDL_PeepEvents(NULL, | |
| > 0, | |
| > SDL_PEEKEVENT, | |
| > minType, | |
| > maxType); | |
| > #ifdef CONFIG_DEBUG | |
| > if(num_events) { | |
| > printf("%s:%d %d joy=%p num_events=%d\n",__func__,__LINE__,++cnt,state->joy,num_events); | |
| > } | |
| > #endif | |
| > #else | |
| 341a1089 | |
| > #endif | |
| 343a1092,1098 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > count = SDL_PeepEvents(events, | |
| > maxcount, | |
| > SDL_GETEVENT, | |
| > minType, | |
| > maxType); | |
| > #else | |
| 344a1100 | |
| > #endif | |
| 348a1105,1165 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > ControlJoysticEscape(state, event); | |
| > | |
| > if (state->joy) | |
| > ret = handle_joy_event(state, | |
| > event, one_kc, one_down); | |
| > else { | |
| > #ifdef CONFIG_DEBUG | |
| > printf("%s:%d type=0x%x key.type=0x%x timestamp=%d windowID=%d state=%d repeat=%d keysym.scancode=%d keysym.sym=%d keysym.mod=%d\n", | |
| > __func__, | |
| > __LINE__, | |
| > event->type, | |
| > event->key.type, | |
| > event->key.timestamp, | |
| > event->key.windowID, | |
| > event->key.state, | |
| > event->key.repeat, | |
| > event->key.keysym.scancode, | |
| > event->key.keysym.sym, | |
| > event->key.keysym.mod); | |
| > #endif | |
| > event->key.keysym.sym = func_SDLK_TO_MY_SDLK(event->key.keysym.sym); | |
| > ret = handle_event(state, | |
| > event, one_kc, one_down); | |
| > } | |
| > #ifdef CONFIG_DEBUG | |
| > if(one_kc) { | |
| > printf("%s:%d i=%d type(SDL_KEYDOWN or SDL_KEYUP)=0x%x timestamp=%d windowID=%d state(SDL_PRESSED or SDL_RELEASED)=%d repeat=%d one_key=0x%x(%d) scancode=0x%x(%d) sym=0x%x(%d) mod=%d\n" , | |
| > __func__, | |
| > __LINE__, | |
| > i, | |
| > (event->key).type, /* Uint32 */ | |
| > (event->key).timestamp, /* Uint32 */ | |
| > (event->key).windowID, /* Uint32 */ | |
| > (event->key).state, /* Uint8 */ | |
| > (event->key).repeat, /* Uint8 */ | |
| > *one_kc, | |
| > *one_kc, | |
| > (event->key).keysym.scancode, /* enum */ | |
| > (event->key).keysym.scancode, /* enum */ | |
| > (event->key).keysym.sym, /* int32 */ | |
| > (event->key).keysym.sym, /* int32 */ | |
| > (event->key).keysym.mod); /* Uint16 */ | |
| > } else { | |
| > printf("%s:%d i=%d type(SDL_KEYDOWN or SDL_KEYUP)=0x%x timestamp=%d windowID=%d state(SDL_PRESSED or SDL_RELEASED)=%d repeat=%d scancode=0x%x(%d) sym=0x%x(%d) mod=%d\n" , | |
| > __func__, | |
| > __LINE__, | |
| > i, | |
| > (event->key).type, /* Uint32 */ | |
| > (event->key).timestamp, /* Uint32 */ | |
| > (event->key).windowID, /* Uint32 */ | |
| > (event->key).state, /* Uint8 */ | |
| > (event->key).repeat, /* Uint8 */ | |
| > (event->key).keysym.scancode, /* enum */ | |
| > (event->key).keysym.scancode, /* enum */ | |
| > (event->key).keysym.sym, /* int32 */ | |
| > (event->key).keysym.sym, /* int32 */ | |
| > (event->key).keysym.mod); /* Uint16 */ | |
| > } | |
| > #endif // #ifdef CONFIG_DEBUG | |
| > #else // #if SDL_MAJOR_VERSION == 2 | |
| 354a1172 | |
| > #endif // #if SDL_MAJOR_VERSION == 2 | |
| 389c1207,1208 | |
| < collect_events(state, NULL, NULL); | |
| --- | |
| > if (collect_events(state, NULL, NULL) < 0) | |
| > return 0; | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/keysym.h pcsx_rearmed_custom/frontend/libpicofe/keysym.h | |
| 0a1,286 | |
| > #ifndef _keysym_h | |
| > #define _keysym_h | |
| > | |
| > #include <SDL.h> | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > typedef enum { | |
| > MY_SDLK_UNKNOWN = 0, | |
| > | |
| > MY_SDLK_RETURN, | |
| > MY_SDLK_ESCAPE, | |
| > MY_SDLK_BACKSPACE, | |
| > MY_SDLK_TAB, | |
| > MY_SDLK_SPACE, | |
| > MY_SDLK_EXCLAIM, | |
| > MY_SDLK_QUOTEDBL, | |
| > MY_SDLK_HASH, | |
| > MY_SDLK_PERCENT, | |
| > MY_SDLK_DOLLAR, | |
| > MY_SDLK_AMPERSAND, | |
| > MY_SDLK_QUOTE, | |
| > MY_SDLK_LEFTPAREN, | |
| > MY_SDLK_RIGHTPAREN, | |
| > MY_SDLK_ASTERISK, | |
| > MY_SDLK_PLUS, | |
| > MY_SDLK_COMMA, | |
| > MY_SDLK_MINUS, | |
| > MY_SDLK_PERIOD, | |
| > MY_SDLK_SLASH, | |
| > MY_SDLK_0, | |
| > MY_SDLK_1, | |
| > MY_SDLK_2, | |
| > MY_SDLK_3, | |
| > MY_SDLK_4, | |
| > MY_SDLK_5, | |
| > MY_SDLK_6, | |
| > MY_SDLK_7, | |
| > MY_SDLK_8, | |
| > MY_SDLK_9, | |
| > MY_SDLK_COLON, | |
| > MY_SDLK_SEMICOLON, | |
| > MY_SDLK_LESS, | |
| > MY_SDLK_EQUALS, | |
| > MY_SDLK_GREATER, | |
| > MY_SDLK_QUESTION, | |
| > MY_SDLK_AT, | |
| > /* | |
| > Skip uppercase letters | |
| > */ | |
| > MY_SDLK_LEFTBRACKET, | |
| > MY_SDLK_BACKSLASH, | |
| > MY_SDLK_RIGHTBRACKET, | |
| > MY_SDLK_CARET, | |
| > MY_SDLK_UNDERSCORE, | |
| > MY_SDLK_BACKQUOTE, | |
| > MY_SDLK_a, | |
| > MY_SDLK_b, | |
| > MY_SDLK_c, | |
| > MY_SDLK_d, | |
| > MY_SDLK_e, | |
| > MY_SDLK_f, | |
| > MY_SDLK_g, | |
| > MY_SDLK_h, | |
| > MY_SDLK_i, | |
| > MY_SDLK_j, | |
| > MY_SDLK_k, | |
| > MY_SDLK_l, | |
| > MY_SDLK_m, | |
| > MY_SDLK_n, | |
| > MY_SDLK_o, | |
| > MY_SDLK_p, | |
| > MY_SDLK_q, | |
| > MY_SDLK_r, | |
| > MY_SDLK_s, | |
| > MY_SDLK_t, | |
| > MY_SDLK_u, | |
| > MY_SDLK_v, | |
| > MY_SDLK_w, | |
| > MY_SDLK_x, | |
| > MY_SDLK_y, | |
| > MY_SDLK_z, | |
| > | |
| > MY_SDLK_CAPSLOCK, | |
| > | |
| > MY_SDLK_F1, | |
| > MY_SDLK_F2, | |
| > MY_SDLK_F3, | |
| > MY_SDLK_F4, | |
| > MY_SDLK_F5, | |
| > MY_SDLK_F6, | |
| > MY_SDLK_F7, | |
| > MY_SDLK_F8, | |
| > MY_SDLK_F9, | |
| > MY_SDLK_F10, | |
| > MY_SDLK_F11, | |
| > MY_SDLK_F12, | |
| > | |
| > MY_SDLK_PRINTSCREEN, | |
| > MY_SDLK_SCROLLLOCK, | |
| > MY_SDLK_PAUSE, | |
| > MY_SDLK_INSERT, | |
| > MY_SDLK_HOME, | |
| > MY_SDLK_PAGEUP, | |
| > MY_SDLK_DELETE, | |
| > MY_SDLK_END, | |
| > MY_SDLK_PAGEDOWN, | |
| > MY_SDLK_RIGHT, | |
| > MY_SDLK_LEFT, | |
| > MY_SDLK_DOWN, | |
| > MY_SDLK_UP, | |
| > | |
| > MY_SDLK_NUMLOCKCLEAR, | |
| > MY_SDLK_KP_DIVIDE, | |
| > MY_SDLK_KP_MULTIPLY, | |
| > MY_SDLK_KP_MINUS, | |
| > MY_SDLK_KP_PLUS, | |
| > MY_SDLK_KP_ENTER, | |
| > MY_SDLK_KP_1, | |
| > MY_SDLK_KP_2, | |
| > MY_SDLK_KP_3, | |
| > MY_SDLK_KP_4, | |
| > MY_SDLK_KP_5, | |
| > MY_SDLK_KP_6, | |
| > MY_SDLK_KP_7, | |
| > MY_SDLK_KP_8, | |
| > MY_SDLK_KP_9, | |
| > MY_SDLK_KP_0, | |
| > MY_SDLK_KP_PERIOD, | |
| > | |
| > MY_SDLK_APPLICATION, | |
| > MY_SDLK_POWER, | |
| > MY_SDLK_KP_EQUALS, | |
| > MY_SDLK_F13, | |
| > MY_SDLK_F14, | |
| > MY_SDLK_F15, | |
| > MY_SDLK_F16, | |
| > MY_SDLK_F17, | |
| > MY_SDLK_F18, | |
| > MY_SDLK_F19, | |
| > MY_SDLK_F20, | |
| > MY_SDLK_F21, | |
| > MY_SDLK_F22, | |
| > MY_SDLK_F23, | |
| > MY_SDLK_F24, | |
| > MY_SDLK_EXECUTE, | |
| > MY_SDLK_HELP, | |
| > MY_SDLK_MENU, | |
| > MY_SDLK_SELECT, | |
| > MY_SDLK_STOP, | |
| > MY_SDLK_AGAIN, | |
| > MY_SDLK_UNDO, | |
| > MY_SDLK_CUT, | |
| > MY_SDLK_COPY, | |
| > MY_SDLK_PASTE, | |
| > MY_SDLK_FIND, | |
| > MY_SDLK_MUTE, | |
| > MY_SDLK_VOLUMEUP, | |
| > MY_SDLK_VOLUMEDOWN, | |
| > MY_SDLK_KP_COMMA, | |
| > MY_SDLK_KP_EQUALSAS400, | |
| > | |
| > MY_SDLK_ALTERASE, | |
| > MY_SDLK_SYSREQ, | |
| > MY_SDLK_CANCEL, | |
| > MY_SDLK_CLEAR, | |
| > MY_SDLK_PRIOR, | |
| > MY_SDLK_RETURN2, | |
| > MY_SDLK_SEPARATOR, | |
| > MY_SDLK_OUT, | |
| > MY_SDLK_OPER, | |
| > MY_SDLK_CLEARAGAIN, | |
| > MY_SDLK_CRSEL, | |
| > MY_SDLK_EXSEL, | |
| > | |
| > MY_SDLK_KP_00, | |
| > MY_SDLK_KP_000, | |
| > MY_SDLK_THOUSANDSSEPARATOR, | |
| > MY_SDLK_DECIMALSEPARATOR, | |
| > MY_SDLK_CURRENCYUNIT, | |
| > MY_SDLK_CURRENCYSUBUNIT, | |
| > MY_SDLK_KP_LEFTPAREN, | |
| > MY_SDLK_KP_RIGHTPAREN, | |
| > MY_SDLK_KP_LEFTBRACE, | |
| > MY_SDLK_KP_RIGHTBRACE, | |
| > MY_SDLK_KP_TAB, | |
| > MY_SDLK_KP_BACKSPACE, | |
| > MY_SDLK_KP_A, | |
| > MY_SDLK_KP_B, | |
| > MY_SDLK_KP_C, | |
| > MY_SDLK_KP_D, | |
| > MY_SDLK_KP_E, | |
| > MY_SDLK_KP_F, | |
| > MY_SDLK_KP_XOR, | |
| > MY_SDLK_KP_POWER, | |
| > MY_SDLK_KP_PERCENT, | |
| > MY_SDLK_KP_LESS, | |
| > MY_SDLK_KP_GREATER, | |
| > MY_SDLK_KP_AMPERSAND, | |
| > MY_SDLK_KP_DBLAMPERSAND, | |
| > MY_SDLK_KP_VERTICALBAR, | |
| > MY_SDLK_KP_DBLVERTICALBAR, | |
| > MY_SDLK_KP_COLON, | |
| > MY_SDLK_KP_HASH, | |
| > MY_SDLK_KP_SPACE, | |
| > MY_SDLK_KP_AT, | |
| > MY_SDLK_KP_EXCLAM, | |
| > MY_SDLK_KP_MEMSTORE, | |
| > MY_SDLK_KP_MEMRECALL, | |
| > MY_SDLK_KP_MEMCLEAR, | |
| > MY_SDLK_KP_MEMADD, | |
| > MY_SDLK_KP_MEMSUBTRACT, | |
| > MY_SDLK_KP_MEMMULTIPLY, | |
| > MY_SDLK_KP_MEMDIVIDE, | |
| > MY_SDLK_KP_PLUSMINUS, | |
| > MY_SDLK_KP_CLEAR, | |
| > MY_SDLK_KP_CLEARENTRY, | |
| > MY_SDLK_KP_BINARY, | |
| > MY_SDLK_KP_OCTAL, | |
| > MY_SDLK_KP_DECIMAL, | |
| > MY_SDLK_KP_HEXADECIMAL, | |
| > | |
| > MY_SDLK_LCTRL, | |
| > MY_SDLK_LSHIFT, | |
| > MY_SDLK_LALT, | |
| > MY_SDLK_LGUI, | |
| > MY_SDLK_RCTRL, | |
| > MY_SDLK_RSHIFT, | |
| > MY_SDLK_RALT, | |
| > MY_SDLK_RGUI, | |
| > | |
| > MY_SDLK_MODE, | |
| > | |
| > MY_SDLK_AUDIONEXT, | |
| > MY_SDLK_AUDIOPREV, | |
| > MY_SDLK_AUDIOSTOP, | |
| > MY_SDLK_AUDIOPLAY, | |
| > MY_SDLK_AUDIOMUTE, | |
| > MY_SDLK_MEDIASELECT, | |
| > MY_SDLK_WWW, | |
| > MY_SDLK_MAIL, | |
| > MY_SDLK_CALCULATOR, | |
| > MY_SDLK_COMPUTER, | |
| > MY_SDLK_AC_SEARCH, | |
| > MY_SDLK_AC_HOME, | |
| > MY_SDLK_AC_BACK, | |
| > MY_SDLK_AC_FORWARD, | |
| > MY_SDLK_AC_STOP, | |
| > MY_SDLK_AC_REFRESH, | |
| > MY_SDLK_AC_BOOKMARKS, | |
| > | |
| > MY_SDLK_BRIGHTNESSDOWN, | |
| > MY_SDLK_BRIGHTNESSUP, | |
| > MY_SDLK_DISPLAYSWITCH, | |
| > MY_SDLK_KBDILLUMTOGGLE, | |
| > MY_SDLK_KBDILLUMDOWN, | |
| > MY_SDLK_KBDILLUMUP, | |
| > MY_SDLK_EJECT, | |
| > MY_SDLK_SLEEP, | |
| > MY_SDLK_APP1, | |
| > MY_SDLK_APP2, | |
| > | |
| > MY_SDLK_AUDIOREWIND, | |
| > MY_SDLK_AUDIOFASTFORWARD, | |
| > | |
| > MY_SDLK_WORLD_0, | |
| > MY_SDLK_WORLD_1, | |
| > MY_SDLK_WORLD_2, | |
| > MY_SDLK_WORLD_3, | |
| > MY_SDLK_WORLD_4, | |
| > MY_SDLK_WORLD_5, | |
| > MY_SDLK_WORLD_6, | |
| > MY_SDLK_WORLD_7, | |
| > MY_SDLK_WORLD_8, | |
| > MY_SDLK_WORLD_9, | |
| > | |
| > MY_SDLK_LAST, | |
| > SDLK_LAST = MY_SDLK_LAST | |
| > } MySDLKey; | |
| > | |
| > typedef struct { | |
| > int m_SDLK; | |
| > int m_MySDLK; | |
| > } SDLK_to_MY_SDLK; | |
| > | |
| > #endif // #if SDL_MAJOR_VERSION == 2 | |
| > | |
| > #endif // #ifndef _keysym_h | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/menu.c pcsx_rearmed_custom/frontend/libpicofe/menu.c | |
| 26a27,28 | |
| > #define DISK_IMG_DIR "/usr/sony/share/data/images/Disk/" | |
| > | |
| 358,359c360 | |
| < unsigned int p = *sorc++; | |
| < *dest++ = (p&0xf79ef79e)>>1; | |
| --- | |
| > *dest++ = *sorc++; | |
| 437a439,457 | |
| > void show_text_image(const char *lang_image_path, const char *ok_image_path) | |
| > { | |
| > char buff[128]; | |
| > int msg_x = 115, msg_y = 110; | |
| > int btn_x = 280, btn_y = 353; | |
| > int ok_x = 258, ok_y = 380; | |
| > | |
| > menu_draw_begin(1, 1); | |
| > | |
| > readpng(g_menuscreen_ptr + (msg_x + msg_y * g_menuscreen_w) * 2, lang_image_path, READPNG_BG, g_menuscreen_w, g_menuscreen_h); | |
| > | |
| > sprintf(buff, "%s%s", DISK_IMG_DIR, "Ball_Btn_SD.png"); | |
| > readpng(g_menuscreen_ptr + (btn_x + btn_y * g_menuscreen_w) * 2, buff, READPNG_BG, g_menuscreen_w, g_menuscreen_h); | |
| > | |
| > readpng(g_menuscreen_ptr + (ok_x + ok_y * g_menuscreen_w) * 2, ok_image_path, READPNG_BG, g_menuscreen_w, g_menuscreen_h); | |
| > | |
| > menu_draw_end(); | |
| > } | |
| > | |
| 859c879 | |
| < int n, int sel, int show_help) | |
| --- | |
| > int n, int sel, int show_help, int curr_sel, int sel_min) | |
| 874,875c894,895 | |
| < darken_ptr = (short *)g_menuscreen_ptr + g_menuscreen_w * max_cnt/2 * me_sfont_h; | |
| < menu_darken_bg(darken_ptr, darken_ptr, g_menuscreen_w * me_sfont_h * 8 / 10, 0); | |
| --- | |
| > // darken_ptr = (short *)g_menuscreen_ptr + g_menuscreen_w * max_cnt/2 * me_sfont_h; | |
| > // menu_darken_bg(darken_ptr, darken_ptr, g_menuscreen_w * me_sfont_h * 8 / 10, 0); | |
| 879c899 | |
| < smalltext_out16(14, (start - 2) * me_sfont_h, curdir, 0xffff); | |
| --- | |
| > // smalltext_out16(14, (start - 2) * me_sfont_h, curdir, 0xffff); | |
| 885,886c905,906 | |
| < smalltext_out16(x, pos * me_sfont_h, "/", 0xfff6); | |
| < smalltext_out16(x + me_sfont_w, pos * me_sfont_h, namelist[i+1]->d_name, 0xfff6); | |
| --- | |
| > // smalltext_out16(x, pos * me_sfont_h, "/", 0xfff6); | |
| > // smalltext_out16(x + me_sfont_w, pos * me_sfont_h, namelist[i+1]->d_name, 0xfff6); | |
| 889c909 | |
| < smalltext_out16(x, pos * me_sfont_h, namelist[i+1]->d_name, color); | |
| --- | |
| > // smalltext_out16(x, pos * me_sfont_h, namelist[i+1]->d_name, color); | |
| 892c912 | |
| < smalltext_out16(5, max_cnt/2 * me_sfont_h, ">", 0xffff); | |
| --- | |
| > // smalltext_out16(5, max_cnt/2 * me_sfont_h, ">", 0xffff); | |
| 895,898c915,918 | |
| < darken_ptr = (short *)g_menuscreen_ptr | |
| < + g_menuscreen_w * (g_menuscreen_h - me_sfont_h * 5 / 2); | |
| < menu_darken_bg(darken_ptr, darken_ptr, | |
| < g_menuscreen_w * (me_sfont_h * 5 / 2), 1); | |
| --- | |
| > // darken_ptr = (short *)g_menuscreen_ptr | |
| > // + g_menuscreen_w * (g_menuscreen_h - me_sfont_h * 5 / 2); | |
| > // menu_darken_bg(darken_ptr, darken_ptr, | |
| > // g_menuscreen_w * (me_sfont_h * 5 / 2), 1); | |
| 902c922 | |
| < smalltext_out16(x, g_menuscreen_h - me_sfont_h * 3 - 2, buff, 0xe78c); | |
| --- | |
| > // smalltext_out16(x, g_menuscreen_h - me_sfont_h * 3 - 2, buff, 0xe78c); | |
| 907c927 | |
| < smalltext_out16(x, g_menuscreen_h - me_sfont_h * 2 - 2, buff, 0xe78c); | |
| --- | |
| > // smalltext_out16(x, g_menuscreen_h - me_sfont_h * 2 - 2, buff, 0xe78c); | |
| 912c932,991 | |
| < smalltext_out16(x, g_menuscreen_h - me_sfont_h * 1 - 2, buff, 0xe78c); | |
| --- | |
| > // smalltext_out16(x, g_menuscreen_h - me_sfont_h * 1 - 2, buff, 0xe78c); | |
| > } | |
| > int disc_num = n - 1; | |
| > int skin_dir; | |
| > | |
| > // show paths of current directory and focused file | |
| > if (sel_min == 0 || disc_num > 4) { | |
| > smalltext_out16(x, me_sfont_h, curdir, 0xffff); | |
| > if (disc_num > 0) { | |
| > smalltext_out16(x, me_sfont_h * 3, namelist[sel+1]->d_name, 0xffff); | |
| > } | |
| > } | |
| > else if (disc_num > 0) { | |
| > int disc_img_w = 98; | |
| > int disc_img_interval = 12; | |
| > int num_img_offset = 39; | |
| > int disc_img_y = 213; | |
| > int num_img_y = 301; | |
| > int msg_img_x = 106; | |
| > int msg_img_y = 152; | |
| > int disc_img_start = g_menuscreen_w - disc_img_w - (disc_img_w+disc_img_interval) * (disc_num-1) + disc_img_y * g_menuscreen_w * 2; | |
| > int num_img_start = disc_img_start + num_img_offset * 2 + (num_img_y-disc_img_y) * g_menuscreen_w * 2; | |
| > char num_one[] = "Text_one.png"; | |
| > char num_two[] = "Text_two.png"; | |
| > char num_three[] = "Text_three.png"; | |
| > char num_four[] = "Text_four.png"; | |
| > char *num_image[4] = {num_one, num_two, num_three, num_four}; | |
| > | |
| > // disc_img_start must be even | |
| > if (disc_img_start % 2) { | |
| > disc_img_start--; | |
| > } | |
| > | |
| > // show message of disc change | |
| > readpng(g_menuscreen_ptr + (msg_img_x + msg_img_y * g_menuscreen_w) * 2, changedisc_message, READPNG_BG, g_menuscreen_w , g_menuscreen_h); | |
| > | |
| > // show normal disc images | |
| > snprintf(buff, sizeof(buff), "%s%s", DISK_IMG_DIR, "Nomal_Disk.png"); | |
| > for (i = 0; i < disc_num; i++) { | |
| > readpng(g_menuscreen_ptr + disc_img_start + (disc_img_w+disc_img_interval) * 2 * i, buff, READPNG_BG, g_menuscreen_w , g_menuscreen_h); | |
| > } | |
| > | |
| > // show current disc image | |
| > snprintf(buff, sizeof(buff), "%s%s", DISK_IMG_DIR, "Corrent_Disk.png"); | |
| > readpng(g_menuscreen_ptr + disc_img_start + (disc_img_w+disc_img_interval) * 2 * (curr_sel-1), buff, READPNG_BG, g_menuscreen_w , g_menuscreen_h); | |
| > | |
| > // show numbers | |
| > for (i = 0; i < disc_num; i++) { | |
| > snprintf(buff, sizeof(buff), "%s%s", DISK_IMG_DIR, num_image[i]); | |
| > readpng(g_menuscreen_ptr + num_img_start + (disc_img_w+disc_img_interval) * 2 * i, buff, READPNG_BG, g_menuscreen_w , g_menuscreen_h); | |
| > } | |
| > | |
| > // show forcus | |
| > if (sel > 0) { | |
| > snprintf(buff, sizeof(buff), "%s%s", DISK_IMG_DIR, "Select_Disk.png"); | |
| > readpng(g_menuscreen_ptr + disc_img_start + (disc_img_w+disc_img_interval) * 2 * (sel-1), buff, READPNG_BG, g_menuscreen_w , g_menuscreen_h); | |
| > } | |
| > } | |
| > else { | |
| > smalltext_out16(x, me_sfont_h * 3, "..", 0xffff); | |
| 985c1064 | |
| < const char *basedir)) | |
| --- | |
| > const char *basedir), int sel_min) | |
| 1075c1154,1155 | |
| < sel = 0; | |
| --- | |
| > // sel = 0; | |
| > sel = sel_min; | |
| 1087,1089c1167 | |
| < draw_dirlist(curr_path, namelist, n, sel, show_help); | |
| < while (in_menu_wait_any(NULL, 50) & (PBTN_MOK|PBTN_MBACK|PBTN_MENU)) | |
| < ; | |
| --- | |
| > int curr_sel = sel; | |
| 1091c1169,1183 | |
| < for (;;) | |
| --- | |
| > // focus next disc image | |
| > if (sel_min) { | |
| > if (++sel > n-2) { | |
| > sel = sel_min; | |
| > } | |
| > } | |
| > | |
| > draw_dirlist(curr_path, namelist, n, sel, show_help, curr_sel, sel_min); | |
| > while (in_menu_wait_any(NULL, 50) & (PBTN_MOK|PBTN_MBACK|PBTN_MENU)) { | |
| > if (power_off_flg) { | |
| > break; | |
| > } | |
| > } | |
| > | |
| > while (!power_off_flg) | |
| 1093,1101c1185,1190 | |
| < draw_dirlist(curr_path, namelist, n, sel, show_help); | |
| < inp = in_menu_wait(PBTN_UP|PBTN_DOWN|PBTN_LEFT|PBTN_RIGHT | |
| < | PBTN_L|PBTN_R|PBTN_MA2|PBTN_MA3|PBTN_MOK|PBTN_MBACK | |
| < | PBTN_MENU|PBTN_CHAR, &cinp, 33); | |
| < if (inp & PBTN_MA3) { | |
| < g_menu_filter_off = !g_menu_filter_off; | |
| < snprintf(sel_fname, sizeof(sel_fname), "%s", | |
| < namelist[sel+1]->d_name); | |
| < goto rescan; | |
| --- | |
| > draw_dirlist(curr_path, namelist, n, sel, show_help, curr_sel, sel_min); | |
| > inp = in_menu_wait(PBTN_LEFT|PBTN_RIGHT|PBTN_MOK|PBTN_MBACK, &cinp, 33); | |
| > /* wait until ok, back is released */ | |
| > while (in_menu_wait_any(NULL, 50) & (PBTN_MOK|PBTN_MBACK)) { | |
| > if (power_off_flg) { | |
| > break; | |
| 1103,1108c1192,1194 | |
| < if (inp & PBTN_UP ) { sel--; if (sel < 0) sel = n-2; } | |
| < if (inp & PBTN_DOWN) { sel++; if (sel > n-2) sel = 0; } | |
| < if (inp & PBTN_LEFT) { sel-=10; if (sel < 0) sel = 0; } | |
| < if (inp & PBTN_L) { sel-=24; if (sel < 0) sel = 0; } | |
| < if (inp & PBTN_RIGHT) { sel+=10; if (sel > n-2) sel = n-2; } | |
| < if (inp & PBTN_R) { sel+=24; if (sel > n-2) sel = n-2; } | |
| --- | |
| > } | |
| > if (inp == PBTN_LEFT) { sel--; if (sel < sel_min) sel = sel_min; } | |
| > if (inp == PBTN_RIGHT) { sel++; if (sel > n-2) sel = n-2; } | |
| 1110c1196 | |
| < if ((inp & PBTN_MOK) || (inp & (PBTN_MENU|PBTN_MA2)) == (PBTN_MENU|PBTN_MA2)) | |
| --- | |
| > if (inp == PBTN_MOK) | |
| 1111a1198,1201 | |
| > if (sel == curr_sel && (isTitleName(PARASITE_EVE_DISC_1_JP) || isTitleName(PARASITE_EVE_DISC_2_JP) | |
| > || isTitleName(PARASITE_EVE_DISC_1_US) || isTitleName(PARASITE_EVE_DISC_2_US))) { | |
| > continue; | |
| > } | |
| 1147c1237 | |
| < ret = menu_loop_romsel(newdir, newlen, filter_exts, extra_filter); | |
| --- | |
| > ret = menu_loop_romsel(newdir, newlen, filter_exts, extra_filter, sel_min); | |
| 1152,1161c1242 | |
| < else if (inp & PBTN_MA2) { | |
| < g_autostateld_opt = !g_autostateld_opt; | |
| < show_help = 3; | |
| < } | |
| < else if (inp & PBTN_CHAR) { | |
| < // must be last | |
| < sel = dirent_seek_char(namelist, n, sel, cinp); | |
| < } | |
| < | |
| < if (inp & PBTN_MBACK) | |
| --- | |
| > if (inp == PBTN_MBACK) | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/menu.h pcsx_rearmed_custom/frontend/libpicofe/menu.h | |
| 125a126 | |
| > void show_text_image(const char *lang_image_path, const char *ok_image_path); | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/plat.h pcsx_rearmed_custom/frontend/libpicofe/plat.h | |
| 96c96 | |
| < void plat_video_menu_enter(int is_rom_loaded); | |
| --- | |
| > void plat_video_menu_enter(int is_rom_loaded, int bpp); | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/plat_sdl.c pcsx_rearmed_custom/frontend/libpicofe/plat_sdl.c | |
| 23a24,25 | |
| > | |
| > | |
| 24a27 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 25a29 | |
| > #endif | |
| 29a34,39 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > static const char *vid_drv_name; | |
| > SDL_Window *sdl2_window; | |
| > SDL_Renderer *sdl2_renderer; | |
| > SDL_Texture *sdl2_texture; | |
| > #else | |
| 30a41 | |
| > #endif | |
| 36a48 | |
| > int gl_works = 0; | |
| 42a55,59 | |
| > if (w != prev_w || h != prev_h) { | |
| > force = 1; | |
| > } | |
| > | |
| > printf("plat_sdl_change_video_mode() start w=%d,h=%d,force=%d \n",w,h,force); | |
| 67c84 | |
| < | |
| --- | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 71a89 | |
| > #endif | |
| 77a96 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 78a98,101 | |
| > #else | |
| > Uint32 flags = SDL_WINDOW_OPENGL; | |
| > //Uint32 flags = SDL_RESIZABLE | SDL_SWSURFACE; | |
| > #endif | |
| 81c104,105 | |
| < | |
| --- | |
| > printf("plat_sdl_change_video_mode() plat_target.vout_fullscreen=%d fs_w=%d,fs_h=%d\n",plat_target.vout_fullscreen,fs_w,fs_h); | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 87c111 | |
| < | |
| --- | |
| > #endif | |
| 91a116,124 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > plat_sdl_screen = SDL_GetWindowSurface(sdl2_window); | |
| > printf("002 plat_sdl_change_video_mode : SDL_GetWindowSurface() \n"); | |
| > printf(" win_w=%d, win_h=%d flags=%d \n",win_w,win_h,flags); | |
| > if (plat_sdl_screen == NULL) { | |
| > fprintf(stderr, "002 plat_sdl_change_video_mode : SDL_GetWindowSurface failed: %s\n", SDL_GetError()); | |
| > plat_target.vout_method = 0; | |
| > } | |
| > #else | |
| 92a126 | |
| > | |
| 94c128 | |
| < fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| --- | |
| > fprintf(stderr, "002 plat_sdl_change_video_mode : SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| 96a131 | |
| > #endif | |
| 99a135 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 110a147,149 | |
| > #else | |
| > plat_target.vout_method = 0; | |
| > #endif | |
| 112a152 | |
| > printf("plat_sdl_change_video_mode : gl_init()\n"); | |
| 115c155,156 | |
| < fprintf(stderr, "warning: could not init GL.\n"); | |
| --- | |
| > printf(" \n"); | |
| > fprintf(stderr, "warning: could not plat_sdl_change_video_mode : gl_init.\n"); | |
| 117a159,161 | |
| > else { | |
| > printf(" gl_init() success!\n"); | |
| > } | |
| 121a166 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| 122a168,174 | |
| > plat_sdl_screen = SDL_GetWindowSurface(sdl2_window); | |
| > printf("001 plat_sdl_change_video_mode : SDL_GetWindowSurface() \n"); | |
| > if (plat_sdl_screen == NULL) { | |
| > fprintf(stderr, "001 SDL_GetWindowSurface failed: %s\n", SDL_GetError()); | |
| > return -1; | |
| > } | |
| > #else | |
| 125c177 | |
| < fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| --- | |
| > fprintf(stderr, "001 plat_sdl_change_video_mode : SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| 127a180,182 | |
| > #endif | |
| > | |
| > | |
| 131c186 | |
| < if (plat_sdl_resize_cb != NULL) | |
| --- | |
| > if (plat_sdl_resize_cb != NULL) { | |
| 132a188 | |
| > } | |
| 133a190 | |
| > printf("plat_sdl_change_video_mode() end\n"); | |
| 136a194,198 | |
| > | |
| > | |
| > | |
| > | |
| > | |
| 141a204,205 | |
| > printf("frontend/libpicofe/plat.sdl.c : plat_sdl_event_handler() %d\n",event->type); | |
| > | |
| 142a207 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 156a222 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 157a224 | |
| > #endif | |
| 169a237 | |
| > #endif | |
| 176a245,260 | |
| > | |
| > | |
| > | |
| > | |
| > | |
| > | |
| > | |
| > | |
| > | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > void gl_setup_wl_information(struct wl_display * idisplay, | |
| > struct wl_surface *isurface, | |
| > struct wl_shell_surface *ishell_surface); | |
| > | |
| > int plat_sdl_init(int isGame) | |
| > #else | |
| 177a262 | |
| > #endif | |
| 178a264 | |
| > printf("+ /frontend/libpicofe/plat_sdl_init()\n"); | |
| 179a266 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 180a268 | |
| > #endif | |
| 183c271 | |
| < int gl_works = 0; | |
| --- | |
| > | |
| 185a274,281 | |
| > #ifdef UI_INTEGRATION | |
| > printf("SDL_Init() not used. for UI_INTEGRATION\n"); | |
| > #else | |
| > | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > printf("plat_sdl_init() : SDL_Init(SDL_INIT_VIDEO), %d\n", SDL_INIT_VIDEO); | |
| > ret = SDL_Init(SDL_INIT_VIDEO); | |
| > #else | |
| 186a283 | |
| > #endif | |
| 188c285 | |
| < fprintf(stderr, "SDL_Init failed: %s\n", SDL_GetError()); | |
| --- | |
| > fprintf(stderr, "plat_sdl_init() : SDL_Init() failed: %s\n", SDL_GetError()); | |
| 191a289,331 | |
| > #endif | |
| > | |
| > | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > /* */ | |
| > | |
| > sdl2_window = SDL_CreateWindow("Title", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_FULLSCREEN_DESKTOP); | |
| > | |
| > | |
| > | |
| > if (sdl2_window == NULL) { | |
| > printf("- /frontend/libpicofe/plat_sdl_init() : SDL_CreateWindow() Error %s\n",SDL_GetError()); | |
| > return -1; | |
| > } | |
| > else { | |
| > /* */ | |
| > // SDL_SetWindowSize(sdl2_window,640,480); | |
| > // printf("SDL_SetWindowSize()\n"); | |
| > | |
| > SDL_GetWindowSize(sdl2_window, &fs_w, &fs_h); | |
| > printf("SDL_GetWindowSize w=%d,h=%d\n", fs_w, fs_h); | |
| > } | |
| > //sdl2_renderer = SDL_CreateRenderer(sdl2_window, -1, SDL_RENDERER_ACCELERATED); | |
| > sdl2_renderer = SDL_CreateRenderer(sdl2_window, -1, SDL_RENDERER_SOFTWARE); | |
| > if (sdl2_renderer == NULL) { | |
| > printf("- /frontend/libpicofe/plat_sdl_init() SDL_CreateRenderer Error %s\n",SDL_GetError()); | |
| > return -1; | |
| > } | |
| > else { | |
| > printf("plat_sdl_init() : SDL_CreateRenderer() Success.\n"); | |
| > } | |
| > SDL_RenderSetLogicalSize(sdl2_renderer, 640, 480); | |
| > | |
| > /* */ | |
| > sdl2_texture = SDL_CreateTexture(sdl2_renderer,SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,fs_w, fs_h); | |
| > if (sdl2_texture == NULL) { | |
| > printf("SDL_CreateTexture() Error %s\n",SDL_GetError()); | |
| > return -1; | |
| > } | |
| > else { | |
| > printf("plat_sdl_init() : SDL_CreateTexture Success.\n"); | |
| > } | |
| > #else | |
| 198c338 | |
| < | |
| --- | |
| > #endif | |
| 204a345,348 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > if (sdl2_window && h > WM_DECORATION_H) | |
| > h -= WM_DECORATION_H; | |
| > #else | |
| 206a351 | |
| > #endif | |
| 210a356 | |
| > /***************************************************/ | |
| 212a359,372 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > plat_sdl_screen = SDL_GetWindowSurface(sdl2_window); | |
| > printf("002 plat_sdl_init : SDL_GetWindowSurface() \n"); | |
| > printf(" plat_sdl_screen->w=%d,plat_sdl_screen->h=%d\n",plat_sdl_screen->w,plat_sdl_screen->h); | |
| > if (plat_sdl_screen == NULL) { | |
| > fprintf(stderr, "002 plat_sdl_init : SDL_GetWindowSurface() failed: %s\n", SDL_GetError()); | |
| > goto fail; | |
| > } | |
| > if (plat_sdl_screen->w < 320 || plat_sdl_screen->h < 240) { | |
| > fprintf(stderr, "resolution %dx%d is too small, sorry.\n", | |
| > plat_sdl_screen->w, plat_sdl_screen->h); | |
| > goto fail; | |
| > } | |
| > #else | |
| 213a374 | |
| > | |
| 215c376 | |
| < fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| --- | |
| > fprintf(stderr, "002 plat_sdl_init : SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| 223a385 | |
| > #endif | |
| 225,226c387,423 | |
| < g_menuscreen_w = window_w = plat_sdl_screen->w; | |
| < g_menuscreen_h = window_h = plat_sdl_screen->h; | |
| --- | |
| > | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > | |
| > #if 1 | |
| > // SDL_SetWindowSize(sdl2_window,640,480); | |
| > // printf("SDL_SetWindowSize()\n"); | |
| > SDL_GetWindowSize(sdl2_window,&plat_sdl_screen->w,&plat_sdl_screen->h); | |
| > #endif | |
| > | |
| > printf(" plat_sdl_screen->w=%d,plat_sdl_screen->h=%d\n",plat_sdl_screen->w,plat_sdl_screen->h); | |
| > | |
| > | |
| > SDL_GetWindowSize(sdl2_window,&window_w,&window_h); | |
| > printf("SDL_GetWindowSize() window_w=%d,window_h=%d\n",window_w,window_h); | |
| > | |
| > //#ifdef SDL2_0_DEBUG | |
| > // g_menuscreen_w = window_w = plat_sdl_screen->w * 2; | |
| > // g_menuscreen_h = window_h = plat_sdl_screen->h; | |
| > //#else | |
| > // | |
| > //#if 0 | |
| > // g_menuscreen_w = window_w = 640; | |
| > // g_menuscreen_h = window_h = 480; | |
| > //#else | |
| > // g_menuscreen_w = window_w = plat_sdl_screen->w; | |
| > // g_menuscreen_h = window_h = plat_sdl_screen->h; | |
| > //#endif | |
| > // | |
| > //#endif | |
| > | |
| > #else | |
| > // g_menuscreen_w = window_w = plat_sdl_screen->w; | |
| > // g_menuscreen_h = window_h = plat_sdl_screen->h; | |
| > g_menuscreen_w = 640; | |
| > g_menuscreen_h = 480; | |
| > #endif | |
| > | |
| 228a426,433 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > plat_sdl_screen = SDL_GetWindowSurface(sdl2_window); | |
| > printf("003 plat_sdl_init : SDL_GetWindowSurface() \n"); | |
| > if (plat_sdl_screen == NULL) { | |
| > fprintf(stderr, "003 plat_sdl_init : SDL_GetWindowSurface() failed: %s\n", SDL_GetError()); | |
| > goto fail; | |
| > } | |
| > #else | |
| 230a436 | |
| > | |
| 232c438 | |
| < fprintf(stderr, "SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| --- | |
| > fprintf(stderr, "003 SDL_SetVideoMode failed: %s\n", SDL_GetError()); | |
| 234a441 | |
| > #endif | |
| 235a443,444 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| > /****************************************************************************/ | |
| 252a462 | |
| > #endif | |
| 254a465,468 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > vid_drv_name = SDL_GetCurrentVideoDriver(); | |
| > printf("plat_sdl_init : SDL_GetCurrentVideoDriver() vid_drv_name=%s\n",vid_drv_name); | |
| > #else | |
| 255a470,471 | |
| > #endif | |
| > | |
| 258a475,477 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > ret = SDL_GetWindowWMInfo(sdl2_window,&wminfo); | |
| > #else | |
| 259a479 | |
| > #endif | |
| 265a486,487 | |
| > | |
| > #if 1 | |
| 266a489,495 | |
| > ret = SDL_GetWindowWMInfo(sdl2_window, &wminfo); | |
| > if (ret > 0) { | |
| > gl_setup_wl_information(wminfo.info.wl.display, wminfo.info.wl.surface, wminfo.info.wl.shell_surface); | |
| > | |
| > printf("wminfo: 0x%x, 0x%x, 0x%x\n", | |
| > wminfo.info.wl.display, wminfo.info.wl.surface, wminfo.info.wl.shell_surface); | |
| > } | |
| 268a498,505 | |
| > #endif | |
| > | |
| > | |
| > | |
| > #ifdef SDL2_0_DEBUG | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > if (isGame) { | |
| > #endif | |
| 269a507 | |
| > printf("plat_sdl_init : gl_init() ret=%d\n",ret); | |
| 271a510 | |
| > printf("plat_sdl_init : gl_finish()\n"); | |
| 273a513,526 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > } | |
| > #endif | |
| > | |
| > #else | |
| > ret = gl_init(display, window, &gl_quirks); | |
| > printf("plat_sdl_init : gl_init() ret=%d\n",ret); | |
| > if (ret == 0) { | |
| > gl_works = 1; | |
| > printf("plat_sdl_init : gl_finish()\n"); | |
| > gl_finish(); | |
| > } | |
| > #endif | |
| > | |
| 276a530,531 | |
| > | |
| > printf("plat_sdl_init : overlay_works=%d\n",overlay_works); | |
| 280a536 | |
| > printf("plat_sdl_init : gl_works=%d\n",gl_works); | |
| 284a541,545 | |
| > int j; | |
| > for(j=0;j<i;j++) { | |
| > printf("plat_sdl_init : vout_list[%d]=%s\n",j,vout_list[j]); | |
| > } | |
| > | |
| 286a548,549 | |
| > | |
| > printf("- /frontend/libpicofe/plat_sdl_init() end\n"); | |
| 289a553,556 | |
| > #ifdef UI_INTEGRATION | |
| > printf("SDL_Quit() not used. for UI_INTEGRATION\n"); | |
| > #else | |
| > printf("SDL_Quit()\n"); | |
| 290a558,559 | |
| > #endif | |
| > printf("- /frontend/libpicofe/plat_sdl_init() fail\n"); | |
| 293a563 | |
| > | |
| 295a566,567 | |
| > printf("+ /frontend/libpicofe/plat_sdl_finish()\n"); | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 299a572 | |
| > #endif | |
| 306c579,583 | |
| < if (strcmp(vid_drv_name, "x11") != 0) | |
| --- | |
| > if (strcmp(vid_drv_name, "x11") != 0) { | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > SDL_GetWindowSurface(sdl2_window); | |
| > printf("005 /frontend/libpicofe/SDL_GetWindowSurface() \n"); | |
| > #else | |
| 307a585,592 | |
| > printf("SDL_SetVideoMode\n"); | |
| > #endif | |
| > } | |
| > | |
| > #ifdef UI_INTEGRATION | |
| > printf("SDL_Quit() not used. for UI_INTEGRATION\n"); | |
| > #else | |
| > printf("SDL_Quit()\n"); | |
| 308a594,596 | |
| > #endif | |
| > | |
| > printf("- /frontend/libpicofe/plat_sdl_finish()\n"); | |
| 312a601,602 | |
| > printf("plat_sdl_overlay_clear()\n"); | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 321a612 | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/plat_sdl.h pcsx_rearmed_custom/frontend/libpicofe/plat_sdl.h | |
| 2a3 | |
| > | |
| 3a5 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 4a7,14 | |
| > #endif | |
| > | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > extern SDL_Window *sdl2_window; | |
| > extern SDL_Renderer *sdl2_renderer; | |
| > extern SDL_Texture *sdl2_texture; | |
| > #endif | |
| > | |
| 8a19,21 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > int plat_sdl_init(int isGame); | |
| > #else | |
| 9a23 | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/frontend/libpicofe/readpng.c pcsx_rearmed_custom/frontend/libpicofe/readpng.c | |
| 15a16 | |
| > #include <unistd.h> | |
| 56c57,58 | |
| < png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA | PNG_TRANSFORM_PACKING, NULL); | |
| --- | |
| > // png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_STRIP_ALPHA | PNG_TRANSFORM_PACKING, NULL); | |
| > png_read_png(png_ptr, info_ptr, PNG_TRANSFORM_STRIP_16 | PNG_TRANSFORM_PACKING, NULL); | |
| 89,90c91,93 | |
| < | |
| < for (h = 0; h < height; h++) | |
| --- | |
| > int w_rate = 1; // reduction rate of width | |
| > int h_rate = 1; // reduction rate of height | |
| > for (h = 0; h < height / h_rate; h++) | |
| 92,93c95,96 | |
| < unsigned char *src = row_ptr[h + y_ofs] + x_ofs * 3; | |
| < int len = width; | |
| --- | |
| > unsigned char *src = row_ptr[h * h_rate + y_ofs] + x_ofs * 4; | |
| > int len = width / w_rate; | |
| 95a99 | |
| > if (src[3] & 0xff) { | |
| 101d104 | |
| < src += 3; | |
| 103c106,111 | |
| < dst += req_w - width; | |
| --- | |
| > else { | |
| > *dst++; | |
| > } | |
| > src += 4 * w_rate; | |
| > } | |
| > dst += req_w - width / w_rate; | |
| 269a278 | |
| > fsync(fileno(f)); | |
| diff --new-file -w -r pcsx_rearmed/frontend/main.c pcsx_rearmed_custom/frontend/main.c | |
| 13a14,16 | |
| > #include <pthread.h> | |
| > #include <sys/inotify.h> | |
| > #include <sys/stat.h> | |
| 39a43 | |
| > static int isOpenEnabled = 0; | |
| 44a49,53 | |
| > #define EVENT_SIZE (sizeof (struct inotify_event)) | |
| > #define BUF_LEN 4096 | |
| > | |
| > | |
| > | |
| 52a62,64 | |
| > int from_escape = 0; | |
| > int power_off_flg = 0; | |
| > int is_high_temperature = 0; | |
| 55a68,100 | |
| > int isUnknowCdrom; | |
| > int holdResetEvent; | |
| > | |
| > int display_mode = DISPLAY_MODE_DEFAULT; | |
| > int language = LANGUAGE_DEFAULT; | |
| > int region = REGION_DEFAULT; | |
| > int enter_mode = ENTER_DEFAULT; | |
| > | |
| > static int cpu_temp_limit = DEFAULT_TEMP_LIMIT; | |
| > | |
| > const char *lang_list[13] = { | |
| > "German", // de_de | |
| > "E_UK", // en_gb | |
| > "E", // en_us | |
| > "Spanish_LA", // es_419 | |
| > "Spanish", // es_es | |
| > "French_CA", // fr_ca | |
| > "French", // fr_fr | |
| > "Italian", // it_it | |
| > "Dutch", // nl_nl | |
| > "Portuguese_BR", // pt_br | |
| > "Portuguese", // pt_pt | |
| > "Russian", // ru_ru | |
| > "J" // ja_jp | |
| > }; | |
| > | |
| > char changedisc_message[128]; | |
| > char solodisc_message[128]; | |
| > char nottime_message[128]; | |
| > char ok_image[128]; | |
| > | |
| > static pthread_t th_power_off_state = (pthread_t)0; | |
| > static pthread_t cpu_temp_thread = (pthread_t)0; | |
| 70a116 | |
| > if (CdromLabel[0] != '\0' && !(g_opts & OPT_AUTOSAVE)) { | |
| 71a118,121 | |
| > } | |
| > else { | |
| > strncpy(trimlabel, CdromLabel_old, 32); | |
| > } | |
| 78a129 | |
| > if (CdromId[0] != '\0' && !(g_opts & OPT_AUTOSAVE)) { | |
| 79a131,134 | |
| > } | |
| > else { | |
| > snprintf(buf, size, fmt, trimlabel, CdromId_old, i); | |
| > } | |
| 108c163 | |
| < MAKE_PATH(Config.Mcd2, MEMCARD_DIR, "card2.mcd"); | |
| --- | |
| > MAKE_PATH(Config.Mcd2, MEMCARD_DIR, "none"); | |
| 132a188,191 | |
| > pl_rearmed_cbs.gpu_peops.isToShinDen = 0; | |
| > pl_rearmed_cbs.gpu_peops.isBiosLogoEnd = 0; | |
| > pl_rearmed_cbs.gpu_peops.scenes = 0; | |
| > pl_rearmed_cbs.gpu_peops.regions = 0; | |
| 174a234 | |
| > from_escape = 1; | |
| 258a319,322 | |
| > case SACTION_SYNC_STATE: | |
| > emu_sync_state2(); | |
| > time_to_sync_state = 0; | |
| > return; | |
| 271a336,397 | |
| > // add for open button | |
| > case SACTION_CD_CHANGE: | |
| > if (!isOpenEnabled) { | |
| > isOpenEnabled = CheckOpenEnabled(); | |
| > if (!isOpenEnabled) { | |
| > return; | |
| > } | |
| > } | |
| > toggle_fast_forward(1); | |
| > swap_cd(); | |
| > return; | |
| > // add for power button | |
| > case SACTION_POWER_OFF: | |
| > power_off(); | |
| > return; | |
| > // add for reset button | |
| > case SACTION_RESET_EVENT: | |
| > // save state of restart point | |
| > // save state of restart point | |
| > if (!(g_opts & OPT_AUTOSAVE) && isUnknownCdrom) { | |
| > holdResetEvent = 1; | |
| > } | |
| > if ((memcardFlag==0)&&(memcardFlagOld==0)) { | |
| > } | |
| > else { | |
| > memcardResetFlag = 1; | |
| > return; | |
| > } | |
| > if (holdResetEvent) return; | |
| > ret = emu_auto_save_state(0); | |
| > snprintf(hud_msg, sizeof(hud_msg), ret == 0 ? "LOADED" : "FAIL!"); | |
| > if (ret) { | |
| > char path[MAXPATHLEN]; | |
| > struct stat st; | |
| > | |
| > snprintf(path, sizeof(path), "." PCSX_DOT_DIR "filename.txt"); | |
| > ret = stat(path, &st); | |
| > if (!ret) { | |
| > remove(path); | |
| > } | |
| > } | |
| > else { | |
| > // screen picture | |
| > char buf[MAXPATHLEN]; | |
| > void *scrbuf; | |
| > int w, h, bpp; | |
| > | |
| > scrbuf = pl_prepare_screenshot(&w, &h, &bpp); | |
| > get_gameid_filename(buf, sizeof(buf), | |
| > "." SCSHOT_DIR "%.32s-%.9s.png", 0); | |
| > ret = -1; | |
| > if (scrbuf != 0 && bpp == 16) | |
| > ret = writepng(buf, scrbuf, w, h); | |
| > if (ret == 0) | |
| > snprintf(hud_msg, sizeof(hud_msg), "SCREENSHOT TAKEN"); | |
| > | |
| > // save file | |
| > make_file_name(); | |
| > } | |
| > // emulator exit | |
| > stop = 1; | |
| > g_emu_want_quit = 1; | |
| 397c523 | |
| < snprintf(hud_msg, sizeof(hud_msg), BOOT_MSG); | |
| --- | |
| > //snprintf(hud_msg, sizeof(hud_msg), BOOT_MSG); | |
| 480c606,607 | |
| < create_profile_dir("/screenshots/"); | |
| --- | |
| > // create_profile_dir("/screenshots/"); | |
| > create_profile_dir(SCSHOT_DIR); | |
| 489c616 | |
| < for (i = 1; i <= 9; i++) { | |
| --- | |
| > for (i = 1; i <= 2; i++) { | |
| 501a629,648 | |
| > static int check_prepare_suspend(void) | |
| > { | |
| > char path[256]; | |
| > int ret = -1; | |
| > FILE *f; | |
| > snprintf(path, sizeof(path), POWER_DIR POWER_OFF_FILE); | |
| > f = fopen(path, "rb"); | |
| > if (f == NULL) { | |
| > ret = 0; | |
| > } | |
| > else { | |
| > ret = -1; | |
| > fclose(f); | |
| > } | |
| > return ret; | |
| > } | |
| > | |
| > #ifdef UI_INTEGRATION | |
| > int main_ui(int argc, char *argv[]); | |
| > | |
| 503a651,663 | |
| > printf("+ frontend/main()\n"); | |
| > main_ui(argc,argv); | |
| > printf("- frontend/main()\n"); | |
| > } | |
| > int main_ui(int argc, char *argv[]) | |
| > { | |
| > printf("+ frontend/main_ui()\n"); | |
| > #else | |
| > int main(int argc, char *argv[]) | |
| > { | |
| > //printf("+ frontend/main()\n"); | |
| > #endif | |
| > | |
| 510a671 | |
| > int isGame = 0; | |
| 523a685,686 | |
| > printf("argv[i]=%s\n",argv[i]); | |
| > printf("argv[i+1]=%s\n",argv[i+1]); | |
| 543a707,739 | |
| > else if (!strcmp(argv[i], "-display")) { | |
| > if (i+1 >= argc) { | |
| > break; | |
| > } | |
| > display_mode = atoi(argv[++i]); | |
| > if (DISPLAY_MODE_MIN > display_mode || DISPLAY_MODE_MAX < display_mode) { | |
| > display_mode = DISPLAY_MODE_DEFAULT; | |
| > } | |
| > } | |
| > else if (!strcmp(argv[i], "-lang")) { | |
| > if (i+1 >= argc) { | |
| > break; | |
| > } | |
| > language = atoi(argv[++i]); | |
| > if (LANGUAGE_MIN > language || LANGUAGE_MAX < language) { | |
| > language = LANGUAGE_DEFAULT; | |
| > } | |
| > } | |
| > else if (!strcmp(argv[i], "-region")) { | |
| > if (i+1 >= argc) { | |
| > break; | |
| > } | |
| > region = atoi(argv[++i]); | |
| > if (REGION_MIN > region || REGION_MAX < region) { | |
| > region = REGION_DEFAULT; | |
| > } | |
| > } | |
| > else if (!strcmp(argv[i], "-enter")) { | |
| > if (i+1 >= argc) { | |
| > break; | |
| > } | |
| > enter_mode = atoi(argv[++i]); | |
| > } | |
| 557a754,758 | |
| > } | |
| > else if (!strcmp(argv[i], "-v") || | |
| > !strcmp(argv[i], "--version")) { | |
| > printf(REV "\n"); | |
| > return 0; | |
| 570a772,775 | |
| > sprintf(changedisc_message, "%s%s%s%s", LANG_IMG_DIR, "msg_current_inserted_disc_info_", lang_list[language-1], ".png"); | |
| > sprintf(solodisc_message, "%s%s%s%s", LANG_IMG_DIR, "msg_cant_change_discs_this_game_", lang_list[language-1], ".png"); | |
| > sprintf(nottime_message, "%s%s%s%s", LANG_IMG_DIR, "msg_cant_change_discs_now_", lang_list[language-1], ".png"); | |
| > sprintf(ok_image, "%s%s%s%s", DISK_IMG_DIR, "OK_SD_Btn_", lang_list[language-1], ".png"); | |
| 572c777,778 | |
| < if (cdfile) | |
| --- | |
| > if (cdfile) { | |
| > printf("set_cd_image(cdfile)\n"); | |
| 573a780 | |
| > } | |
| 580c787,791 | |
| < plat_init(); | |
| --- | |
| > if (cdfile != NULL) { | |
| > isGame = 1; | |
| > } | |
| > plat_init(isGame, enter_mode); | |
| > setTitleName(); | |
| 605a817,819 | |
| > // save file | |
| > make_file_name(); | |
| > save_error(ERROR_PCSXCRITICALERROR, "Sorry, error occurred during running system..."); | |
| 643a858,870 | |
| > // create thread for watching communication file | |
| > if (create_power_off_thread() != 0) { | |
| > printf("failed to create power off thread\n"); | |
| > return -1; | |
| > } | |
| > if (check_prepare_suspend() != 0) { | |
| > power_off(); | |
| > } | |
| > // create thread for watching cpu temperature | |
| > if (begin_watch_cpu_temperature() != 0) { | |
| > printf("failed to create thread for watching cpu temperature\n"); | |
| > return -1; | |
| > } | |
| 644a872,874 | |
| > StartCheckOpen(); | |
| > | |
| > printf("while (g_emu_want_quit=%d) start \n",g_emu_want_quit); | |
| 651c881,884 | |
| < if (emu_action != SACTION_NONE) | |
| --- | |
| > #ifdef UI_INTEGRATION | |
| > g_emu_want_quit = -1; | |
| > #else | |
| > if (emu_action != SACTION_NONE) { | |
| 653a887,889 | |
| > #endif | |
| > } | |
| > printf("while (g_emu_want_quit=%d) end \n",g_emu_want_quit); | |
| 660a897,899 | |
| > unlink(STATUS_DIR"001.sts"); | |
| > | |
| > printf("- plat_sdl/main.c:main()\n"); | |
| 764a1004,1021 | |
| > int emu_auto_save_state(int slot) | |
| > { | |
| > char fname[MAXPATHLEN]; | |
| > int ret; | |
| > | |
| > ret = get_state_filename(fname, sizeof(fname), slot); | |
| > if (ret != 0) | |
| > return ret; | |
| > | |
| > ret = SaveStateWork(fname); | |
| > #ifdef HAVE_PRE_ARMV7 /* XXX GPH hack */ | |
| > sync(); | |
| > #endif | |
| > SysPrintf("* %s \"%s\" [%d]\n", | |
| > ret == 0 ? "saved" : "failed to save", fname, slot); | |
| > return ret; | |
| > } | |
| > | |
| 1031a1289,1450 | |
| > static int check_poweroff_event(int power_fd) { | |
| > int i = 0; | |
| > char buffer[BUF_LEN]; | |
| > int event_length = 0; | |
| > char file_name[sizeof(POWER_OFF_FILE)] = POWER_OFF_FILE; | |
| > | |
| > event_length = read(power_fd, buffer, BUF_LEN); | |
| > if(event_length <= 0) { | |
| > return 1; | |
| > } | |
| > while (i < event_length) { | |
| > struct inotify_event* event = (struct inotify_event *) &buffer[i]; | |
| > if (strcmp(file_name, event->name) == 0) { | |
| > return 0; | |
| > } | |
| > i += EVENT_SIZE + event->len; | |
| > } | |
| > return 1; | |
| > } | |
| > | |
| > static void power_manage(void) { | |
| > int power_fd = -1; | |
| > int power_wd = -1; | |
| > int is_power_on = 1; | |
| > | |
| > power_fd = inotify_init(); | |
| > if(power_fd == -1) { | |
| > printf("ERROR:failed to init inotify for power manage\n"); | |
| > return; | |
| > } | |
| > | |
| > power_wd = inotify_add_watch(power_fd, POWER_DIR, IN_CREATE); | |
| > if(power_wd == -1) { | |
| > printf("ERROR:failed to add watch descriptor for power manage\n"); | |
| > return; | |
| > } | |
| > | |
| > while (is_power_on) { | |
| > is_power_on = check_poweroff_event(power_fd); | |
| > } | |
| > | |
| > inotify_rm_watch(power_fd, power_wd); | |
| > close(power_fd); | |
| > | |
| > power_off_flg = 1; | |
| > | |
| > return; | |
| > } | |
| > | |
| > int create_power_off_thread(void) { | |
| > int ret; | |
| > pthread_attr_t power_manage_attr; | |
| > | |
| > if (th_power_off_state > 0) { | |
| > printf("auto power off thread is already started, id [%d] \n", th_power_off_state); | |
| > return -1; | |
| > } | |
| > pthread_attr_init(&power_manage_attr); | |
| > pthread_attr_setdetachstate(&power_manage_attr , PTHREAD_CREATE_DETACHED); | |
| > | |
| > ret = pthread_create(&th_power_off_state, &power_manage_attr, (void*)power_manage, NULL); | |
| > pthread_attr_destroy(&power_manage_attr); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > void power_off(void) | |
| > { | |
| > char path[MAXPATHLEN]; | |
| > struct stat st; | |
| > | |
| > snprintf(path, sizeof(path), "." PCSX_DOT_DIR "filename.txt"); | |
| > if(stat(path, &st) == 0) { | |
| > remove(path); | |
| > } | |
| > | |
| > // terminate pcsx | |
| > stop = 1; | |
| > g_emu_want_quit = 1; | |
| > } | |
| > | |
| > // sub-thread for watching cpu temperature | |
| > static int check_cpu_temperature(int cpu_temp_fd) | |
| > { | |
| > int cpu_temperature, cpu_mode; | |
| > FILE *fp; | |
| > char buffer[BUF_LEN]; | |
| > int ret; | |
| > | |
| > int is_normal_temp = 1; | |
| > int event_length = 0; | |
| > | |
| > event_length = read(cpu_temp_fd, buffer, BUF_LEN); | |
| > if(event_length <= 0) { | |
| > return 0; | |
| > } | |
| > fp = fopen(CPU_TEMP_FILE, "r"); | |
| > ret = fscanf(fp, "%d%d", &cpu_temperature, &cpu_mode); | |
| > if (ret != EOF) { | |
| > is_normal_temp = (cpu_temperature < cpu_temp_limit) ? 1 : 0; | |
| > } | |
| > fclose(fp); | |
| > return is_normal_temp; | |
| > } | |
| > | |
| > static void watch_cpu_temperature(void) | |
| > { | |
| > int cpu_temp_fd; | |
| > int cpu_temp_wd; | |
| > char temp_limit_str[strlen(CPU_TEMP_LIMIT_STRING)+1]; | |
| > int temp_limit_val; | |
| > int ret; | |
| > FILE *fp; | |
| > | |
| > cpu_temp_fd = inotify_init(); | |
| > if (cpu_temp_fd == -1) { | |
| > printf("ERROR:failed to init inotify for cpu temperature\n"); | |
| > } | |
| > | |
| > cpu_temp_wd = inotify_add_watch(cpu_temp_fd, CPU_TEMP_FILE, IN_MODIFY); | |
| > if (cpu_temp_wd == -1) { | |
| > printf("ERROR:failed to add watch descriptor for cpu temperature\n"); | |
| > } | |
| > | |
| > fp = fopen(CPU_TEMP_LIMIT_FILE, "r"); | |
| > if (fp != NULL) { | |
| > do { | |
| > ret = fscanf(fp, "%s%d", &temp_limit_str, &temp_limit_val); | |
| > if (strcmp(temp_limit_str, CPU_TEMP_LIMIT_STRING) == 0) { | |
| > cpu_temp_limit = temp_limit_val; | |
| > break; | |
| > } | |
| > } while (ret != EOF); | |
| > } | |
| > fclose(fp); | |
| > | |
| > while (1) { | |
| > ret = check_cpu_temperature(cpu_temp_fd); | |
| > if (ret == 0) { | |
| > break; | |
| > } | |
| > } | |
| > | |
| > inotify_rm_watch(cpu_temp_fd, cpu_temp_wd); | |
| > close(cpu_temp_fd); | |
| > | |
| > is_high_temperature = 1; | |
| > } | |
| > | |
| > int begin_watch_cpu_temperature(void) | |
| > { | |
| > int ret; | |
| > pthread_attr_t cpu_temp_attr; | |
| > | |
| > pthread_attr_init(&cpu_temp_attr); | |
| > pthread_attr_setdetachstate(&cpu_temp_attr , PTHREAD_CREATE_DETACHED); | |
| > | |
| > ret = pthread_create(&cpu_temp_thread, &cpu_temp_attr, watch_cpu_temperature, NULL); | |
| > pthread_attr_destroy(&cpu_temp_attr); | |
| > | |
| > return ret; | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/frontend/main.h pcsx_rearmed_custom/frontend/main.h | |
| 33a34,36 | |
| > #define SCSHOT_DIR "/.pcsx/screenshots/" | |
| > #define LANG_IMG_DIR "/usr/sony/share/data/images/BMP_TXT_SST/" | |
| > #define DISK_IMG_DIR "/usr/sony/share/data/images/Disk/" | |
| 36a40,66 | |
| > #define POWER_DIR "/data/power/" | |
| > #define POWER_OFF_FILE "prepare_suspend" | |
| > | |
| > #define CPU_TEMP_FILE "/dev/shm/power/cpu_temp" | |
| > #define CPU_TEMP_LIMIT_FILE "/dev/shm/power/temp_limit" | |
| > #define CPU_TEMP_LIMIT_STRING "CPU_AUTO_START_TEMP" | |
| > #define DEFAULT_TEMP_LIMIT 80000 | |
| > | |
| > #define DISPLAY_MODE_MIN 0 | |
| > #define DISPLAY_MODE_MAX 1 | |
| > #define DISPLAY_MODE_DEFAULT 1 | |
| > #define LANGUAGE_MIN 1 | |
| > #define LANGUAGE_MAX 13 | |
| > #define LANGUAGE_DEFAULT 13 | |
| > #define REGION_MIN 1 | |
| > #define REGION_MAX 4 | |
| > #define REGION_DEFAULT 3 | |
| > #define ENTER_DEFAULT 0 | |
| > extern int display_mode; | |
| > extern int language; | |
| > extern int region; | |
| > | |
| > extern char changedisc_message[128]; | |
| > extern char solodisc_message[128]; | |
| > extern char nottime_message[128]; | |
| > extern char ok_image[128]; | |
| > | |
| 38a69,75 | |
| > extern int from_escape; | |
| > extern int power_off_flg; | |
| > extern int is_high_temperature; | |
| > extern unsigned int memcardFlag; | |
| > extern unsigned int memcardFlagOld; | |
| > extern int memcardResetFlag; | |
| > | |
| 55a93,95 | |
| > int create_power_off_thread(void); | |
| > void power_off(void); | |
| > | |
| 81a122,125 | |
| > SACTION_RESET_EVENT, // action when reset button pushed | |
| > SACTION_POWER_OFF, // action when power button pushed | |
| > SACTION_CD_CHANGE, | |
| > SACTION_SYNC_STATE, | |
| diff --new-file -w -r pcsx_rearmed/frontend/menu.c pcsx_rearmed_custom/frontend/menu.c | |
| 1c1 | |
| < /* | |
| --- | |
| > /* | |
| 38a39 | |
| > #include "../libpcsxcore/title.h" | |
| 44a46,48 | |
| > #define CONFIG_JP_BIOS_NAME "romJP.bin" | |
| > #define CONFIG_WORLD_BIOS_NAME "romw.bin" | |
| > | |
| 48a53,54 | |
| > #define DEFAULT_OPEN_INVALID_TIME 22 | |
| > | |
| 95c101 | |
| < static int config_save_counter, region, in_type_sel1, in_type_sel2; | |
| --- | |
| > static int config_save_counter, in_type_sel1, in_type_sel2; | |
| 102a109,110 | |
| > int region; | |
| > int open_invalid_time; | |
| 133a142,144 | |
| > static void menu_leave_emu(void); | |
| > void menu_prepare_emu(void); | |
| > | |
| 324c335 | |
| < | |
| --- | |
| > config_change(); | |
| 329a341,517 | |
| > void config_change() { | |
| > // SPU | |
| > if (isTitleName(FINAL_FANTANSY_VII_DICS_1_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_4_JP) || | |
| > isTitleName(G_DARIUS_JP) || | |
| > isTitleName(HARRY_POTTER_AND_THE_PHILOSOPHERS_STONE_EU) || | |
| > // isTitleName(IQ_INTELLIGENT_QUBE_JP) || // no need because the issue does not occur | |
| > isTitleName(IQ_INTELLIGENT_QUBE_US) || | |
| > isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(JUMPING_FLASH_JP) || | |
| > isTitleName(JUMPING_FLASH_US) || | |
| > isTitleName(KAGERO_JP) || | |
| > isTitleName(LEGACY_OF_KAIN_SOUL_REAVER_EU) || | |
| > isTitleName(LEGACY_OF_KAIN_SOUL_REAVER_US) || | |
| > isTitleName(MEDAL_OF_HONOR_EU) || | |
| > isTitleName(MEDAL_OF_HONOR_US) || | |
| > isTitleName(MEDIEVIL_EU) || | |
| > isTitleName(MEDIEVIL_US) || | |
| > isTitleName(MEGA_MAM_LEGENDS_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US) || | |
| > isTitleName(ODDWORLD_ABES_ODDYSEE_EU) || | |
| > isTitleName(ODDWORLD_ABES_ODDYSEE_US) || | |
| > isTitleName(PARASITE_EVE_DISC_1_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_1_US) || | |
| > isTitleName(PARASITE_EVE_DISC_2_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_2_US) || | |
| > isTitleName(SAGAFRONTIER_JP) || | |
| > isTitleName(SPEC_OPS_STEALTH_PATROL_US) || | |
| > isTitleName(SUIKODEN_EU) || | |
| > isTitleName(SUIKODEN_JP) || | |
| > isTitleName(SUIKODEN_US) || | |
| > isTitleName(SYPHON_FILTER_US) || | |
| > isTitleName(TEKKEN3_EU) || | |
| > isTitleName(TEKKEN3_JP) || | |
| > isTitleName(TOMBA_JP) || | |
| > isTitleName(TOMBA_US) || | |
| > isTitleName(TONY_HAWK_SKATE_BOARDING_EU) || | |
| > isTitleName(TONY_HAWKS_PRO_SKATER_2_EU) || | |
| > isTitleName(TONY_HAWKS_PRO_SKATER_2_US) || | |
| > isTitleName(VAGRANT_STORY_EU) || | |
| > isTitleName(VAGRANT_STORY_US) || | |
| > isTitleName(WILD_ARMS_JP) || | |
| > isTitleName(WILD_ARMS_US)) { | |
| > spu_config.iUseInterpolation = 2; | |
| > } else if(isTitleName(FIGHTING_FORCE_US) || | |
| > isTitleName(RESIDENT_EVIL_EU) || | |
| > isTitleName(RESIDENT_EVIL_JP) || | |
| > isTitleName(RESIDENT_EVIL_US) || | |
| > isTitleName(TOM_CLANCYS_RAINBOW_SIX_EU)) { | |
| > spu_config.iUseInterpolation = 3; | |
| > } | |
| > | |
| > if (isTitleName(CHOCOBOS_JP) || | |
| > isTitleName(CRASH_BANDICOOT_EU) || | |
| > isTitleName(DESTRUCTION_DERBY_EU) || | |
| > isTitleName(DESTRUCTION_DERBY_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_4_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_1_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_1_US) || | |
| > isTitleName(PARASITE_EVE_DISC_2_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_2_US) || | |
| > isTitleName(SAGAFRONTIER_JP) || | |
| > isTitleName(SPEC_OPS_STEALTH_PATROL_US) || | |
| > isTitleName(SUIKODEN_EU) || | |
| > isTitleName(SUIKODEN_JP) || | |
| > isTitleName(SUIKODEN_US) || | |
| > isTitleName(TOMBA_JP) || | |
| > isTitleName(TOMBA_US) || | |
| > isTitleName(VAGRANT_STORY_EU) || | |
| > isTitleName(VAGRANT_STORY_US) || | |
| > isTitleName(MEDAL_OF_HONOR_EU) || | |
| > isTitleName(MEDAL_OF_HONOR_US)) { | |
| > spu_config.iUseThread = 0; | |
| > } | |
| > | |
| > if (isTitleName(FINAL_FANTANSY_VII_DICS_1_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_4_JP) || | |
| > isTitleName(G_DARIUS_JP) || | |
| > isTitleName(PERSONA_JP) || | |
| > isTitleName(PERSONA_US)) { | |
| > spu_config.iTempo = 1; | |
| > } | |
| > | |
| > // Interlace | |
| > if (isTitleName(EHRGEIZ_JP)) { | |
| > pl_rearmed_cbs.gpu_neon.allow_interlace = 0; | |
| > } | |
| > | |
| > // Region | |
| > if (isTitleName(WILD_ARMS_2_DISC_1_JP) || | |
| > isTitleName(WILD_ARMS_2_DISC_2_JP) || | |
| > isTitleName(WILD_ARMS_JP)) { | |
| > Config.PsxAuto = 0; | |
| > Config.PsxType = 0; | |
| > } | |
| > | |
| > // Gpu plugin exchange | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US) || | |
| > isTitleName(PERSONA_JP) || | |
| > isTitleName(PERSONA_US) || | |
| > isTitleName(SAGAFRONTIER_JP) || | |
| > isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > strcpy(Config.Gpu,"gpu_peops.so"); | |
| > | |
| > if (isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > pl_rearmed_cbs.gpu_peops.isToShinDen = 1; | |
| > } | |
| > } | |
| > | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US)) { | |
| > pl_rearmed_cbs.gpu_peops.regions = 1; | |
| > } else if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP)){ | |
| > pl_rearmed_cbs.gpu_peops.regions = 2; | |
| > } else { | |
| > pl_rearmed_cbs.gpu_peops.regions = 0; | |
| > } | |
| > | |
| > // Dithering | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US) || | |
| > isTitleName(SAGAFRONTIER_JP)) { | |
| > pl_rearmed_cbs.gpu_peops.iUseDither = 2; | |
| > }else if(isTitleName(PERSONA_JP) || | |
| > isTitleName(PERSONA_US)) { | |
| > pl_rearmed_cbs.gpu_peops.iUseDither = 3; | |
| > } | |
| > | |
| > if (isTitleName(SAGAFRONTIER_JP)) { | |
| > pl_rearmed_cbs.gpu_peops.iTrimJaggyFrame = 1; | |
| > } | |
| > } | |
| > | |
| 347a536 | |
| > g_opts |= OPT_AUTOSAVE; | |
| 350c539 | |
| < | |
| --- | |
| > open_invalid_time = DEFAULT_OPEN_INVALID_TIME; | |
| 422a612 | |
| > CE_INTVAL(open_invalid_time), | |
| 462a653 | |
| > if (CdromLabel[0] != '\0' && !(g_opts & OPT_AUTOSAVE)) { | |
| 463a655,658 | |
| > } | |
| > else { | |
| > strncpy(trimlabel, CdromLabel_old, 32); | |
| > } | |
| 520a716 | |
| > fsync(fileno(f)); | |
| 547a744 | |
| > fsync(fileno(f)); | |
| 624a822,837 | |
| > | |
| > if(strcmp(config_data[i].name,"Bios") == 0) { | |
| > // set BIOS name by me. | |
| > char iso_path[MAXPATHLEN]; | |
| > char *iso_char; | |
| > strcpy(iso_path, GetIsoFile()); | |
| > iso_char = strrchr(iso_path, '/'); | |
| > if (iso_char != NULL) { | |
| > iso_char += 3; | |
| > if(*iso_char == 'P' || *iso_char == 'p') { | |
| > strcpy(config_data[i].val, CONFIG_JP_BIOS_NAME); | |
| > } else { | |
| > strcpy(config_data[i].val, CONFIG_WORLD_BIOS_NAME); | |
| > } | |
| > } | |
| > } | |
| 694,695d906 | |
| < if ((unsigned int)memcard2_sel < ARRAY_SIZE(memcards)) { | |
| < if (memcard2_sel == 0) | |
| 697,700d907 | |
| < else if (memcards[memcard2_sel] != NULL) | |
| < snprintf(Config.Mcd2, sizeof(Config.Mcd2), ".%s%s", | |
| < MEMCARD_DIR, memcards[memcard2_sel]); | |
| < } | |
| 703d909 | |
| < | |
| 874a1081,1083 | |
| > { "RESET button ", 1 << SACTION_RESET_EVENT }, | |
| > // { "Power button ", 0 }, | |
| > { "CD Change button ", 1 << SACTION_CD_CHANGE }, | |
| 1608a1818 | |
| > mee_onoff ("Auto Save State", 0, g_opts, OPT_AUTOSAVE), | |
| 1760,1761d1969 | |
| < if (memcard2_sel != 0) | |
| < snprintf(Config.Mcd2, sizeof(Config.Mcd2), ".%s%s", MEMCARD_DIR, memcards[memcard2_sel]); | |
| 1947a2156 | |
| > LoadPlugins(); | |
| 1951a2161 | |
| > make_file_name(); | |
| 1999c2209 | |
| < sizeof(last_selected_fname), exts, NULL); | |
| --- | |
| > sizeof(last_selected_fname), exts, NULL, 0); | |
| 2034a2245 | |
| > make_file_name(); | |
| 2079c2290 | |
| < optional_cdimg_filter); | |
| --- | |
| > optional_cdimg_filter, 0); | |
| 2111c2322,2327 | |
| < | |
| --- | |
| > struct stat status; | |
| > int ret; | |
| > ret = stat(GetIsoFile(), &status); | |
| > if (ret == 0) { | |
| > strcpy(last_selected_fname, GetIsoFile()); | |
| > } | |
| 2114c2330 | |
| < optional_cdimg_filter); | |
| --- | |
| > optional_cdimg_filter, 1); | |
| 2117c2333,2340 | |
| < | |
| --- | |
| > isUnknownCdrom = 1; | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP) || isTitleName(PARASITE_EVE_DISC_2_JP) | |
| > || isTitleName(PARASITE_EVE_DISC_1_US) || isTitleName(PARASITE_EVE_DISC_2_US)) { | |
| > /* Prohibit re-selecting the disc */ | |
| > is_disc_change = 0; | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > } | |
| 2139a2363,2412 | |
| > void swap_cd(void) | |
| > { | |
| > int inp; | |
| > | |
| > menu_leave_emu(); | |
| > | |
| > if (disc_change_type == 0) { | |
| > show_text_image(solodisc_message, ok_image); | |
| > while (!power_off_flg) { | |
| > inp = in_menu_wait_any(NULL, 50); | |
| > if (inp & PBTN_MOK) { | |
| > break; | |
| > } | |
| > } | |
| > /* wait until ok is released */ | |
| > while (in_menu_wait_any(NULL, 50) & PBTN_MOK) { | |
| > if (power_off_flg) { | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (is_disc_change) { | |
| > swap_cd_image(); | |
| > /* wait until ok, back is released */ | |
| > while (in_menu_wait_any(NULL, 50) & (PBTN_MOK|PBTN_MBACK)) { | |
| > if (power_off_flg) { | |
| > break; | |
| > } | |
| > } | |
| > in_set_config_int(0, IN_CFG_BLOCKING, 0); | |
| > } | |
| > else { | |
| > show_text_image(nottime_message, ok_image); | |
| > while (!power_off_flg) { | |
| > inp = in_menu_wait_any(NULL, 50); | |
| > if (inp & PBTN_MOK) { | |
| > break; | |
| > } | |
| > } | |
| > /* wait until ok is released */ | |
| > while (in_menu_wait_any(NULL, 50) & PBTN_MOK) { | |
| > if (power_off_flg) { | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > menu_prepare_emu(); | |
| > } | |
| > | |
| 2165c2438 | |
| < sizeof(last_selected_fname), exts, NULL); | |
| --- | |
| > sizeof(last_selected_fname), exts, NULL, 0); | |
| 2232a2506 | |
| > from_escape = 0; | |
| 2252a2527,2547 | |
| > static int main_menu1_handler(int id, int keys) | |
| > { | |
| > static int sel = 0; | |
| > | |
| > me_enable(e_menu_main, MA_MAIN_RESUME_GAME, ready_to_go); | |
| > me_enable(e_menu_main, MA_MAIN_SAVE_STATE, ready_to_go); | |
| > me_enable(e_menu_main, MA_MAIN_LOAD_STATE, ready_to_go); | |
| > me_enable(e_menu_main, MA_MAIN_RESET_GAME, ready_to_go); | |
| > me_enable(e_menu_main, MA_MAIN_CHEATS, ready_to_go); | |
| > | |
| > return me_loop_d(e_menu_main, &sel, NULL, draw_frame_main); | |
| > } | |
| > | |
| > static menu_entry e_menu_main3[] = | |
| > { | |
| > mee_handler_id("Change CD image", MA_MAIN_SWAP_CD, main_menu_handler), | |
| > mee_handler ("PCSX Menu", main_menu1_handler), | |
| > mee_handler_id("Exit", MA_MAIN_EXIT, main_menu_handler), | |
| > mee_end, | |
| > }; | |
| > | |
| 2287,2288d2581 | |
| < static void menu_leave_emu(void); | |
| < | |
| 2293a2587 | |
| > printf("frontend/menu.c : menu_loop()\n"); | |
| 2302a2597 | |
| > | |
| 2304c2599,2600 | |
| < menu_bios_warn(); | |
| --- | |
| > //printf("menu.c : menu_bios_warn() warned_about_bios=%d\n",warned_about_bios); | |
| > //menu_bios_warn(); | |
| 2307d2602 | |
| < } | |
| 2308a2604,2606 | |
| > } | |
| > printf("menu.c : menu_loop() : me_enable(e_menu_main : MA_MAIN_RESUME_GAME)\n"); | |
| > printf(" g_menuscreen_w=%d g_menuscreen_h=%d\n",g_menuscreen_w,g_menuscreen_h); | |
| 2316a2615 | |
| > if (from_escape == 1) { | |
| 2317a2617,2624 | |
| > printf("menu.c : menu_loop() : me_loop_d()\n"); | |
| > sel = 0; | |
| > me_loop_d(e_menu_main3, &sel, NULL, draw_frame_main); | |
| > } while (!ready_to_go && !g_emu_want_quit); | |
| > } | |
| > else { | |
| > do { | |
| > printf("menu.c : menu_loop() : me_loop_d()\n"); | |
| 2320c2627,2628 | |
| < | |
| --- | |
| > } | |
| > printf("menu.c : while (in_menu_wait_any) start\n"); | |
| 2324c2632 | |
| < | |
| --- | |
| > printf("menu.c : while (in_menu_wait_any) end\n"); | |
| 2350a2659,2660 | |
| > printf("menu.c : scan_bios_plugins()\n"); | |
| > | |
| 2485a2796,2797 | |
| > printf("menu.c : menu_init()\n"); | |
| > | |
| 2552c2864 | |
| < plat_video_menu_enter(ready_to_go); | |
| --- | |
| > plat_video_menu_enter(ready_to_go, last_vout_bpp); | |
| 2554d2865 | |
| < memcpy(g_menubg_ptr, g_menubg_src_ptr, g_menuscreen_w * g_menuscreen_h * 2); | |
| 2556,2559c2867,2870 | |
| < int x = max(0, g_menuscreen_w - last_vout_w); | |
| < int y = max(0, g_menuscreen_h / 2 - last_vout_h / 2); | |
| < int w = min(g_menuscreen_w, last_vout_w); | |
| < int h = min(g_menuscreen_h, last_vout_h); | |
| --- | |
| > int x = 0; | |
| > int y = 0; | |
| > int w = g_menuscreen_w; | |
| > int h = g_menuscreen_h; | |
| 2564c2875 | |
| < for (; h > 0; h--, d += g_menuscreen_w, s += last_vout_w * 2) | |
| --- | |
| > for (; h > 0; h--, d += w, s += w * 2) | |
| 2568,2570c2879,2881 | |
| < for (; h > 0; h--, d += g_menuscreen_w, s += last_vout_w * 3) { | |
| < rgb888_to_rgb565(d, s, w * 3); | |
| < menu_darken_bg(d, d, w, 0); | |
| --- | |
| > for (; h > 0; h--, d += w, s += w * 3) { | |
| > bgr888_to_rgb565(s, s, w * 3); | |
| > menu_darken_bg(d, s, w, 0); | |
| 2627a2939,2987 | |
| > | |
| > int make_file_name(void) | |
| > { | |
| > char isofile[MAXPATHLEN]; | |
| > char isolabel[33]; | |
| > char isoid[10]; | |
| > | |
| > char path[256]; | |
| > FILE *f; | |
| > | |
| > if (CdromPath[0] != '\0' && CdromLabel[0] != '\0' && CdromId[0] != '\0' && !(g_opts & OPT_AUTOSAVE)) { | |
| > strncpy(isofile, CdromPath, sizeof(CdromPath)); | |
| > strncpy(isolabel, CdromLabel, sizeof(CdromLabel)); | |
| > strncpy(isoid, CdromId, sizeof(CdromId)); | |
| > } | |
| > else if (CdromPath_old[0] != '\0' && CdromLabel_old[0] != '\0' && CdromId_old[0] != '\0' && g_opts & OPT_AUTOSAVE) { | |
| > strncpy(isofile, CdromPath_old, sizeof(CdromPath_old)); | |
| > strncpy(isolabel, CdromLabel_old, sizeof(CdromLabel_old)); | |
| > strncpy(isoid, CdromId_old, sizeof(CdromId_old)); | |
| > } | |
| > else { | |
| > printf("- %s %d make_file_name() not make!!!\n",__FILE__,__LINE__); | |
| > return -1; | |
| > } | |
| > | |
| > snprintf(path, sizeof(path), "." PCSX_DOT_DIR "filename.txt"); | |
| > f = fopen(path, "w"); | |
| > if (f == NULL) { | |
| > return -1; | |
| > } | |
| > | |
| > char trimlabel[33]; | |
| > int j; | |
| > | |
| > strncpy(trimlabel, isolabel, 32); | |
| > trimlabel[32] = 0; | |
| > for (j = 31; j >= 0; j--) | |
| > if (trimlabel[j] == ' ') | |
| > trimlabel[j] = 0; | |
| > else | |
| > continue; | |
| > | |
| > fprintf(f, "%s\n", isofile); | |
| > fprintf(f, "%.32s-%.9s\n", trimlabel, isoid); | |
| > | |
| > fsync(fileno(f)); | |
| > fclose(f); | |
| > return 0; | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/frontend/menu.h pcsx_rearmed_custom/frontend/menu.h | |
| 7a8,9 | |
| > void swap_cd(void); | |
| > | |
| 13a16 | |
| > OPT_AUTOSAVE = 1 << 5, | |
| 37a41,42 | |
| > extern int region; | |
| > extern int open_invalid_time; | |
| Binary files pcsx_rearmed/frontend/pandora/skin/Disk_Focus.png and pcsx_rearmed_custom/frontend/pandora/skin/Disk_Focus.png differ | |
| Binary files pcsx_rearmed/frontend/pandora/skin/Disk_Nomal.png and pcsx_rearmed_custom/frontend/pandora/skin/Disk_Nomal.png differ | |
| diff --new-file -w -r pcsx_rearmed/frontend/plat.h pcsx_rearmed_custom/frontend/plat.h | |
| 1c1 | |
| < void plat_init(void); | |
| --- | |
| > void plat_init(int isGame, int region); | |
| 9c9 | |
| < void *plat_gvideo_flip(void); | |
| --- | |
| > void *plat_gvideo_flip(int rgb888); | |
| diff --new-file -w -r pcsx_rearmed/frontend/plat_sdl.c pcsx_rearmed_custom/frontend/plat_sdl.c | |
| 25a26,36 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > #include "libpicofe/keysym.h" | |
| > #endif | |
| > | |
| > #define RMASK_16 0x0000F800 | |
| > #define GMASK_16 0x000007E0 | |
| > #define BMASK_16 0x0000001F | |
| > #define RMASK_24 0x00FF0000 | |
| > #define GMASK_24 0x0000FF00 | |
| > #define BMASK_24 0x000000FF | |
| > | |
| 27a39,56 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > { MY_SDLK_UP, IN_BINDTYPE_PLAYER12, DKEY_UP }, | |
| > { MY_SDLK_DOWN, IN_BINDTYPE_PLAYER12, DKEY_DOWN }, | |
| > { MY_SDLK_LEFT, IN_BINDTYPE_PLAYER12, DKEY_LEFT }, | |
| > { MY_SDLK_RIGHT, IN_BINDTYPE_PLAYER12, DKEY_RIGHT }, | |
| > { MY_SDLK_d, IN_BINDTYPE_PLAYER12, DKEY_TRIANGLE }, | |
| > { MY_SDLK_z, IN_BINDTYPE_PLAYER12, DKEY_CROSS }, | |
| > { MY_SDLK_x, IN_BINDTYPE_PLAYER12, DKEY_CIRCLE }, | |
| > { MY_SDLK_s, IN_BINDTYPE_PLAYER12, DKEY_SQUARE }, | |
| > { MY_SDLK_v, IN_BINDTYPE_PLAYER12, DKEY_START }, | |
| > { MY_SDLK_c, IN_BINDTYPE_PLAYER12, DKEY_SELECT }, | |
| > { MY_SDLK_w, IN_BINDTYPE_PLAYER12, DKEY_L1 }, | |
| > { MY_SDLK_r, IN_BINDTYPE_PLAYER12, DKEY_R1 }, | |
| > { MY_SDLK_e, IN_BINDTYPE_PLAYER12, DKEY_L2 }, | |
| > { MY_SDLK_t, IN_BINDTYPE_PLAYER12, DKEY_R2 }, | |
| > { MY_SDLK_EJECT, IN_BINDTYPE_EMU, SACTION_CD_CHANGE }, | |
| > { MY_SDLK_AUDIOPLAY, IN_BINDTYPE_EMU, SACTION_RESET_EVENT }, | |
| > #else | |
| 50a80,81 | |
| > { SDLK_F9, IN_BINDTYPE_EMU, SACTION_CD_CHANGE }, | |
| > { SDLK_F10, IN_BINDTYPE_EMU, SACTION_RESET_EVENT }, | |
| 52a84,86 | |
| > { SDLK_EJECT, IN_BINDTYPE_EMU, SACTION_CD_CHANGE }, | |
| > { SDLK_AUDIOPLAY, IN_BINDTYPE_EMU, SACTION_RESET_EVENT }, | |
| > #endif | |
| 57a92,103 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > { MY_SDLK_UP, PBTN_UP }, | |
| > { MY_SDLK_DOWN, PBTN_DOWN }, | |
| > { MY_SDLK_LEFT, PBTN_LEFT }, | |
| > { MY_SDLK_RIGHT, PBTN_RIGHT }, | |
| > { MY_SDLK_RETURN, PBTN_MOK }, | |
| > { MY_SDLK_ESCAPE, PBTN_MBACK }, | |
| > { MY_SDLK_SEMICOLON, PBTN_MA2 }, | |
| > { MY_SDLK_QUOTE, PBTN_MA3 }, | |
| > { MY_SDLK_LEFTBRACKET, PBTN_L }, | |
| > { MY_SDLK_RIGHTBRACKET, PBTN_R }, | |
| > #else | |
| 67a114,139 | |
| > #endif | |
| > }; | |
| > | |
| > const struct menu_keymap in_sdl_joy_map_1[] = | |
| > { | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > { MY_SDLK_UP, PBTN_UP }, | |
| > { MY_SDLK_DOWN, PBTN_DOWN }, | |
| > { MY_SDLK_LEFT, PBTN_LEFT }, | |
| > { MY_SDLK_RIGHT, PBTN_RIGHT }, | |
| > /* joystick */ | |
| > { MY_SDLK_WORLD_0, PBTN_MA2 }, | |
| > { MY_SDLK_WORLD_1, PBTN_MBACK }, | |
| > { MY_SDLK_WORLD_2, PBTN_MOK }, | |
| > { MY_SDLK_WORLD_3, PBTN_MA3 }, | |
| > #else | |
| > { SDLK_UP, PBTN_UP }, | |
| > { SDLK_DOWN, PBTN_DOWN }, | |
| > { SDLK_LEFT, PBTN_LEFT }, | |
| > { SDLK_RIGHT, PBTN_RIGHT }, | |
| > /* joystick */ | |
| > { SDLK_WORLD_0, PBTN_MOK }, | |
| > { SDLK_WORLD_1, PBTN_MBACK }, | |
| > { SDLK_WORLD_2, PBTN_MA2 }, | |
| > { SDLK_WORLD_3, PBTN_MA3 }, | |
| > #endif | |
| 70c142 | |
| < const struct menu_keymap in_sdl_joy_map[] = | |
| --- | |
| > const struct menu_keymap in_sdl_joy_map_2[] = | |
| 71a144,154 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > { MY_SDLK_UP, PBTN_UP }, | |
| > { MY_SDLK_DOWN, PBTN_DOWN }, | |
| > { MY_SDLK_LEFT, PBTN_LEFT }, | |
| > { MY_SDLK_RIGHT, PBTN_RIGHT }, | |
| > /* joystick */ | |
| > { MY_SDLK_WORLD_0, PBTN_MA2 }, | |
| > { MY_SDLK_WORLD_1, PBTN_MOK }, | |
| > { MY_SDLK_WORLD_2, PBTN_MBACK }, | |
| > { MY_SDLK_WORLD_3, PBTN_MA3 }, | |
| > #else | |
| 80a164,172 | |
| > #endif | |
| > }; | |
| > | |
| > static const struct in_pdata in_sdl_platform_data_1 = { | |
| > .defbinds = in_sdl_defbinds, | |
| > .key_map = in_sdl_key_map, | |
| > .kmap_size = sizeof(in_sdl_key_map) / sizeof(in_sdl_key_map[0]), | |
| > .joy_map = in_sdl_joy_map_1, | |
| > .jmap_size = sizeof(in_sdl_joy_map_1) / sizeof(in_sdl_joy_map_1[0]), | |
| 83c175 | |
| < static const struct in_pdata in_sdl_platform_data = { | |
| --- | |
| > static const struct in_pdata in_sdl_platform_data_2 = { | |
| 87,88c179,180 | |
| < .joy_map = in_sdl_joy_map, | |
| < .jmap_size = sizeof(in_sdl_joy_map) / sizeof(in_sdl_joy_map[0]), | |
| --- | |
| > .joy_map = in_sdl_joy_map_2, | |
| > .jmap_size = sizeof(in_sdl_joy_map_2) / sizeof(in_sdl_joy_map_2[0]), | |
| 92c184 | |
| < static void *shadow_fb, *menubg_img; | |
| --- | |
| > static void *shadow_fb, *last_shadow_fb, *menubg_img; | |
| 93a186 | |
| > static int menu_leave; | |
| 133a227,229 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > void plat_init(int isGame, int enter_mode) | |
| > #else | |
| 134a231 | |
| > #endif | |
| 141a239,241 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > ret = plat_sdl_init(isGame); | |
| > #else | |
| 142a243 | |
| > #endif | |
| 146a248,251 | |
| > menu_leave = 0; | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > SDL_SetWindowTitle(sdl2_window, "PCSX-ReARMed " REV); | |
| > #else | |
| 148,151c253,256 | |
| < | |
| < shadow_size = g_menuscreen_w * g_menuscreen_h * 2; | |
| < if (shadow_size < 640 * 512 * 2) | |
| < shadow_size = 640 * 512 * 2; | |
| --- | |
| > #endif | |
| > shadow_size = g_menuscreen_w * g_menuscreen_h * 3; | |
| > if (shadow_size < 640 * (576 + 2) * 3) | |
| > shadow_size = 640 * (576 + 2) * 3; | |
| 153a259 | |
| > last_shadow_fb = malloc(shadow_size); | |
| 155c261 | |
| < if (shadow_fb == NULL || menubg_img == NULL) { | |
| --- | |
| > if (shadow_fb == NULL || last_shadow_fb == NULL || menubg_img == NULL) { | |
| 159,160c265,270 | |
| < | |
| < in_sdl_init(&in_sdl_platform_data, plat_sdl_event_handler); | |
| --- | |
| > if (enter_mode == 1) { | |
| > in_sdl_init(&in_sdl_platform_data_1, plat_sdl_event_handler); | |
| > } | |
| > else { | |
| > in_sdl_init(&in_sdl_platform_data_2, plat_sdl_event_handler); | |
| > } | |
| 162c272 | |
| < pl_rearmed_cbs.only_16bpp = 1; | |
| --- | |
| > pl_rearmed_cbs.only_16bpp = 0; | |
| 171a282,283 | |
| > free(last_shadow_fb); | |
| > last_shadow_fb = NULL; | |
| 201a314 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 219a333 | |
| > #endif | |
| 223a338 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 226a342 | |
| > #endif | |
| 232a349,352 | |
| > | |
| > /* workaround for ps logo issue */ | |
| > if (psx_w == 640 && psx_h == 472) psx_h = 480; | |
| > | |
| 233a354 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 248a370,383 | |
| > #else | |
| > printf("plat_gvideo_set_mode() : plat_sdl_gl_active=%d psx_w=%d,psx_h=%d\n",plat_sdl_gl_active,psx_w,psx_h); | |
| > pl_plat_clear = NULL; | |
| > pl_plat_blit = NULL; | |
| > pl_plat_hud_print = NULL; | |
| > if (plat_sdl_gl_active) { | |
| > printf(" shadow_fb=%0x\n",shadow_fb); | |
| > return shadow_fb; | |
| > } | |
| > else { | |
| > printf(" plat_sdl_screen->pixels=%0x\n",plat_sdl_screen->pixels); | |
| > return plat_sdl_screen->pixels; | |
| > } | |
| > #endif | |
| 251c386 | |
| < void *plat_gvideo_flip(void) | |
| --- | |
| > void *plat_gvideo_flip(int rgb888) | |
| 252a388,389 | |
| > | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 259c396,404 | |
| < gl_flip(shadow_fb, psx_w, psx_h); | |
| --- | |
| > #else | |
| > if (plat_sdl_gl_active) { | |
| > #endif | |
| > if (menu_leave) { | |
| > // restore last shadow_fb | |
| > memcpy(shadow_fb, last_shadow_fb, psx_w * psx_h * (rgb888 ? 3 : 2)); | |
| > menu_leave = 0; | |
| > } | |
| > gl_flip(shadow_fb, psx_w, psx_h, rgb888); | |
| 263a409,415 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > SDL_Window* window; | |
| > SDL_Renderer* renderer; | |
| > | |
| > renderer = SDL_CreateRenderer(window, -1, 0); | |
| > SDL_RenderPresent(renderer); | |
| > #else | |
| 264a417 | |
| > #endif | |
| 273c426 | |
| < void plat_video_menu_enter(int is_rom_loaded) | |
| --- | |
| > void plat_video_menu_enter(int is_rom_loaded, int bpp) | |
| 276a430,431 | |
| > printf("frontend/plat_sdl.c : plat_video_menu_enter() : plat_sdl_gl_active=%d is_rom_loaded=%d\n",plat_sdl_gl_active,is_rom_loaded); | |
| > | |
| 278a434 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 286a443,523 | |
| > } | |
| > #else | |
| > int depth = bpp; | |
| > if (plat_sdl_gl_active) { | |
| > | |
| > SDL_Surface *source_surface, *target_surface, *darken_surface; | |
| > int ret; | |
| > int pitch = psx_w * depth / 8; | |
| > Uint32 rmask, gmask, bmask; | |
| > | |
| > if (depth == 16) { | |
| > rmask = RMASK_16; | |
| > gmask = GMASK_16; | |
| > bmask = BMASK_16; | |
| > } | |
| > else { | |
| > rmask = RMASK_24; | |
| > gmask = GMASK_24; | |
| > bmask = BMASK_24; | |
| > } | |
| > | |
| > // keep last shdow_fb | |
| > memcpy(last_shadow_fb, shadow_fb, psx_w * psx_h * depth / 8); | |
| > | |
| > // create source surface (original size) | |
| > source_surface = SDL_CreateRGBSurfaceFrom(shadow_fb, psx_w, psx_h, depth, pitch, rmask, gmask, bmask, 0); | |
| > if (source_surface == NULL) { | |
| > printf("failed to create source_surface\n"); | |
| > goto out; | |
| > } | |
| > // create target surface (full size) | |
| > target_surface = SDL_CreateRGBSurface(0, g_menuscreen_w, g_menuscreen_h, depth, rmask, gmask, bmask, 0); | |
| > if (target_surface == NULL) { | |
| > printf("failed to create target_surface\n"); | |
| > goto out; | |
| > } | |
| > // blit source surface to target surface | |
| > ret = SDL_BlitScaled(source_surface, NULL, target_surface, NULL); | |
| > if (ret < 0) { | |
| > printf("SDL_BlitScaled error\n"); | |
| > goto out; | |
| > } | |
| > // create darken surface (full size) | |
| > darken_surface = SDL_CreateRGBSurface(0, g_menuscreen_w, g_menuscreen_h, 32, 0xFF000000, 0x00FF0000, 0x0000FF00, 0x000000FF); | |
| > if (darken_surface == NULL) { | |
| > printf("failed to create darken_surface\n"); | |
| > goto out; | |
| > } | |
| > // set pixels of darken surface | |
| > ret = SDL_FillRect(darken_surface, NULL, SDL_MapRGB(darken_surface->format, 0, 0, 0)); | |
| > if (ret < 0) { | |
| > printf("SDL_FillRect error\n"); | |
| > goto out; | |
| > } | |
| > // set alpha of darken surface (30%) | |
| > ret = SDL_SetSurfaceAlphaMod(darken_surface, 204); | |
| > if (ret < 0) { | |
| > printf("SDL_SetSurfaceAlphaMod error\n"); | |
| > goto out; | |
| > } | |
| > // blit darken surface to target surface | |
| > ret = SDL_BlitSurface(darken_surface, NULL, target_surface, NULL); | |
| > if (ret < 0) { | |
| > printf("SDL_BlitSurface error\n"); | |
| > } | |
| > | |
| > memcpy(menubg_img, target_surface->pixels, g_menuscreen_w * g_menuscreen_h * depth / 8); | |
| > | |
| > out: | |
| > SDL_FreeSurface(source_surface); | |
| > SDL_FreeSurface(target_surface); | |
| > SDL_FreeSurface(darken_surface); | |
| > | |
| > pl_vout_buf = menubg_img; | |
| > } | |
| > else { | |
| > memcpy(menubg_img, plat_sdl_screen->pixels, psx_w * psx_h * depth / 8); | |
| > pl_vout_buf = menubg_img; | |
| > printf("memcpy menubg_img=%0x,plat_sdl_screen->pixels=%0x,psx_w=%d,psx_h=%d\n",menubg_img,plat_sdl_screen->pixels,psx_w,psx_h); | |
| > } | |
| > #endif | |
| 294a532,533 | |
| > | |
| > | |
| 296a536 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 303a544,559 | |
| > #else | |
| > printf("frontend/plat_sdl.c : plat_video_menu_begin() : plat_sdl_gl_active=%d\n",plat_sdl_gl_active); | |
| > | |
| > if (plat_sdl_gl_active) { | |
| > g_menuscreen_ptr = shadow_fb; | |
| > } | |
| > else { | |
| > SDL_LockSurface(plat_sdl_screen); | |
| > g_menuscreen_ptr = plat_sdl_screen->pixels; | |
| > } | |
| > printf("plat_video_menu_begin() end\n"); | |
| > printf(" shadow_fb=%x\n",shadow_fb); | |
| > printf(" plat_sdl_screen->pixels=%x\n",plat_sdl_screen->pixels); | |
| > printf(" g_menuscreen_ptr=%x\n",g_menuscreen_ptr); | |
| > | |
| > #endif | |
| 305a562,565 | |
| > | |
| > | |
| > | |
| > | |
| 307a568 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 319c580 | |
| < gl_flip(g_menuscreen_ptr, g_menuscreen_w, g_menuscreen_h); | |
| --- | |
| > gl_flip(g_menuscreen_ptr, g_menuscreen_w, g_menuscreen_h, 0); | |
| 322d582 | |
| < SDL_UnlockSurface(plat_sdl_screen); | |
| 324a585,619 | |
| > #else | |
| > printf("frontend/plat_sdl.c : plat_video_menu_end() : plat_sdl_gl_active=%d\n",plat_sdl_gl_active); | |
| > printf(" plat_sdl_gl_active=%d\n",plat_sdl_gl_active); | |
| > | |
| > if (plat_sdl_gl_active) { | |
| > | |
| > printf("gl_flip() g_menuscreen_ptr=%0x, g_menuscreen_w=%d, g_menuscreen_h=%d\n",g_menuscreen_ptr,g_menuscreen_w,g_menuscreen_h); | |
| > | |
| > //gl_flip(g_menuscreen_ptr, 640, 480); | |
| > gl_flip(g_menuscreen_ptr, g_menuscreen_w, g_menuscreen_h, 0); | |
| > | |
| > printf("gl_flip() end\n"); | |
| > } | |
| > else { | |
| > | |
| > SDL_UnlockSurface(plat_sdl_screen); | |
| > | |
| > int fs_w,fs_h; | |
| > SDL_GetWindowSize(sdl2_window, &fs_w, &fs_h); | |
| > printf("plat_video_menu_end: window->W=%d, h=%d \n", fs_w, fs_h); | |
| > printf("plat_video_menu_end: plat_sdl_screen->w=%d, h=%d \n",plat_sdl_screen->w,plat_sdl_screen->h); | |
| > | |
| > #if 0 | |
| > sdl2_texture = SDL_CreateTextureFromSurface(sdl2_renderer, plat_sdl_screen); | |
| > SDL_RenderClear(sdl2_renderer); | |
| > SDL_RenderCopy(sdl2_renderer, sdl2_texture, NULL, NULL); | |
| > | |
| > SDL_RenderPresent(sdl2_renderer); | |
| > #else | |
| > SDL_UpdateWindowSurface(sdl2_window); | |
| > #endif | |
| > | |
| > | |
| > } | |
| > #endif | |
| 330a626 | |
| > menu_leave = 1; | |
| diff --new-file -w -r pcsx_rearmed/frontend/plugin.c pcsx_rearmed_custom/frontend/plugin.c | |
| 49a50,51 | |
| > extern void CALLBACK SPUfadein(void); | |
| > extern void CALLBACK SPUenableRvbConfig(int); | |
| 86a89 | |
| > extern void GPUsetPatchFlag(int, int); | |
| 87a91 | |
| > extern uint32_t GPUboStatus(void); | |
| 148a153,154 | |
| > DIRECT_SPU(SPUfadein), | |
| > DIRECT_SPU(SPUenableRvbConfig), | |
| 180a187 | |
| > DIRECT_GPU(GPUsetPatchFlag), | |
| 181a189 | |
| > DIRECT_GPU(GPUboStatus), | |
| 264a273 | |
| > pc_hook_func_ret(uint32_t, GPU_boStatus, (void), (), PCNT_GPU) | |
| 292a302 | |
| > hook_it(GPU_boStatus); | |
| diff --new-file -w -r pcsx_rearmed/frontend/plugin_lib.c pcsx_rearmed_custom/frontend/plugin_lib.c | |
| 34a35 | |
| > #include "../libpcsxcore/misc.h" | |
| 35a37 | |
| > #include "../libpcsxcore/title.h" | |
| 60a63,113 | |
| > static int s_bgr24_old = 0; | |
| > static unsigned char s_scrennshotBuf[1024 *512 * 2]; | |
| > | |
| > void set_scenes(int scenes) { | |
| > pl_rearmed_cbs.gpu_peops.scenes = scenes; | |
| > } | |
| > | |
| > #define FRAME_INTERVAL_ADJUSTED 18821 | |
| > void change_frame_Motionjpeg(int onoff){ | |
| > | |
| > if(onoff){ | |
| > frame_interval = 16667; | |
| > frame_interval1024 = 17066667; | |
| > } | |
| > else{ | |
| > frame_interval = FRAME_INTERVAL_ADJUSTED; | |
| > frame_interval1024 = FRAME_INTERVAL_ADJUSTED*1024; | |
| > } | |
| > } | |
| > | |
| > #define DO_CANCEL 0x80000000 | |
| > void set_bo_trg(int onoff, int ch){ | |
| > | |
| > static int trg_off_cnt = 0; | |
| > int region = 0; | |
| > int threshold = 0; | |
| > | |
| > if ((isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US))) { | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP)) { | |
| > region = 1; | |
| > threshold = 300*24; | |
| > } | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_US)) { | |
| > region = 2; | |
| > threshold = 300*24; | |
| > } | |
| > | |
| > if (onoff) { | |
| > pl_rearmed_cbs.gpu_unai.lineskip = region; | |
| > trg_off_cnt = 0; | |
| > } | |
| > else { | |
| > if ( trg_off_cnt > threshold) { | |
| > pl_rearmed_cbs.gpu_unai.lineskip = onoff; | |
| > trg_off_cnt = 0; | |
| > } | |
| > trg_off_cnt++; | |
| > } | |
| > } | |
| > } | |
| 354a408 | |
| > bgr24 = 0; | |
| 356a411,421 | |
| > if (h - h1 == 1 && isTitleName(IQ_INTELLIGENT_QUBE_JP)) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > bgr888_to_rgb565(dest, blank_src, w * 3); | |
| > } else if (h - h1 < 16 && | |
| > (isTitleName(SUPER_PUZZLE_FIGHTER_2_TURBO_US) || | |
| > isTitleName(SUPER_PUZZLE_FIGHTER_2_X_JP))) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > bgr888_to_rgb565(dest, blank_src, w * 3); | |
| > } else { | |
| 359a425 | |
| > } | |
| 366c432,444 | |
| < bgr888_to_rgb888(dest, src, w * 3); | |
| --- | |
| > if (h - h1 == 1 && isTitleName(IQ_INTELLIGENT_QUBE_JP)) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > memcpy(dest, blank_src, w * 3); | |
| > } else if (h - h1 < 16 && | |
| > (isTitleName(SUPER_PUZZLE_FIGHTER_2_TURBO_US) || | |
| > isTitleName(SUPER_PUZZLE_FIGHTER_2_X_JP))) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > memcpy(dest, blank_src, w * 3); | |
| > } else { | |
| > memcpy( dest, src, w * 3 ); | |
| > } | |
| 400a479,495 | |
| > if (h - h1 == 1 && isTitleName(IQ_INTELLIGENT_QUBE_JP)) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > bgr555_to_rgb565(dest, blank_src, w * 2); | |
| > } else if (h - h1 < 16 && | |
| > (isTitleName(SUPER_PUZZLE_FIGHTER_2_TURBO_US) || | |
| > isTitleName(SUPER_PUZZLE_FIGHTER_2_X_JP))) { | |
| > unsigned char blank_src[1024 * 3]; | |
| > memset(blank_src, 0x0, sizeof(blank_src)); | |
| > bgr555_to_rgb565(dest, blank_src, w * 2); | |
| > } else { | |
| > if(isTitleName(ARC_THE_LAD_JP) || | |
| > isTitleName(ARC_THE_LAD_2_JP) || | |
| > isTitleName(SAGAFRONTIER_JP) || | |
| > isTitleName(COOL_BOARDERS_2_EU)) { | |
| > bgr555_to_rgb565_without_neon(dest, src, w * 2); | |
| > } else { | |
| 403a499,533 | |
| > } | |
| > } | |
| > | |
| > // bottom blank | |
| > int blank_pixel = 2; | |
| > if (isTitleName(MR_DRILLER_EU) || | |
| > isTitleName(MR_DRILLER_JP) || | |
| > isTitleName(MR_DRILLER_US)) { | |
| > blank_pixel = 6; | |
| > } | |
| > paint_black(dest, dstride * blank_pixel * pl_vout_bpp / 8); | |
| > dest += dstride * blank_pixel * pl_vout_bpp / 8; | |
| > | |
| > // PLF-363 Blink RYU silhouette | |
| > if (isTitleName(GRAN_TURISMO_EU) || | |
| > isTitleName(GRAN_TURISMO_JP) || | |
| > isTitleName(GRAN_TURISMO_US) || | |
| > isTitleName(STREET_FIGHTER_ALPHA_3_US)) { | |
| > //static unsigned short former_rgb565[2][w * h]; | |
| > static unsigned short former_rgb565[2][640 * 512]; // show frontend/plat_sdl.c:224 | |
| > static int voutCnt = 0; | |
| > unsigned short *us_pl_vout_buf = (unsigned short *)pl_vout_buf; | |
| > unsigned short *pformer_rgb565; | |
| > | |
| > pformer_rgb565 = &former_rgb565[voutCnt][0]; | |
| > memcpy(pformer_rgb565, pl_vout_buf, sizeof(former_rgb565) / 2); | |
| > | |
| > voutCnt ^= 0x01; | |
| > pformer_rgb565 = &former_rgb565[voutCnt][0]; | |
| > | |
| > for(int i = 0; i < (sizeof(former_rgb565) / 2) / sizeof(unsigned short) ; i ++) { | |
| > unsigned short us0 = \ | |
| > (*(us_pl_vout_buf + i) >> 1) & 0x7bef; // mask rgb msb (0x7bef = 0111 1011 1110 1111) | |
| > unsigned short us1 = \ | |
| > (*(pformer_rgb565 + i) >> 1) & 0x7bef; // mask rgb msb ( --R- -===G===- -B--) | |
| 404a535,537 | |
| > *(us_pl_vout_buf + i) = us0 + us1; | |
| > } | |
| > } | |
| 410a544,547 | |
| > if( dest != NULL ){ | |
| > s_bgr24_old = bgr24; | |
| > } | |
| > | |
| 412c549 | |
| < pl_vout_buf = plat_gvideo_flip(); | |
| --- | |
| > pl_vout_buf = plat_gvideo_flip( s_bgr24_old ); | |
| 419a557,565 | |
| > void paint_black(void *dst_, int bytes) { | |
| > unsigned short *dst = dst_; | |
| > int x; | |
| > | |
| > for (x = 0; x < bytes / 2; x++) { | |
| > dst[x] = 0; | |
| > } | |
| > } | |
| > | |
| 456a603,607 | |
| > if( s_bgr24_old ){ | |
| > *bpp = 16; | |
| > bgr888_to_rgb565(s_scrennshotBuf, pl_vout_buf, pl_vout_w * pl_vout_h * 3 ); | |
| > return s_scrennshotBuf; | |
| > }else{ | |
| 459a611,612 | |
| > } | |
| > | |
| 593a747,748 | |
| > #define ONE_CONTROLLER 0 | |
| > #define TWO_CONTROLLER 16 | |
| 612a768,780 | |
| > // auto save state | |
| > if (time_to_sync_state && emu_act != SACTION_CD_CHANGE) { | |
| > emu_set_action(SACTION_SYNC_STATE); | |
| > } | |
| > // auto_power_off | |
| > if (power_off_flg) { | |
| > emu_set_action(SACTION_POWER_OFF); | |
| > } | |
| > // error : cpu temperature is too high | |
| > if (is_high_temperature) { | |
| > save_error(ERROR_CPUOVERHEAT, "CPU temperature is too high."); | |
| > emu_set_action(SACTION_RESET_EVENT); | |
| > } | |
| 614a783,791 | |
| > | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US)) { | |
| > if (pl_rearmed_cbs.gpu_unai.lineskip && | |
| > ((in_keystate & (1 << DKEY_START + ONE_CONTROLLER)) || | |
| > (in_keystate & (1 << DKEY_START + TWO_CONTROLLER)))) { | |
| > pl_rearmed_cbs.gpu_unai.lineskip |= DO_CANCEL; | |
| > } | |
| > } | |
| 734a912,924 | |
| > | |
| > if(isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US)) { | |
| > frame_interval = is_pal ? 20000 : FRAME_INTERVAL_ADJUSTED; | |
| > frame_interval1024 = is_pal ? 20000*1024 : FRAME_INTERVAL_ADJUSTED*1024; | |
| > } | |
| > else if(isTitleName(SAGAFRONTIER_JP)) { | |
| > frame_interval = is_pal ? 20000 : 18377; | |
| > frame_interval1024 = is_pal ? 20000*1024 : 18377*1024; | |
| > } | |
| > else { | |
| 736a927 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/frontend/plugin_lib.h pcsx_rearmed_custom/frontend/plugin_lib.h | |
| 70a71 | |
| > int iTrimJaggyFrame; | |
| 73a75,78 | |
| > int isToShinDen; | |
| > int isBiosLogoEnd; | |
| > int scenes; | |
| > int regions; | |
| 102a108,119 | |
| > enum msg_scenes{ | |
| > NO_SCENES = 0, | |
| > MSG_SCENE1, | |
| > MSG_SCENE2, | |
| > MSG_SCENE3, | |
| > MSG_SCENE4, | |
| > MSG_SCENE5, | |
| > MSG_SCENE6, | |
| > MSG_SCENE7, | |
| > MSG_SCENE8 | |
| > }; | |
| > | |
| Binary files pcsx_rearmed/frontend/warm/bin/warm_2.4.25.o and pcsx_rearmed_custom/frontend/warm/bin/warm_2.4.25.o differ | |
| Binary files pcsx_rearmed/frontend/warm/bin/warm_2.4.26-open2x.o and pcsx_rearmed_custom/frontend/warm/bin/warm_2.4.26-open2x.o differ | |
| diff --new-file -w -r pcsx_rearmed/frontend/warm/.gitignore pcsx_rearmed_custom/frontend/warm/.gitignore | |
| 1d0 | |
| < *.o | |
| diff --new-file -w -r pcsx_rearmed/.gitignore pcsx_rearmed_custom/.gitignore | |
| 1,13d0 | |
| < *.o | |
| < *.a | |
| < *.so | |
| < tags | |
| < cscope.out | |
| < pandora | |
| < pcsx.map | |
| < config.mak | |
| < config.log | |
| < frontend/revision.h | |
| < tools | |
| < .pcsx/ | |
| < obj/ | |
| diff --new-file -w -r pcsx_rearmed/.gitmodules pcsx_rearmed_custom/.gitmodules | |
| 1,6d0 | |
| < [submodule "libpicofe"] | |
| < path = frontend/libpicofe | |
| < url = git://notaz.gp2x.de/~notaz/libpicofe.git | |
| < [submodule "warm"] | |
| < path = frontend/warm | |
| < url = git://notaz.gp2x.de/~notaz/warm.git | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/cdriso.c pcsx_rearmed_custom/libpcsxcore/cdriso.c | |
| 223,224c223,224 | |
| < // can't do it yet due to readahead.. | |
| < //cdrAttenuate((short *)sndbuffer, s / 4, 1); | |
| --- | |
| > cdrAttenuate((short *)sndbuffer, s / 4, 1); | |
| > | |
| 1040c1040 | |
| < strcpy(subname + strlen(subname) - 4, ".sub"); | |
| --- | |
| > strcpy(subname + strlen(subname) - 4, ".otf"); | |
| 1281c1281 | |
| < SysPrintf("[+sub]"); | |
| --- | |
| > SysPrintf("[+otf]"); | |
| 1482,1483c1482,1488 | |
| < fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET); | |
| < fread(subbuffer, 1, SUB_FRAMESIZE, subHandle); | |
| --- | |
| > int r = fseek(subHandle, sector * SUB_FRAMESIZE, SEEK_SET); | |
| > if (r == 0) { | |
| > if (fread(subbuffer, 1, SUB_FRAMESIZE, subHandle) < SUB_FRAMESIZE) | |
| > memset(subbuffer, 0, sizeof(subbuffer)); | |
| > } else { | |
| > memset(subbuffer, 0, sizeof(subbuffer)); | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/cdrom.c pcsx_rearmed_custom/libpcsxcore/cdrom.c | |
| 27a28,32 | |
| > #include "title.h" | |
| > #include "misc.h" | |
| > #include "../plugins/dfsound/externals.h" | |
| > #include "../plugins/dfsound/spu_config.h" | |
| > #include "../frontend/plugin_lib.h" | |
| 49a55,59 | |
| > int is_disc_change = 0; | |
| > int is_nop_count = 0; | |
| > int nop_cnt = 0; | |
| > static int scenes=0; | |
| > | |
| 138c148,155 | |
| < | |
| --- | |
| > // video sector head | |
| > #define CD_STR_HEAD (0x80010160) | |
| > #define CD_STR_HEAD_SIZE (0x20) | |
| > | |
| > #define H_CDLeft 0x0db0 | |
| > #define SET_VOLUME_L 0x1f801c00 | |
| > #define SET_VOLUME_R 0x1f801c12 | |
| > #define MAX_VOLUME 0x7fff | |
| 153a171,184 | |
| > static int isUseBuf = 0; | |
| > static int arc_sec_count = 0; | |
| > static int arc_sec_not_read = 0; | |
| > | |
| > static int RunBiosLogoFarst = 0; | |
| > | |
| > int Loading2Setloc = 0; | |
| > | |
| > int xaSave_iLeftVolume; | |
| > int xaSave_iRightVolume; | |
| > unsigned char State_CdlPause; | |
| > | |
| > #define ARC_BUFF_MAX (10) | |
| > static unsigned char arcSecBuf[ARC_BUFF_MAX][DATA_SIZE]; | |
| 228a260,349 | |
| > extern void change_HSync_Motionjpeg(int onfoff); | |
| > extern void change_frame_Motionjpeg(int onfoff); | |
| > extern void check_Motionjpeg(unsigned char arg1, unsigned char arg2, unsigned char arg3); | |
| > extern void set_scenes(int scenes); | |
| > | |
| > int CheckDiscChange(unsigned short irq) | |
| > { | |
| > // check exit conditions | |
| > if ((is_disc_change || is_nop_count) && irq != CdlNop && irq != CdlSetmode && irq != CdlGetTN && irq != CdlSetloc && irq != CdlStop) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 0; | |
| > } | |
| > | |
| > // check initiation conditions | |
| > if (!is_disc_change) { | |
| > switch (disc_change_type) { | |
| > case 1: | |
| > if (irq == CdlStop) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > else if (irq == CdlPause) { | |
| > is_nop_count = 1; | |
| > } | |
| > else if (irq == CdlNop && is_nop_count) { | |
| > nop_cnt++; | |
| > if (nop_cnt >= 20) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > } | |
| > break; | |
| > case 2: | |
| > if (irq == CdlStop) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > else if (irq == CdlPause || irq == CdlReadN || irq == CdlReadS) { | |
| > is_nop_count = 1; | |
| > } | |
| > else if (irq == CdlNop && is_nop_count) { | |
| > nop_cnt++; | |
| > if (nop_cnt >= 20) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > } | |
| > break; | |
| > case 3: | |
| > if (irq == CdlStop) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > break; | |
| > case 4: | |
| > if (irq == CdlStop || irq == CdlPause) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > break; | |
| > case 5: | |
| > if (irq == CdlStop || irq == CdlReadN || irq == CdlReadS) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > else if (irq == CdlPause) { | |
| > is_nop_count = 1; | |
| > } | |
| > else if (irq == CdlNop && is_nop_count) { | |
| > nop_cnt++; | |
| > if (nop_cnt >= 20) { | |
| > is_nop_count = 0; | |
| > nop_cnt = 0; | |
| > return 1; | |
| > } | |
| > } | |
| > } | |
| > return 0; | |
| > } | |
| > return 1; | |
| > } | |
| > | |
| 384a506,518 | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US)) { | |
| > check_Motionjpeg(tmp[0], tmp[1], tmp[2]); | |
| > check_scenes(tmp[0], tmp[1], tmp[2]); | |
| > } | |
| > | |
| > if (isTitleName(WILD_ARMS_US) || | |
| > isTitleName(WILD_ARMS_JP)) { | |
| > check_scenesforSPU(tmp[0], tmp[1], tmp[2]); | |
| > } | |
| > | |
| 393,394c527,529 | |
| < crc = calcCrc((u8 *)subq + 12, 10); | |
| < if (crc == (((u16)subq->CRC[0] << 8) | subq->CRC[1])) { | |
| --- | |
| > // crc = calcCrc((u8 *)subq + 12, 10); | |
| > // if (crc == (((u16)subq->CRC[0] << 8) | subq->CRC[1])) { | |
| > if (subq->TrackNumber != 0) { | |
| 400a536 | |
| > generate_subq(time); | |
| 505c641,648 | |
| < if (!cdr.Play) return; | |
| --- | |
| > if (!cdr.Play){ | |
| > if (isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > SPU_writeRegister(H_CDLeft, 0, psxRegs.cycle); | |
| > } | |
| > return; | |
| > } | |
| 817a961,987 | |
| > | |
| > if (isTitleName(WILD_ARMS_US)) { | |
| > if(cdr.SetSector[0] == 0x20 && cdr.SetSector[1] == 0x1c && cdr.SetSector[2] == 0x3d && scenes) { | |
| > cdr.Seeked = SEEK_DONE; | |
| > cdr.Stat = Complete; | |
| > break; | |
| > } else if(cdr.SetSector[0] == 0x26 && cdr.SetSector[1] == 0x32 && cdr.SetSector[2] == 0xb && scenes) { | |
| > if (msf2sec(cdr.SetSector) <= msf2sec(cdr.SetSectorPlay)) { | |
| > cdr.Seeked = SEEK_DONE; | |
| > cdr.Stat = Complete; | |
| > break; | |
| > } | |
| > } | |
| > } else if (isTitleName(WILD_ARMS_JP)) { | |
| > if(cdr.SetSector[0] == 0x20 && cdr.SetSector[1] == 0x1d && cdr.SetSector[2] == 0x6 && scenes) { | |
| > cdr.Seeked = SEEK_DONE; | |
| > cdr.Stat = Complete; | |
| > break; | |
| > } else if(cdr.SetSector[0] == 0x26 && cdr.SetSector[1] == 0x32 && cdr.SetSector[2] == 0x1f && scenes) { | |
| > if (msf2sec(cdr.SetSector) <= msf2sec(cdr.SetSectorPlay)) { | |
| > cdr.Seeked = SEEK_DONE; | |
| > cdr.Stat = Complete; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| 880c1050,1067 | |
| < strncpy((char *)&cdr.Result[4], "PCSX", 4); | |
| --- | |
| > switch (CdromId[2]) { | |
| > case 'P': | |
| > case 'p': | |
| > strncpy((char *)&cdr.Result[4], "SCEI", 4); | |
| > break; | |
| > // To compliance the requirement, remove trademark notification | |
| > // case 'E': | |
| > // case 'e': | |
| > // strncpy((char *)&cdr.Result[4], "SCEE", 4); | |
| > // break; | |
| > // case 'U': | |
| > // case 'u': | |
| > // strncpy((char *)&cdr.Result[4], "SCEA", 4); | |
| > // break; | |
| > default: | |
| > strncpy((char *)&cdr.Result[4], " ", 4); | |
| > break; | |
| > } | |
| 1026a1214 | |
| > int shift; | |
| 1033a1222,1247 | |
| > if (isTitleName(ARMORED_CORE_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_2_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_EU) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_JP) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_3_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_4_JP) || | |
| > isTitleName(G_DARIUS_JP) || | |
| > isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(JUMPING_FLASH_JP) || | |
| > isTitleName(JUMPING_FLASH_US) || | |
| > isTitleName(PARASITE_EVE_DISC_1_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_1_US) || | |
| > isTitleName(PARASITE_EVE_DISC_2_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_2_US) || | |
| > isTitleName(TEKKEN3_EU) || | |
| > isTitleName(TEKKEN3_JP)) { | |
| > shift = 8; | |
| > } else { | |
| > shift = 7; | |
| > } | |
| > | |
| 1038,1039c1252,1253 | |
| < l = (l * ll + r * rl) >> 7; | |
| < r = (r * rr + l * lr) >> 7; | |
| --- | |
| > l = (l * ll + r * rl) >> shift; | |
| > r = (r * rr + l * lr) >> shift; | |
| 1049c1263,1269 | |
| < l = l * (ll + rl) >> 7; | |
| --- | |
| > /* PLF-409 DEL Start */ | |
| > // l = l * (ll + rl) >> 7; | |
| > /* PLF-409 DEL End */ | |
| > if (isTitleName(MEDIEVIL_EU) || | |
| > isTitleName(MEDIEVIL_US)) { | |
| > l = l * (ll + rl) >> shift; | |
| > } | |
| 1076a1297,1304 | |
| > if (isTitleName(DESTRUCTION_DERBY_EU) && | |
| > Loading2Setloc && | |
| > cdr.SetSectorPlay[0] == 0 && | |
| > cdr.SetSectorPlay[1] == 2 && | |
| > cdr.SetSectorPlay[2] == 23) { | |
| > cdr.SetSectorPlay[2] = 22; | |
| > } | |
| > | |
| 1091a1320,1350 | |
| > const char searchLicenseString[] = | |
| > " Licensed by Sony Computer Entertainment(Europe)\0\0\0\0"; | |
| > const char changeLicenseString[] = | |
| > " Licensed by Sony Computer Entertainment(Eur ope) \0"; | |
| > | |
| > int searchLicenseStringLen = sizeof(searchLicenseString) - 1; | |
| > int cnt = 0; | |
| > int foundCnt = 0; | |
| > | |
| > if ((cdr.SetSectorPlay[0] == 0) && | |
| > (cdr.SetSectorPlay[1] == 2) && | |
| > (cdr.SetSectorPlay[2] == 4) && | |
| > (cdr.SetSectorPlay[3] == 0)) { | |
| > | |
| > // License string area. | |
| > while(cnt != DATA_SIZE) { | |
| > if (*(buf + cnt) == searchLicenseString[foundCnt]) { | |
| > if(++foundCnt == searchLicenseStringLen) { | |
| > // found !! | |
| > memcpy(buf + cnt - searchLicenseStringLen + 1, | |
| > changeLicenseString, | |
| > searchLicenseStringLen); | |
| > break; | |
| > } | |
| > } else { | |
| > foundCnt = 0; | |
| > } | |
| > cnt ++; | |
| > } | |
| > } | |
| > | |
| 1094a1354,1361 | |
| > if (isTitleName(PACAPACA_PASSION_JP)) { | |
| > if (isUseBuf) { | |
| > if (arc_sec_count >= ARC_BUFF_MAX) | |
| > arc_sec_count = 0; | |
| > memcpy(arcSecBuf[arc_sec_count++], buf, DATA_SIZE); | |
| > CheckPPFCache(arcSecBuf[arc_sec_count-1], cdr.Prev[0], cdr.Prev[1], cdr.Prev[2]); | |
| > } | |
| > } | |
| 1117a1385,1390 | |
| > if (isTitleName(PARAPPA_THE_RAPPER_US) | |
| > && cdr.SetSectorPlay[0] == 62 | |
| > && cdr.SetSectorPlay[1] == 53 | |
| > && cdr.SetSectorPlay[2] == 66) { | |
| > cdrWrite1(0x08); | |
| > } | |
| 1129a1403,1425 | |
| > if (isTitleName(IQ_INTELLIGENT_QUBE_JP) && | |
| > cdr.SetSectorPlay[0] == 1 && | |
| > cdr.SetSectorPlay[1] == 55 && | |
| > (57 <= cdr.SetSectorPlay[2] && cdr.SetSectorPlay[2] <= 74)) { | |
| > CDREAD_INT(cdReadTime / 2 * 0.5); | |
| > } else if (isTitleName(IQ_INTELLIGENT_QUBE_US) && | |
| > cdr.SetSectorPlay[0] == 1 && | |
| > cdr.SetSectorPlay[1] == 20 && | |
| > (60 <= cdr.SetSectorPlay[2] && cdr.SetSectorPlay[2] <= 74)) { | |
| > CDREAD_INT(cdReadTime / 2 * 0.5); | |
| > } else if (isTitleName(WILD_ARMS_JP) && | |
| > cdr.SetSectorPlay[0] == 32 && | |
| > cdr.SetSectorPlay[1] == 29 && | |
| > (7 <= cdr.SetSectorPlay[2] && cdr.SetSectorPlay[2] <= 50)) { | |
| > CDREAD_INT(cdReadTime / 2 * 0.9); | |
| > } else if (isTitleName(WILD_ARMS_US) && | |
| > cdr.SetSectorPlay[0] == 32 && | |
| > (cdr.SetSectorPlay[1] == 28 && | |
| > (61 <= cdr.SetSectorPlay[2] && cdr.SetSectorPlay[2] <= 74)) || | |
| > (cdr.SetSectorPlay[1] == 29 && | |
| > (0 <= cdr.SetSectorPlay[2] && cdr.SetSectorPlay[2] <= 30))) { | |
| > CDREAD_INT(cdReadTime / 2 * 0.9); | |
| > } else { | |
| 1130a1427 | |
| > } | |
| 1227a1525,1526 | |
| > is_disc_change = CheckDiscChange(cdr.Cmd); | |
| > | |
| 1229a1529 | |
| > | |
| 1230a1531,1970 | |
| > if (isTitleName(ARC_THE_LAD_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x24 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 375); | |
| > RunBiosLogoFarst = 1; | |
| > } else if (cdr.Cmd == CdlPause && | |
| > cdr.SetSector[0] == 9 && | |
| > cdr.SetSector[1] == 41 && | |
| > cdr.SetSector[2] == 43) { | |
| > SPU_enableRvbConfig(1); | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x38 && | |
| > cdr.Param[1] == 0x24 && | |
| > cdr.Param[2] == 0x11) { | |
| > SPU_enableRvbConfig(0); | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(ARC_THE_LAD_2_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x26 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 300); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(ARMORED_CORE_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(COOL_BOARDERS_2_EU)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(CRASH_BANDICOOT_EU)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x24 && | |
| > cdr.Param[1] == 0x15 && | |
| > cdr.Param[2] == 0x4) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 60); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(CRASH_BANDICOOT_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x24 && | |
| > cdr.Param[1] == 0x29 && | |
| > cdr.Param[2] == 0x1) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 60); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(DESTRUCTION_DERBY_EU)) { | |
| > if( cdr.Cmd == CdlSetloc) { | |
| > if (cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22) { | |
| > Loading2Setloc = 1; | |
| > } else { | |
| > Loading2Setloc = 0; | |
| > } | |
| > } | |
| > | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x22 && | |
| > cdr.Param[2] == 0x1 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 300); | |
| > RunBiosLogoFarst = 1; | |
| > | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(FINAL_FANTANSY_VII_DICS_1_US) || | |
| > isTitleName(FINAL_FANTANSY_VII_DICS_1_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(G_DARIUS_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(GRADIUS_GAIDEN_JP)) { | |
| > if (cdr.Cmd == CdlPause) { | |
| > State_CdlPause = 1; | |
| > xaSave_iLeftVolume = 0xFFFF; | |
| > xaSave_iRightVolume =0xFFFF; | |
| > } else if (cdr.Cmd == CdlSetloc && State_CdlPause == 1) { | |
| > if (xaSave_iLeftVolume != 0xFFFF) { | |
| > spu.iLeftXAVol = xaSave_iLeftVolume; | |
| > xaSave_iLeftVolume = 0xFFFF; | |
| > } | |
| > if (xaSave_iRightVolume != 0xFFFF) { | |
| > spu.iRightXAVol = xaSave_iRightVolume; | |
| > xaSave_iRightVolume = 0xFFFF; | |
| > } | |
| > State_CdlPause = 0; | |
| > } | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 375); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(GRAND_THEFT_AUTO_EU)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > if (RunBiosLogoFarst == 1 && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25) { | |
| > spu.dwNewChannel&=~(1<<4); | |
| > spu.dwNewChannel&=~(1<<5); | |
| > spu.s_chan[4].ADSRX.ReleaseRate = 0x5; | |
| > spu.s_chan[5].ADSRX.ReleaseRate = 0x5; | |
| > spu.s_chan[4].ADSRX.State = ADSR_RELEASE; | |
| > spu.s_chan[5].ADSRX.State = ADSR_RELEASE; | |
| > RunBiosLogoFarst = 0xFF; | |
| > } | |
| > | |
| > } else if (isTitleName(G_DARIUS_JP)) { | |
| > if((cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x00 && cdr.Param[1] == 0x10 && cdr.Param[2] == 0x53) || | |
| > (cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x27 && cdr.Param[1] == 0x19 && cdr.Param[2] == 0x64) || | |
| > (cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x27 && cdr.Param[1] == 0x19 && cdr.Param[2] == 0x65)) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 60); | |
| > } else if((cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x00 && cdr.Param[1] == 0x19 && cdr.Param[2] == 0x42) || | |
| > (cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x00 && cdr.Param[1] == 0x13 && cdr.Param[2] == 0x37) || | |
| > (cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x00 && cdr.Param[1] == 0x14 && cdr.Param[2] == 0x38) || | |
| > (cdr.Cmd == CdlSetloc && cdr.Param[0] == 0x01 && cdr.Param[1] == 0x51 && cdr.Param[2] == 0x16)) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 58); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(IQ_INTELLIGENT_QUBE_JP) || | |
| > isTitleName(IQ_INTELLIGENT_QUBE_US)) { | |
| > if (cdr.Cmd == CdlReadS) { | |
| > unsigned short volume = isTitleName(IQ_INTELLIGENT_QUBE_JP) ? | |
| > IQ_JP_MAX_VOLUME : IQ_US_MAX_VOLUME; | |
| > SPU_writeRegister(H_CDLeft, volume, psxRegs.cycle); | |
| > } | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(JUMPING_FLASH_JP)) { | |
| > if (isTitleName(JUMPING_FLASH_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x50 && | |
| > cdr.Param[1] == 0x30 && | |
| > cdr.Param[2] == 0x38) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x8 && | |
| > cdr.Param[1] == 0x20 && | |
| > cdr.Param[2] == 0x13) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x50 && | |
| > cdr.Param[1] == 0x44 && | |
| > cdr.Param[2] == 0x59) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x15 && | |
| > cdr.Param[1] == 0x7 && | |
| > cdr.Param[2] == 0x24) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x50 && | |
| > cdr.Param[1] == 0x59 && | |
| > cdr.Param[2] == 0x13) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x22 && | |
| > cdr.Param[1] == 0x17 && | |
| > cdr.Param[2] == 0x70) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x51 && | |
| > cdr.Param[1] == 0x13 && | |
| > cdr.Param[2] == 0x34) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x29 && | |
| > cdr.Param[1] == 0x42 && | |
| > cdr.Param[2] == 0x71) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x51 && | |
| > cdr.Param[1] == 0x27 && | |
| > cdr.Param[2] == 0x55) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x36 && | |
| > cdr.Param[1] == 0x4 && | |
| > cdr.Param[2] == 0x61) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x43 && | |
| > cdr.Param[1] == 0x11 && | |
| > cdr.Param[2] == 0x68) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 7); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } else { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } | |
| > | |
| > } else if (isTitleName(KAGERO_JP)) { | |
| > if (cdr.Cmd == CdlSetloc) { | |
| > if (cdr.Param[0] == 0x24 && cdr.Param[1] == 0x16 && cdr.Param[2] == 0x64) { | |
| > //movie | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 15); | |
| > } else if (cdr.Param[0] == 0x28 && cdr.Param[1] == 0x31 && cdr.Param[2] == 0x43) { | |
| > //config | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 25); | |
| > } else if (cdr.Param[0] == 0x30 && cdr.Param[1] == 0x56 && cdr.Param[2] == 0x56) { | |
| > //trapMake | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 30); | |
| > } else if (cdr.Param[0] == 0x35 && cdr.Param[1] == 0x42 && cdr.Param[2] == 0x73) { | |
| > //logo | |
| > AddIrqQueue(cdr.Cmd, cdReadTime); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(MEDIEVIL_EU)) { | |
| > if (cdr.Cmd == CdlSetloc) { | |
| > if ((cdr.Param[0] == 0x43 && cdr.Param[1] == 0x16 && cdr.Param[2] == 0x2) || | |
| > (cdr.Param[0] == 0x49 && cdr.Param[1] == 0x12 && cdr.Param[2] == 0x54)) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 5); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(MEDIEVIL_US)) { | |
| > if (cdr.Cmd == CdlSetloc) { | |
| > if ((cdr.Param[0] == 0x38 && cdr.Param[1] == 0x7 && cdr.Param[2] == 0x26) || | |
| > (cdr.Param[0] == 0x44 && cdr.Param[1] == 0x4 && cdr.Param[2] == 0x3)) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 5); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(MR_DRILLER_US) || | |
| > isTitleName(MR_DRILLER_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 150); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(ODDWORLD_ABES_ODDYSEE_EU)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x09 && | |
| > cdr.Param[1] == 0x57 && | |
| > cdr.Param[2] == 0x61) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 60); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(ODDWORLD_ABES_ODDYSEE_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x09 && | |
| > cdr.Param[1] == 0x58 && | |
| > cdr.Param[2] == 0x64) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 60); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(PARASITE_EVE_DISC_1_US) || | |
| > isTitleName(PARASITE_EVE_DISC_1_JP)) { | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP)){ | |
| > if (cdr.Cmd == CdlSetloc) { | |
| > if( (cdr.Param[0] == 0x2 && cdr.Param[1] == 0x11 && cdr.Param[2] == 0x63) || | |
| > (cdr.Param[0] == 0x0 && cdr.Param[1] == 0x27 && cdr.Param[2] == 0x64) ) { | |
| > spu_config.iTempo = 1; | |
| > } else if( (cdr.Param[0] == 0x0 && cdr.Param[1] == 0x17 && cdr.Param[2] == 0x44) || | |
| > (cdr.Param[0] == 0x11 && cdr.Param[1] == 0x9 && cdr.Param[2] == 0x37)) { | |
| > spu_config.iTempo = 0; | |
| > } else if (cdr.Param[0] == 0x40 && cdr.Param[1] == 0x38 && cdr.Param[2] == 0x42) { | |
| > SPU_writeRegister(SET_VOLUME_L, PARASITE_EVE_JP_DISABLE_VOLUME, psxRegs.cycle); | |
| > SPU_writeRegister(SET_VOLUME_R, PARASITE_EVE_JP_DISABLE_VOLUME, psxRegs.cycle); | |
| > } else if (cdr.Param[0] == 0x11 && cdr.Param[1] == 0x8 && cdr.Param[2] == 0x6) { | |
| > SPU_enableRvbConfig(1); | |
| > } else if (cdr.Param[0] == 0x11 && cdr.Param[1] == 0x11 && cdr.Param[2] == 0x68) { | |
| > SPU_enableRvbConfig(0); | |
| > } | |
| > } | |
| > } | |
| > | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x15 && | |
| > cdr.Param[2] == 0x38) { | |
| > spu_config.iTempo = 1; | |
| > } | |
| > | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 150); | |
| > RunBiosLogoFarst = 1; | |
| > } else if (isTitleName(PARASITE_EVE_DISC_1_JP) && | |
| > cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x2 && | |
| > cdr.Param[1] == 0x11 && | |
| > cdr.Param[2] == 0x63) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 30); | |
| > } else { | |
| 1231a1972,2231 | |
| > } | |
| > | |
| > } else if (isTitleName(PARASITE_EVE_DISC_2_US) || | |
| > isTitleName(PARASITE_EVE_DISC_2_JP)) { | |
| > if (cdr.Cmd == CdlSetloc) { | |
| > if( cdr.Param[0] == 0x11 && | |
| > cdr.Param[1] == 0x35 && | |
| > cdr.Param[2] == 0x10) { | |
| > spu_config.iTempo = 0; | |
| > } else if (cdr.Param[0] == 0x11 && | |
| > cdr.Param[1] == 0x35 && | |
| > cdr.Param[2] == 0x18) { | |
| > spu_config.iTempo = 0; | |
| > } | |
| > } | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > | |
| > } else if (isTitleName(PERSONA_JP) || | |
| > isTitleName(PERSONA_US)) { | |
| > if (isTitleName(PERSONA_JP) && cdr.Cmd == CdlSetloc) { | |
| > if (cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x14 && | |
| > cdr.Param[2] == 0x61) { | |
| > // "Adjust tempo" ON | |
| > spu_config.iTempo = 1; | |
| > } | |
| > } else if (isTitleName(PERSONA_US) && cdr.Cmd == CdlSetloc) { | |
| > if (cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x17 && | |
| > cdr.Param[2] == 0x15) { | |
| > // "Adjust tempo" ON | |
| > spu_config.iTempo = 1; | |
| > } | |
| > } | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > // "Adjust tempo" OFF | |
| > spu_config.iTempo = 0; | |
| > } else if (isTitleName(PERSONA_JP) && cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x18 && | |
| > cdr.Param[1] == 0x57 && | |
| > cdr.Param[2] == 0x6) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 45); | |
| > } else if (isTitleName(PERSONA_US) && cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x18 && | |
| > cdr.Param[1] == 0x57 && | |
| > cdr.Param[2] == 0x33) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 45); | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(RAYMAN_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(RESIDENT_EVIL_EU) || | |
| > isTitleName(RESIDENT_EVIL_JP) || | |
| > isTitleName(RESIDENT_EVIL_US)) { | |
| > | |
| > if (isTitleName(RESIDENT_EVIL_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x35 && | |
| > cdr.Param[1] == 0x35 && | |
| > cdr.Param[2] == 0x42) { | |
| > // NewGame selected "Adjust tempo" ON | |
| > spu_config.iTempo = 1; | |
| > } else if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x35 && | |
| > cdr.Param[1] == 0x35 && | |
| > cdr.Param[2] == 0x40) { | |
| > // CharacterSelect selected "Adjust tempo" OFF | |
| > spu_config.iTempo = 0; | |
| > } | |
| > } | |
| > | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 300); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > if (RunBiosLogoFarst == 1 && | |
| > ((cdr.Param[0] == 0x65 && cdr.Param[1] == 0x14 && cdr.Param[2] == 0x4) || //US | |
| > (cdr.Param[0] == 0x63 && cdr.Param[1] == 0x53 && cdr.Param[2] == 0x47) || //JP | |
| > (cdr.Param[0] == 0x63 && cdr.Param[1] == 0x17 && cdr.Param[2] == 0x4))) { //EU | |
| > spu.dwNewChannel&=~(1<<4); | |
| > spu.dwNewChannel&=~(1<<5); | |
| > spu.s_chan[4].ADSRX.State = ADSR_RELEASE; | |
| > spu.s_chan[5].ADSRX.State = ADSR_RELEASE; | |
| > RunBiosLogoFarst = 0xFF; | |
| > } | |
| > | |
| > } else if (isTitleName(RIDGE_RACER_TYPE_4_EU) || | |
| > isTitleName(RIDGE_RACER_TYPE_4_JP) || | |
| > isTitleName(RIDGE_RACER_TYPE_4_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 400); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(SAGAFRONTIER_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 300); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(SUPER_PUZZLE_FIGHTER_2_TURBO_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(SUPER_PUZZLE_FIGHTER_2_X_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 375); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(SYPHON_FILTER_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 150); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(TEKKEN3_EU) || | |
| > isTitleName(TEKKEN3_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 150); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(TOM_CLANCYS_RAINBOW_SIX_EU)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x22 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > if (cdr.Cmd == CdlPlay) { | |
| > unsigned short volume = isTitleName(TOSHINDEN_JP) ? | |
| > TOSHINDEN_JP_DEFAULT_VOLUME : TOSHINDEN_DEFAULT_VOLUME; | |
| > SPU_writeRegister(H_CDLeft, volume | 0x8000, psxRegs.cycle); | |
| > } else if (cdr.Cmd == CdlPause) { | |
| > SPU_writeRegister(H_CDLeft, 0x8000, psxRegs.cycle); | |
| > } | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(TWISTED_METAL_US)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(WILD_ARMS_US) || | |
| > isTitleName(WILD_ARMS_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > } else if (isTitleName(XI_EU) || | |
| > isTitleName(XI_JP)) { | |
| > if (cdr.Cmd == CdlSetloc && | |
| > cdr.Param[0] == 0x0 && | |
| > cdr.Param[1] == 0x2 && | |
| > cdr.Param[2] == 0x25 && | |
| > RunBiosLogoFarst == 0) { | |
| > AddIrqQueue(cdr.Cmd, cdReadTime * 450); | |
| > RunBiosLogoFarst = 1; | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > } else { | |
| > AddIrqQueue(cdr.Cmd, 0x800); | |
| > } | |
| > | |
| > if (RunBiosLogoFarst) pl_rearmed_cbs.gpu_peops.isBiosLogoEnd = 1; | |
| 1245a2246,2261 | |
| > if (isTitleName(PACAPACA_PASSION_JP)) { | |
| > unsigned char sector_s[4] = {0, 15, 24, 0}; | |
| > unsigned char sector_e[4] = {4, 0, 33, 0}; | |
| > int arc_file_s = msf2sec(sector_s); | |
| > int arc_file_e = msf2sec(sector_e); | |
| > int set_sector = msf2sec(cdr.SetSector); | |
| > if (arc_file_s <= set_sector && set_sector <= arc_file_e) { | |
| > isUseBuf = 1; | |
| > arc_sec_count = 0; | |
| > arc_sec_not_read = 0; | |
| > memset(arcSecBuf, 0, DATA_SIZE * ARC_BUFF_MAX); | |
| > } | |
| > else { | |
| > isUseBuf = 0; | |
| > } | |
| > } | |
| 1336a2353,2359 | |
| > if (isTitleName(RESIDENT_EVIL_EU) || | |
| > isTitleName(RESIDENT_EVIL_JP) || | |
| > isTitleName(RESIDENT_EVIL_US)) { | |
| > unsigned short volume; | |
| > volume = fmin((cdr.AttenuatorLeftToLeft + cdr.AttenuatorRightToLeft) << 8, MAX_VOLUME); | |
| > SPU_writeRegister(H_CDLeft, volume, psxRegs.cycle); | |
| > } | |
| 1410a2434,2438 | |
| > if (isUseBuf && isTitleName(PACAPACA_PASSION_JP)) { | |
| > if (arc_sec_not_read >= ARC_BUFF_MAX) arc_sec_not_read = 0; // reset ring buffer | |
| > memcpy(ptr, arcSecBuf[arc_sec_not_read++] + (pTransfer - cdr.Transfer), size); | |
| > } | |
| > else { | |
| 1412a2441 | |
| > } | |
| 1425a2455,2464 | |
| > int left_cycle = psxRegs.intCycle[PSXINT_CDREAD].sCycle | |
| > + psxRegs.intCycle[PSXINT_CDREAD].cycle | |
| > - psxRegs.cycle; | |
| > u32 str_headr = *((u32*)ptr); | |
| > if(left_cycle <= 0x1000 | |
| > && size == CD_STR_HEAD_SIZE | |
| > && ((str_headr&CD_STR_HEAD) == CD_STR_HEAD)) { | |
| > CDREAD_INT(0x1000); | |
| > CDR_LOG("psxDma3() Log: CDREAD_INT(0x1000)\n"); | |
| > } | |
| 1481a2521,2536 | |
| > if(Mode == 2) { | |
| > int iRetSize = sizeof(cdr) \ | |
| > + sizeof(tmp); | |
| > | |
| > if(f) { | |
| > cdr.freeze_ver = 0x63647202; | |
| > memcpy(f, &cdr, sizeof(cdr)); | |
| > f = (void *)((char *)f + sizeof(cdr)); | |
| > | |
| > cdr.ParamP = cdr.ParamC; | |
| > tmp = pTransfer - cdr.Transfer; | |
| > memcpy(f, &tmp, sizeof(tmp)); | |
| > f = (void *)((char *)f + sizeof(tmp)); | |
| > } | |
| > return iRetSize; | |
| > } | |
| 1536a2592,2752 | |
| > | |
| > int mgs_disk1_jp[][2] = { | |
| > {0x605657,0x624116}, | |
| > {0x600452,0x605644}, | |
| > {0x624124,0x640462}, | |
| > {0x585550,0x600441} | |
| > }; | |
| > int mgs_disk2_jp[][2] = { | |
| > {0x510434,0x520847}, | |
| > {0x520868,0x543706}, | |
| > {0x550948,0x672735}, | |
| > {0x543723,0x550923} | |
| > }; | |
| > int mgs_disk1_us[][2] = { | |
| > {0x603166,0x621624}, | |
| > {0x593961,0x603152}, | |
| > {0x621632,0x633969}, | |
| > {0x583059,0x593948} | |
| > }; | |
| > int mgs_disk2_us[][2] = { | |
| > {0x504407,0x514820}, | |
| > {0x514840,0x541652}, | |
| > {0x544911,0x670059}, | |
| > {0x541661,0x544862} | |
| > }; | |
| > | |
| > void check_Motionjpeg(unsigned char arg1, unsigned char arg2, unsigned char arg3){ | |
| > | |
| > int i,hit=0; | |
| > int track=arg1<<16|arg2<<8|arg3; | |
| > | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP)){ | |
| > for(i=0; i < sizeof(mgs_disk1_jp)/sizeof(mgs_disk1_jp[0]); i++){ | |
| > if((track >= mgs_disk1_jp[i][0]) && (track <= mgs_disk1_jp[i][1])){ | |
| > hit=1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (isTitleName(METAL_GEAR_SOLID_DISC_2_JP)){ | |
| > for(i=0; i < sizeof(mgs_disk2_jp)/sizeof(mgs_disk2_jp[0]); i++){ | |
| > if((track >= mgs_disk2_jp[i][0]) && (track <= mgs_disk2_jp[i][1])){ | |
| > hit=1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (isTitleName(METAL_GEAR_SOLID_DISC_1_US)){ | |
| > for(i=0; i < sizeof(mgs_disk1_us)/sizeof(mgs_disk1_us[0]); i++){ | |
| > if((track >= mgs_disk1_us[i][0]) && (track <= mgs_disk1_us[i][1])){ | |
| > hit=1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (isTitleName(METAL_GEAR_SOLID_DISC_2_US)){ | |
| > for(i=0; i < sizeof(mgs_disk2_us)/sizeof(mgs_disk2_us[0]); i++){ | |
| > if((track >= mgs_disk2_us[i][0]) && (track <= mgs_disk2_us[i][1])){ | |
| > hit=1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > if(hit){ | |
| > change_HSync_Motionjpeg(1); | |
| > change_frame_Motionjpeg(1); | |
| > } | |
| > else{ | |
| > change_HSync_Motionjpeg(0); | |
| > change_frame_Motionjpeg(0); | |
| > } | |
| > } | |
| > | |
| > int mgs_disk1_scenes_jp[][3] = { | |
| > {0x284037,0x284334,MSG_SCENE1}, | |
| > {0x141408,0x141936,MSG_SCENE2}, | |
| > {0x145317,0x145821,MSG_SCENE3}, | |
| > {0x173745,0x174574,MSG_SCENE4}, | |
| > {0x250774,0x251000,MSG_SCENE5}, | |
| > {0x255266,0x255853,MSG_SCENE6}, | |
| > {0x114172,0x114558,MSG_SCENE7}, | |
| > {0x072815,0x074943,MSG_SCENE8} | |
| > }; | |
| > int mgs_disk1_scenes_us[][3] = { | |
| > {0x284444,0x284770,MSG_SCENE1}, | |
| > {0x141817,0x142357,MSG_SCENE2}, | |
| > {0x145743,0x150240,MSG_SCENE3}, | |
| > {0x174225,0x175022,MSG_SCENE4}, | |
| > {0x251241,0x251435,MSG_SCENE5}, | |
| > {0x255753,0x260318,MSG_SCENE6}, | |
| > {0x114623,0x114969,MSG_SCENE7}, | |
| > {0x073234,0x075411,MSG_SCENE8} | |
| > }; | |
| > | |
| > void check_scenes(unsigned char arg1, unsigned char arg2, unsigned char arg3) { | |
| > int i,hit = 0; | |
| > int track = arg1 << 16 | arg2 << 8 | arg3; | |
| > | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP)) { | |
| > for (i = 0; i < sizeof(mgs_disk1_scenes_jp) / sizeof(mgs_disk1_scenes_jp[0]); i++) { | |
| > if ((track >= mgs_disk1_scenes_jp[i][0]) && (track <= mgs_disk1_scenes_jp[i][1])) { | |
| > hit = mgs_disk1_scenes_jp[i][2]; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (isTitleName(METAL_GEAR_SOLID_DISC_1_US)) { | |
| > for (i = 0; i < sizeof(mgs_disk1_scenes_us) / sizeof(mgs_disk1_scenes_us[0]); i++) { | |
| > if ((track >= mgs_disk1_scenes_us[i][0]) && (track <= mgs_disk1_scenes_us[i][1])) { | |
| > hit = mgs_disk1_scenes_us[i][2]; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > if (hit) { | |
| > set_scenes(hit); | |
| > } | |
| > else { | |
| > set_scenes(NO_SCENES); | |
| > } | |
| > } | |
| > | |
| > int wa_jp[][2] = { | |
| > {0x385031,0x411234} | |
| > }; | |
| > int wa_us[][2] = { | |
| > {0x385011,0x411741} | |
| > }; | |
| > | |
| > void check_scenesforSPU(unsigned char arg1, unsigned char arg2, unsigned char arg3) { | |
| > | |
| > int i, hit = 0; | |
| > int track = arg1 << 16 | arg2 << 8 | arg3; | |
| > | |
| > if (isTitleName(WILD_ARMS_US)) { | |
| > for (i = 0; i < sizeof(wa_us) / sizeof(wa_us[0]); i++) { | |
| > if ((track >= wa_us[i][0]) && (track <= wa_us[i][1])) { | |
| > hit = 1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > else if (isTitleName(WILD_ARMS_JP)) { | |
| > for (i = 0; i < sizeof(wa_jp) / sizeof(wa_jp[0]); i++) { | |
| > if ((track >= wa_jp[i][0]) && (track <= wa_jp[i][1])) { | |
| > hit = 1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > if (hit) { | |
| > scenes = 1; | |
| > } | |
| > else { | |
| > scenes = 0; | |
| > } | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/cdrom.h pcsx_rearmed_custom/libpcsxcore/cdrom.h | |
| 113a114,116 | |
| > extern int is_disc_change; | |
| > extern int is_nop_count; | |
| > extern int nop_cnt; | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/mdec.c pcsx_rearmed_custom/libpcsxcore/mdec.c | |
| 21a22 | |
| > #include "title.h" | |
| 625a627,631 | |
| > if (isTitleName(RIDGE_RACER_TYPE_4_EU) | |
| > || isTitleName(RIDGE_RACER_TYPE_4_JP) | |
| > || isTitleName(RIDGE_RACER_TYPE_4_US)) { | |
| > MDECOUTDMA_INT(words * 3.5); | |
| > } else { | |
| 628a635 | |
| > } | |
| 675a683,733 | |
| > if(Mode == 2) { | |
| > int iRetSize = sizeof(mdec.reg0) \ | |
| > + sizeof(mdec.reg1) \ | |
| > + sizeof(v) \ | |
| > + sizeof(v) \ | |
| > + sizeof(v) \ | |
| > + sizeof(mdec.block_buffer) \ | |
| > + sizeof(mdec.pending_dma1) \ | |
| > + sizeof(iq_y) \ | |
| > + sizeof(iq_uv); | |
| > | |
| > if(f) { | |
| > memcpy(f, &mdec.reg0, sizeof(mdec.reg0)); | |
| > f = (void *)((char *)f + sizeof(mdec.reg0)); | |
| > | |
| > memcpy(f, &mdec.reg1, sizeof(mdec.reg1)); | |
| > f = (void *)((char *)f + sizeof(mdec.reg1)); | |
| > | |
| > // old code used to save raw pointers.. | |
| > v = (u8 *)mdec.rl - base; | |
| > memcpy(f, &v, sizeof(v)); | |
| > f = (void *)((char *)f + sizeof(v)); | |
| > | |
| > v = (u8 *)mdec.rl_end - base; | |
| > memcpy(f, &v, sizeof(v)); | |
| > f = (void *)((char *)f + sizeof(v)); | |
| > | |
| > v = 0; | |
| > if (mdec.block_buffer_pos) | |
| > v = mdec.block_buffer_pos - base; | |
| > memcpy(f, &v, sizeof(v)); | |
| > f = (void *)((char *)f + sizeof(v)); | |
| > | |
| > mdec.block_buffer_pos = 0; | |
| > if (v) | |
| > mdec.block_buffer_pos = base + (v & 0xfffff); | |
| > | |
| > memcpy(f, &mdec.block_buffer, sizeof(mdec.block_buffer)); | |
| > f = (void *)((char *)f + sizeof(mdec.block_buffer)); | |
| > | |
| > memcpy(f, &mdec.pending_dma1, sizeof(mdec.pending_dma1)); | |
| > f = (void *)((char *)f + sizeof(mdec.pending_dma1)); | |
| > | |
| > memcpy(f, iq_y, sizeof(iq_y)); | |
| > f = (void *)((char *)f + sizeof(iq_y)); | |
| > | |
| > memcpy(f, iq_uv, sizeof(iq_uv)); | |
| > f = (void *)((char *)f + sizeof(iq_uv)); | |
| > } | |
| > return iRetSize; | |
| > } else { | |
| 701a760 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/misc.c pcsx_rearmed_custom/libpcsxcore/misc.c | |
| 28a29 | |
| > #include "title.h" | |
| 29a31,38 | |
| > #include "../frontend/menu.h" | |
| > #include "../frontend/main.h" | |
| > #include <dirent.h> | |
| > #include <pthread.h> | |
| > #include <sys/types.h> | |
| > #include <unistd.h> | |
| > #include <fcntl.h> | |
| > #include <time.h> | |
| 31a41 | |
| > char CdromId_old[10] = ""; | |
| 32a43,52 | |
| > char CdromLabel_old[33] = ""; | |
| > char CdromPath[MAXPATHLEN] = ""; | |
| > char CdromPath_old[MAXPATHLEN] = ""; | |
| > | |
| > int disc_change_type = 0; | |
| > static pthread_mutex_t statefile_mutex = PTHREAD_MUTEX_INITIALIZER; | |
| > pthread_t statefile_thread = (pthread_t)0; | |
| > int time_to_sync_state = 0; | |
| > | |
| > #define EXCLUSION_CONTROL | |
| 40a61,67 | |
| > #define MAX_ERROR_LEN 1024 | |
| > #define MAX_STATE_PATH_LEN 64 // sufficient size in the current operation | |
| > | |
| > struct error_info { | |
| > int id; | |
| > char message[MAX_ERROR_LEN]; | |
| > }; | |
| 55a83,470 | |
| > // Save State. | |
| > #define AUTO_SAVE_TO_HEAP_SECOND (2) | |
| > #define AUTO_SAVE_TO_FILE_COUNT ((10/AUTO_SAVE_TO_HEAP_SECOND) + 1) | |
| > #define BLOCKING_TIME (10) | |
| > | |
| > static struct timespec start_time = {0, 0}; | |
| > | |
| > typedef struct { | |
| > int enable; | |
| > int counting; | |
| > int num; | |
| > } disc_change_state; | |
| > | |
| > enum STATUS_RUNING{ | |
| > NOT_BUFF_INITIALIZED = 0, /* status: not get memory */ | |
| > BUFF_INITIALIZED, /* status: memory is ready ,only menu setting is ON */ | |
| > CONFIG_SET_OFF /* status: when menu setting is OFF */ | |
| > }; | |
| > | |
| > typedef struct { | |
| > unsigned char* Buff; | |
| > int Size; | |
| > }data_buff_t; | |
| > | |
| > typedef struct { | |
| > data_buff_t ScreenPic; | |
| > data_buff_t BIOS; | |
| > data_buff_t GPU; | |
| > data_buff_t SPU; /* not write to file */ | |
| > data_buff_t SPU1; /* size is not const */ | |
| > data_buff_t SIO; | |
| > data_buff_t CDR; | |
| > data_buff_t PSXHW; | |
| > data_buff_t PSXRCNT; | |
| > data_buff_t MDEC; | |
| > data_buff_t NewDyna; /* size is not const */ | |
| > int iNewDynaValidDataSize; | |
| > int Num; | |
| > }state_data_t; | |
| > | |
| > static state_data_t g_stateData[AUTO_SAVE_TO_FILE_COUNT]; | |
| > static disc_change_state dcstateData[AUTO_SAVE_TO_FILE_COUNT] = {0}; | |
| > static int gLastCount = 0; | |
| > static int gFilledNum = 0; | |
| > static int gBuffInitialized = NOT_BUFF_INITIALIZED; | |
| > static int resume_play = 0; | |
| > static int blocking_count = 0; | |
| > int memcardResetFlag = 0; | |
| > unsigned int memcardFlagOld = 0; | |
| > | |
| > static char stateid[AUTO_SAVE_TO_FILE_COUNT][10]; | |
| > int isUnknownCdrom = 1; | |
| > int holdResetEvent = 0; | |
| > | |
| > void LogPrint(char* title1, int data){ | |
| > struct timeval myTime; | |
| > gettimeofday(&myTime, NULL); | |
| > printf("[%d.%6d] :%s, %d \n", myTime.tv_sec, myTime.tv_usec,title1, data ); | |
| > } | |
| > #define xprintf //printf | |
| > #define LOG_Print //LogPrint | |
| > | |
| > static int lock_statefile_mutex(void) | |
| > { | |
| > #ifdef EXCLUSION_CONTROL | |
| > int ret; | |
| > | |
| > ret = pthread_mutex_lock(&statefile_mutex); | |
| > if (ret != 0) { | |
| > printf("ERROR: failed to lock the mutex\n"); | |
| > return -1; | |
| > } | |
| > #endif | |
| > return 0; | |
| > } | |
| > | |
| > static int unlock_statefile_mutex(void) | |
| > { | |
| > #ifdef EXCLUSION_CONTROL | |
| > int ret; | |
| > | |
| > ret = pthread_mutex_unlock(&statefile_mutex); | |
| > if (ret != 0) { | |
| > printf("ERROR: failed to unlock the mutex\n"); | |
| > return -1; | |
| > } | |
| > #endif | |
| > return 0; | |
| > } | |
| > | |
| > static int write_statefile(struct error_info *err) | |
| > { | |
| > pid_t pid; | |
| > int status_num = 1; | |
| > int fd; | |
| > struct dirent **entry_list; | |
| > int entry_num; | |
| > int i, ret; | |
| > char file_name[MAX_STATE_PATH_LEN], buff[MAX_ERROR_LEN]; | |
| > char *ext; | |
| > | |
| > int error_id; | |
| > char error_msg[MAX_ERROR_LEN]; | |
| > | |
| > error_id = err->id; | |
| > strcpy(error_msg, err->message); | |
| > free(err); | |
| > | |
| > ret = lock_statefile_mutex(); | |
| > if (ret < 0) { | |
| > return -1; | |
| > } | |
| > | |
| > entry_num = scandir(STATUS_DIR, &entry_list, NULL, alphasort); | |
| > for (i=0; i<entry_num; i++) { | |
| > ext = strrchr(entry_list[i]->d_name, '.'); | |
| > ret = strcmp(ext, ".sts"); | |
| > if (ret == 0) { | |
| > status_num++; | |
| > } | |
| > } | |
| > sprintf(buff, "%03d.sts", status_num); | |
| > sprintf(file_name, "%s%s", STATUS_DIR, buff); | |
| > fd = open(file_name, O_WRONLY | O_CREAT, 0644); | |
| > if (fd < 0) { | |
| > printf("ERROR: failed to open a state file:%s\n", file_name); | |
| > unlock_statefile_mutex(); | |
| > return -1; | |
| > } | |
| > | |
| > sprintf(buff, "%d\n%s", error_id, error_msg); | |
| > ret = write(fd, buff, strlen(buff)); | |
| > if (fd < 0) { | |
| > printf("ERROR: failed to write a state file:%s\n", file_name); | |
| > close(fd); | |
| > unlock_statefile_mutex(); | |
| > return -1; | |
| > } | |
| > | |
| > fsync(fd); | |
| > close(fd); | |
| > unlock_statefile_mutex(); | |
| > | |
| > return 0; | |
| > } | |
| > | |
| > int save_error(int error_id, char *error_msg) | |
| > { | |
| > int ret; | |
| > struct error_info *err; | |
| > | |
| > err = malloc(sizeof(struct error_info)); | |
| > bzero(err, sizeof(struct error_info)); | |
| > err->id = error_id; | |
| > strncpy(err->message, error_msg, MAX_ERROR_LEN-1); | |
| > | |
| > pthread_attr_t thread_attr; | |
| > pthread_attr_init(&thread_attr); | |
| > pthread_attr_setdetachstate(&thread_attr , PTHREAD_CREATE_DETACHED); | |
| > | |
| > ret = pthread_create(&statefile_thread, &thread_attr, write_statefile, err); | |
| > pthread_attr_destroy(&thread_attr); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static int setTileScreenAdjust(){ | |
| > int ret = isTitleName(COLIN_MCRAE_RALLY_EU) | |
| > || isTitleName(CRASH_BANDICOOT_2_EU) | |
| > || isTitleName(CRASH_BANDICOOT_2_JP) | |
| > || isTitleName(CRASH_BANDICOOT_2_US) | |
| > || isTitleName(DESTRUCTION_DERBY_EU) | |
| > || isTitleName(DESTRUCTION_DERBY_US) | |
| > || isTitleName(DISNEY_TOY_STORY_2_EU) | |
| > || isTitleName(DRIVER_EU) | |
| > || isTitleName(DRIVER_US) | |
| > || isTitleName(EHRGEIZ_JP) | |
| > || isTitleName(FIGHTING_FORCE_US) | |
| > || isTitleName(GRAND_THEFT_AUTO_2_EU) | |
| > || isTitleName(GRAND_THEFT_AUTO_2_US) | |
| > || isTitleName(HARRY_POTTER_AND_THE_PHILOSOPHERS_STONE_EU) | |
| > || isTitleName(KLONOA_DOOR_TO_PHANTAMILE_JP) | |
| > || isTitleName(KLONOA_DOOR_TO_PHANTAMILE_US) | |
| > || isTitleName(KULA_WORLD_EU) | |
| > || isTitleName(MEDIEVIL_EU) | |
| > || isTitleName(MEDIEVIL_US) | |
| > || isTitleName(MR_DRILLER_EU) | |
| > || isTitleName(MR_DRILLER_G_JP) | |
| > || isTitleName(MR_DRILLER_JP) | |
| > || isTitleName(MR_DRILLER_US) | |
| > || isTitleName(PARASITE_EVE_DISC_1_JP) | |
| > || isTitleName(PARASITE_EVE_DISC_1_US) | |
| > || isTitleName(PARASITE_EVE_DISC_2_JP) | |
| > || isTitleName(PARASITE_EVE_DISC_2_US) | |
| > || isTitleName(RAY_STORM_JP) | |
| > || isTitleName(RIDGE_RACER_TYPE_4_EU) | |
| > || isTitleName(RIDGE_RACER_TYPE_4_JP) | |
| > || isTitleName(RIDGE_RACER_TYPE_4_US) | |
| > || isTitleName(SILENT_HILL_EU) | |
| > || isTitleName(SILENT_HILL_JP) | |
| > || isTitleName(SILENT_HILL_US) | |
| > || isTitleName(SPEC_OPS_STEALTH_PATROL_US) | |
| > || isTitleName(STREET_FIGHTER_ALPHA_3_US) | |
| > || isTitleName(STREET_FIGHTER_EX_PLUS_EU) | |
| > || isTitleName(STREET_FIGHTER_EX_PLUS_JP) | |
| > || isTitleName(STREET_FIGHTER_EX_PLUS_US) | |
| > || isTitleName(TEKKEN3_JP) | |
| > || isTitleName(TOM_CLANCYS_RAINBOW_SIX_EU) | |
| > || isTitleName(TOMB_RAIDER_2_EU) | |
| > || isTitleName(TOMB_RAIDER_2_JP) | |
| > || isTitleName(TOMB_RAIDER_2_US) | |
| > || isTitleName(TOMB_RAIDER_EU) | |
| > || isTitleName(TOMB_RAIDER_JP) | |
| > || isTitleName(TOMB_RAIDER_US) | |
| > || isTitleName(TOMBA_JP) | |
| > || isTitleName(TOMBA_US) | |
| > || isTitleName(XEVIOUS_3D_G_JP) | |
| > || isTitleName(XEVIOUS_3D_G_US); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_SCREEN_ADJUST, ret); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleIsFF7(){ | |
| > int ret = isTitleName(FINAL_FANTANSY_VII_DICS_1_EU) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_1_JP) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_1_US) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_2_EU) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_2_JP) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_2_US) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_3_EU) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_3_JP) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_3_US) | |
| > || isTitleName(FINAL_FANTANSY_VII_DICS_4_JP); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_IS_FF7, ret); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleIsMrDriller(){ | |
| > int ret = isTitleName(MR_DRILLER_EU) | |
| > || isTitleName(MR_DRILLER_G_JP) | |
| > || isTitleName(MR_DRILLER_JP) | |
| > || isTitleName(MR_DRILLER_US); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_IS_MR_DRILLER, ret); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleIsMrDrillerJp(){ | |
| > int ret = isTitleName(MR_DRILLER_JP); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_IS_MR_DRILLER_JP, ret); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleAddVram2(){ | |
| > int ret = isTitleName(METAL_GEAR_SOLID_DISC_1_EU) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_1_JP) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_1_US) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_2_EU) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_2_JP) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_2_US); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_ADD_VRAM2, ret); | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleBO(){ | |
| > int ret = isTitleName(METAL_GEAR_SOLID_DISC_1_JP) | |
| > || isTitleName(METAL_GEAR_SOLID_DISC_1_US); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_ADD_BO, ret); | |
| > return ret; | |
| > } | |
| > | |
| > static int setTitleIsARCTHELAD(){ | |
| > int ret = isTitleName(ARC_THE_LAD_JP) | |
| > || isTitleName(ARC_THE_LAD_2_JP); | |
| > | |
| > if(GPU_setPatchFlag) | |
| > GPU_setPatchFlag(GPU_PATCH_ARC_THE_LAD, ret); | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > int isTitleName(enum TITLE_NAME argTitleName) | |
| > { | |
| > return (g_eTitleName == argTitleName) ? 1 : 0; | |
| > } | |
| > | |
| > void initTitleName(void) { | |
| > g_eTitleName = TITLE_NAME_NONE; | |
| > } | |
| > | |
| > void setTitleName(void) { | |
| > int i = 0; | |
| > | |
| > initTitleName(); | |
| > setCdromId(); | |
| > while(*(stTitleList[i].m_cpCdromId)) { | |
| > if(strcmp(stTitleList[i].m_cpCdromId , CdromId) == 0) { | |
| > g_eTitleName = stTitleList[i].m_eTitleName; | |
| > break; | |
| > } | |
| > i++; | |
| > } | |
| > setTileScreenAdjust(); | |
| > setTitleIsFF7(); | |
| > setTitleIsMrDriller(); | |
| > setTitleIsMrDrillerJp(); | |
| > setTitleAddVram2(); | |
| > setTitleBO(); | |
| > setTitleIsARCTHELAD(); | |
| > } | |
| > | |
| > void setCdromId(void) { | |
| > char * fileName = strrchr(GetIsoFile(), '/'); | |
| > int c = 0; | |
| > for (int i = 0; i < strlen(fileName); ++i) { | |
| > if (fileName[i] == '.' || c >= sizeof(CdromId) - 1) { | |
| > break; | |
| > } | |
| > if (isalnum(fileName[i])) { | |
| > CdromId[c++] = fileName[i]; | |
| > } | |
| > } | |
| > } | |
| > | |
| > void setDiscChangeType() | |
| > { | |
| > int i, n, ret, cd_num; | |
| > char title_dir_path[128]; | |
| > char *ext, *p; | |
| > struct dirent **namelist; | |
| > | |
| > // get title directory path | |
| > strcpy(title_dir_path, GetIsoFile()); | |
| > p = strrchr(title_dir_path, '/'); | |
| > if (p != NULL) { | |
| > *p = 0; | |
| > } | |
| > | |
| > // count number of .cue file | |
| > n = scandir(title_dir_path, &namelist, NULL, NULL); | |
| > cd_num = 0; | |
| > for (i=0; i<n; i++) { | |
| > ext = strrchr(namelist[i]->d_name, '.'); | |
| > ret = strcmp(ext, ".cue"); | |
| > if (ret == 0) { | |
| > cd_num++; | |
| > } | |
| > } | |
| > | |
| > if (cd_num <= 1) { | |
| > disc_change_type = 0; | |
| > } | |
| > #if 0 | |
| > else if (isTitleName(DUMMY_TITLE_1)) { | |
| > disc_change_type = 2; | |
| > } | |
| > else if (isTitleName(DUMMY_TITLE_2)) { | |
| > disc_change_type = 3; | |
| > } | |
| > else if (isTitleName(DUMMY_TITLE_3)) { | |
| > disc_change_type = 4; | |
| > } | |
| > else if (isTitleName(DUMMY_TITLE_4)) { | |
| > disc_change_type = 5; | |
| > } | |
| > #endif | |
| > else { | |
| > disc_change_type = 1; | |
| > } | |
| > | |
| > return; | |
| > } | |
| > | |
| 109a525,538 | |
| > void StartCheckOpen(void) { | |
| > clock_gettime(CLOCK_MONOTONIC, &start_time); | |
| > } | |
| > | |
| > int CheckOpenEnabled(void) { | |
| > struct timespec current_time; | |
| > | |
| > clock_gettime(CLOCK_MONOTONIC, ¤t_time); | |
| > if (resume_play || current_time.tv_sec - start_time.tv_sec > open_invalid_time) { | |
| > return 1; | |
| > } | |
| > return 0; | |
| > } | |
| > | |
| 185c614 | |
| < psxRegs.pc = psxRegs.GPR.n.ra; | |
| --- | |
| > //psxRegs.pc = psxRegs.GPR.n.ra; | |
| 316a746,747 | |
| > initTitleName(); | |
| > | |
| 366,367c797 | |
| < if (CdromId[0] == '\0') { | |
| < len = strlen(exename); | |
| --- | |
| > char * fileName = strrchr(GetIsoFile(), '/'); | |
| 369,370c799,800 | |
| < for (i = 0; i < len; ++i) { | |
| < if (exename[i] == ';' || c >= sizeof(CdromId) - 1) | |
| --- | |
| > for (i = 0; i < strlen(fileName); ++i) { | |
| > if (fileName[i] == '.' || c >= sizeof(CdromId) - 1) | |
| 372,374c802,803 | |
| < if (isalnum(exename[i])) | |
| < CdromId[c++] = exename[i]; | |
| < } | |
| --- | |
| > if (isalnum(fileName[i])) | |
| > CdromId[c++] = fileName[i]; | |
| 392a822,832 | |
| > strncpy(CdromPath, GetIsoFile(), sizeof(CdromPath)); | |
| > if (CdromPath_old[0] == '\0' || CdromLabel_old[0] == '\0' || CdromId_old[0] == '\0' || !(g_opts & OPT_AUTOSAVE)) { | |
| > strncpy(CdromPath_old, CdromPath, sizeof(CdromPath)); | |
| > strncpy(CdromLabel_old, CdromLabel, sizeof(CdromLabel)); | |
| > strncpy(CdromId_old, CdromId, sizeof(CdromId)); | |
| > } | |
| > if (holdResetEvent) { | |
| > emu_set_action(SACTION_RESET_EVENT); | |
| > holdResetEvent = 0; | |
| > } | |
| > isUnknownCdrom = 0; | |
| 394a835,837 | |
| > setTitleName(); | |
| > | |
| > setDiscChangeType(); | |
| 528a972,977 | |
| > static void *fadein(void* param) { | |
| > SPU_fadein(); | |
| > | |
| > return; | |
| > } | |
| > | |
| 575c1024 | |
| < | |
| --- | |
| > xprintf("SaveState to file [%s] \n", file); | |
| 619a1069,1074 | |
| > // disc change state | |
| > disc_change_state current_state = {is_disc_change, is_nop_count, nop_cnt}; | |
| > SaveFuncs.write(f, ¤t_state, sizeof(disc_change_state)); | |
| > | |
| > int fd = fileno(f); | |
| > fsync(fd); | |
| 626a1082,1522 | |
| > state_data_t* getSaveStateArray(int count) { | |
| > if (count < 0 || count >= AUTO_SAVE_TO_FILE_COUNT) return NULL; | |
| > | |
| > state_data_t* buff = (state_data_t* )&g_stateData[count]; | |
| > return buff; | |
| > } | |
| > | |
| > int SaveStateWork(void * fname) { | |
| > | |
| > xprintf("SaveStateWork g_opts & OPT_AUTOSAVE [%d] \n", g_opts & OPT_AUTOSAVE); | |
| > if ((g_opts & OPT_AUTOSAVE) == 0) { | |
| > return SaveState(fname); | |
| > } | |
| > int old_index; | |
| > | |
| > if (gFilledNum <= 0) { | |
| > xprintf("SaveStateWork gFilledNum [%d] \n", gFilledNum); | |
| > return -1; | |
| > } | |
| > else if (gFilledNum < AUTO_SAVE_TO_FILE_COUNT) { | |
| > if (resume_play) { | |
| > return -1; | |
| > } | |
| > old_index = 0; | |
| > } | |
| > else { | |
| > if (gLastCount < AUTO_SAVE_TO_FILE_COUNT) { | |
| > old_index = gLastCount; | |
| > } | |
| > else { | |
| > old_index = 0; | |
| > } | |
| > } | |
| > | |
| > xprintf("SaveStateWork old_index [%d] , gLastCount [%d], gFilledNum[%d] \n", old_index, gLastCount, gFilledNum); | |
| > | |
| > void *f = SaveFuncs.open(fname, "wb"); | |
| > if (f == NULL) { | |
| > printf("SaveStateWork file open failed!! [%s] \n", fname); | |
| > return -1; | |
| > } | |
| > | |
| > state_data_t * pData = getSaveStateArray(old_index); | |
| > if (pData == NULL) { | |
| > printf("SaveStateWork getSaveStateArray failed!![%d] \n", old_index); | |
| > return -1; | |
| > } | |
| > disc_change_state save_state = dcstateData[old_index]; | |
| > | |
| > if (pData->ScreenPic.Buff) SaveFuncs.write(f, (void *)pData->ScreenPic.Buff, pData->ScreenPic.Size); | |
| > if (pData->BIOS.Buff) SaveFuncs.write(f, (void *)pData->BIOS.Buff, pData->BIOS.Size); | |
| > if (pData->GPU.Buff) SaveFuncs.write(f, (void *)pData->GPU.Buff, pData->GPU.Size); | |
| > if (pData->SPU.Buff) SaveFuncs.write(f, (void *)pData->SPU.Buff, pData->SPU.Size); | |
| > if (pData->SPU1.Buff) SaveFuncs.write(f, (void *)pData->SPU1.Buff, pData->SPU1.Size); | |
| > if (pData->SIO.Buff) SaveFuncs.write(f, (void *)pData->SIO.Buff, pData->SIO.Size); | |
| > if (pData->CDR.Buff) SaveFuncs.write(f, (void *)pData->CDR.Buff, pData->CDR.Size); | |
| > if (pData->PSXHW.Buff) SaveFuncs.write(f, (void *)pData->PSXHW.Buff, pData->PSXHW.Size); | |
| > if (pData->PSXRCNT.Buff) SaveFuncs.write(f, (void *)pData->PSXRCNT.Buff, pData->PSXRCNT.Size); | |
| > if (pData->MDEC.Buff) SaveFuncs.write(f, (void *)pData->MDEC.Buff, pData->MDEC.Size); | |
| > if (pData->NewDyna.Buff) SaveFuncs.write(f, (void *)pData->NewDyna.Buff, pData->iNewDynaValidDataSize); | |
| > | |
| > xprintf("SaveStateWork ScreenPic [%d] \n", pData->ScreenPic.Size); | |
| > xprintf("SaveStateWork BIOS [%d] \n", pData->BIOS.Size); | |
| > xprintf("SaveStateWork GPU [%d] \n", pData->GPU.Size); | |
| > xprintf("SaveStateWork SPU [%d] \n", pData->SPU.Size); | |
| > xprintf("SaveStateWork SPU1 [%d] \n", pData->SPU1.Size); | |
| > xprintf("SaveStateWork SIO [%d] \n", pData->SIO.Size); | |
| > xprintf("SaveStateWork CDR [%d] \n", pData->CDR.Size); | |
| > xprintf("SaveStateWork PSXHW [%d] \n", pData->PSXHW.Size); | |
| > xprintf("SaveStateWork PSXRCNT [%d] \n", pData->PSXRCNT.Size); | |
| > xprintf("SaveStateWork MDEC [%d] \n", pData->MDEC.Size); | |
| > xprintf("SaveStateWork NewDyna [%d] \n", pData->NewDyna.Size); | |
| > xprintf("SaveStateWork Num [%d] \n", pData->Num); | |
| > | |
| > SaveFuncs.write(f, (void *)&save_state, sizeof(disc_change_state)); | |
| > | |
| > int fd = fileno(f); | |
| > fsync(fd); | |
| > SaveFuncs.close(f); | |
| > | |
| > return 0; | |
| > } | |
| > | |
| > int freeSaveStateMem(state_data_t * buff) { | |
| > | |
| > if (buff == NULL) return -1; | |
| > | |
| > if (buff->ScreenPic.Buff) free(buff->ScreenPic.Buff); | |
| > if (buff->BIOS.Buff) free(buff->BIOS.Buff); | |
| > if (buff->GPU.Buff) free(buff->GPU.Buff); | |
| > if (buff->SPU.Buff) free(buff->SPU.Buff); | |
| > if (buff->SPU1.Buff) free(buff->SPU1.Buff); | |
| > if (buff->SIO.Buff) free(buff->SIO.Buff); | |
| > if (buff->CDR.Buff) free(buff->CDR.Buff); | |
| > if (buff->PSXHW.Buff) free(buff->PSXHW.Buff); | |
| > if (buff->PSXRCNT.Buff) free(buff->PSXRCNT.Buff); | |
| > if (buff->MDEC.Buff) free(buff->MDEC.Buff); | |
| > if (buff->NewDyna.Buff) free(buff->NewDyna.Buff); | |
| > | |
| > buff->ScreenPic.Buff = NULL; | |
| > buff->BIOS.Buff = NULL; | |
| > buff->GPU.Buff = NULL; | |
| > buff->SPU.Buff = NULL; | |
| > buff->SPU1.Buff = NULL; | |
| > buff->SIO.Buff = NULL; | |
| > buff->CDR.Buff = NULL; | |
| > buff->PSXHW.Buff = NULL; | |
| > buff->PSXRCNT.Buff = NULL; | |
| > buff->MDEC.Buff = NULL; | |
| > buff->NewDyna.Buff = NULL; | |
| > | |
| > return 0; | |
| > } | |
| > | |
| > int SetCdromId(void) { | |
| > int oldest_index = 0; | |
| > int ret; | |
| > | |
| > if (gFilledNum < 0) { | |
| > return -1; | |
| > } | |
| > else if (gFilledNum < AUTO_SAVE_TO_FILE_COUNT - 1) { | |
| > oldest_index = 0; | |
| > } | |
| > else { | |
| > oldest_index = gLastCount + 1; | |
| > if (oldest_index >= AUTO_SAVE_TO_FILE_COUNT) { | |
| > oldest_index = 0; | |
| > } | |
| > } | |
| > | |
| > ret = strncmp(stateid[oldest_index], CdromId, sizeof(CdromId)); | |
| > if (!ret) { | |
| > ret = strncmp(CdromId_old, CdromId, sizeof(CdromId)); | |
| > if (ret) { | |
| > strncpy(CdromPath_old, CdromPath, sizeof(CdromPath)); | |
| > strncpy(CdromLabel_old, CdromLabel, sizeof(CdromLabel)); | |
| > strncpy(CdromId_old, CdromId, sizeof(CdromId)); | |
| > } | |
| > } | |
| > | |
| > return 0; | |
| > } | |
| > | |
| > int AutoSaveState(int count) { | |
| > int Size; | |
| > unsigned char *pMem; | |
| > if (count >= AUTO_SAVE_TO_FILE_COUNT || count < 0) | |
| > return -1; | |
| > | |
| > state_data_t * pStateData = getSaveStateArray(count); | |
| > if (pStateData == NULL) | |
| > return -1; | |
| > | |
| > new_dyna_before_save(); | |
| > | |
| > pMem = pStateData->ScreenPic.Buff; | |
| > memcpy(pMem, (unsigned char *)PcsxHeader, 32); | |
| > pMem += 32; | |
| > memcpy(pMem, (unsigned char *)&SaveVersion, sizeof(u32)); | |
| > pMem += sizeof(u32); | |
| > memcpy(pMem, (unsigned char *)&Config.HLE, sizeof(boolean)); | |
| > pMem += sizeof(boolean); | |
| > GPU_getScreenPic(pMem); | |
| > | |
| > | |
| > if (Config.HLE) | |
| > psxBiosFreeze(1); | |
| > | |
| > pMem = pStateData->BIOS.Buff; | |
| > memcpy(pMem, (unsigned char *)psxM, 0x00200000); | |
| > pMem += 0x00200000; | |
| > memcpy(pMem, (unsigned char *)psxR, 0x00080000); | |
| > pMem += 0x00080000; | |
| > memcpy(pMem, (unsigned char *)psxH, 0x00010000); | |
| > pMem += 0x00010000; | |
| > memcpy(pMem, (unsigned char *)&psxRegs, sizeof(psxRegs)); | |
| > | |
| > // gpu | |
| > GPUFreeze_t *gpufP = (GPUFreeze_t *)pStateData->GPU.Buff; | |
| > gpufP->ulFreezeVersion = 1; | |
| > GPU_freeze(1, gpufP); | |
| > | |
| > // spu | |
| > char ca[16]; | |
| > SPUFreeze_t *spufP = (SPUFreeze_t *) ca; | |
| > SPU_freeze(2, spufP, psxRegs.cycle); | |
| > Size = spufP->Size; | |
| > memcpy(pStateData->SPU.Buff, &Size, pStateData->SPU.Size); | |
| > | |
| > spufP = (SPUFreeze_t *) pStateData->SPU1.Buff; | |
| > SPU_freeze(1, spufP, psxRegs.cycle); | |
| > | |
| > sioFreeze(pStateData->SIO.Buff, 2); | |
| > cdrFreeze(pStateData->CDR.Buff, 2); | |
| > psxHwFreeze(pStateData->PSXHW.Buff, 2); | |
| > psxRcntFreeze(pStateData->PSXRCNT.Buff, 2); | |
| > mdecFreeze(pStateData->MDEC.Buff, 2); | |
| > | |
| > pStateData->iNewDynaValidDataSize = new_dyna_freeze(pStateData->NewDyna.Buff, 2); | |
| > | |
| > xprintf("AutoSaveState ScreenPic [%d] \n", pStateData->ScreenPic.Size); | |
| > xprintf("AutoSaveState BIOS [%d] \n", pStateData->BIOS.Size); | |
| > xprintf("AutoSaveState GPU [%d] \n", pStateData->GPU.Size); | |
| > xprintf("AutoSaveState SPU [%d] \n", pStateData->SPU.Size); | |
| > xprintf("AutoSaveState SPU1 [%d] \n", pStateData->SPU1.Size); | |
| > xprintf("AutoSaveState NewDyna [%d] \n", pStateData->iNewDynaValidDataSize); | |
| > xprintf("AutoSaveState Num [%d] \n", pStateData->Num); | |
| > | |
| > disc_change_state current_state = {is_disc_change, is_nop_count, nop_cnt}; | |
| > dcstateData[count] = current_state; | |
| > | |
| > if (CdromId[0] != '\0') { | |
| > strncpy(stateid[count], CdromId, sizeof(CdromId)); | |
| > } | |
| > else { | |
| > strncpy(stateid[count], CdromId_old, sizeof(CdromId_old)); | |
| > } | |
| > SetCdromId(); | |
| > | |
| > new_dyna_after_save(); | |
| > return 0; | |
| > } | |
| > | |
| > int InitAutoSave(void) { | |
| > int ret = 0; | |
| > gFilledNum = 0; | |
| > gLastCount = 0; | |
| > memset((unsigned char *)g_stateData, 0, sizeof(g_stateData)); | |
| > | |
| > state_data_t * pStateData = NULL; | |
| > for (int i=0;i<AUTO_SAVE_TO_FILE_COUNT;i++) { | |
| > pStateData = getSaveStateArray(i); | |
| > if (pStateData == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > freeSaveStateMem(pStateData); | |
| > | |
| > int size; | |
| > unsigned char *pMem; | |
| > | |
| > size = 32 + sizeof(u32) + sizeof(boolean) + 128 * 96 * 3; | |
| > pMem = (unsigned char *)malloc(size); | |
| > if (pStateData == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->ScreenPic.Buff = pMem; | |
| > pStateData->ScreenPic.Size = size; | |
| > | |
| > size = 0x00200000 + 0x00080000 + 0x00010000 + sizeof(psxRegs); | |
| > pMem = (unsigned char *)malloc(size); | |
| > if (pMem == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->BIOS.Buff = pMem; | |
| > pStateData->BIOS.Size = size; | |
| > | |
| > size = sizeof(GPUFreeze_t); | |
| > pMem = (unsigned char *)malloc(size); | |
| > if (pMem == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > pStateData->GPU.Buff = pMem; | |
| > pStateData->GPU.Size = size; | |
| > | |
| > size = 4; | |
| > pMem = (unsigned char *)malloc(size); | |
| > if (pMem == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->SPU.Buff = pMem; | |
| > pStateData->SPU.Size = size; | |
| > | |
| > pStateData->SPU1.Size = SPU_freeze(2, (void *)0, 0); | |
| > pStateData->SPU1.Buff = (unsigned char *)malloc(pStateData->SPU1.Size); | |
| > if (pStateData->SPU1.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->SIO.Size = sioFreeze((void *)0, 2); | |
| > pStateData->SIO.Buff = (unsigned char *)malloc(pStateData->SIO.Size); | |
| > if (pStateData->SIO.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->CDR.Size = cdrFreeze((void *)0, 2); | |
| > pStateData->CDR.Buff = (unsigned char *)malloc(pStateData->CDR.Size); | |
| > if (pStateData->CDR.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->PSXHW.Size = psxHwFreeze((void *)0, 2); | |
| > pStateData->PSXHW.Buff = (unsigned char *)malloc(pStateData->PSXHW.Size); | |
| > if (pStateData->PSXHW.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->PSXRCNT.Size = psxRcntFreeze((void *)0, 2); | |
| > pStateData->PSXRCNT.Buff = (unsigned char *)malloc(pStateData->PSXRCNT.Size); | |
| > if (pStateData->PSXRCNT.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->MDEC.Size = mdecFreeze((void *)0, 2); | |
| > pStateData->MDEC.Buff = (unsigned char *)malloc(pStateData->MDEC.Size); | |
| > if (pStateData->MDEC.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->NewDyna.Size = new_dyna_freeze((void *)0, 2); | |
| > pStateData->NewDyna.Buff = (unsigned char *)malloc(pStateData->NewDyna.Size); | |
| > if (pStateData->NewDyna.Buff == NULL) { | |
| > ret = -1; | |
| > break; | |
| > } | |
| > | |
| > pStateData->Num = i; | |
| > } | |
| > | |
| > if (ret == -1) { | |
| > for (int i=0; i<AUTO_SAVE_TO_FILE_COUNT; i++) { | |
| > pStateData = getSaveStateArray(i); | |
| > freeSaveStateMem(pStateData); | |
| > } | |
| > printf("InitAutoSave malloc failed! \n"); | |
| > } | |
| > else { | |
| > gBuffInitialized = BUFF_INITIALIZED; | |
| > /* wait for 2s when starting */ | |
| > printf("InitAutoSave malloc OK! \n"); | |
| > } | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > void emu_sync_state(void) { | |
| > static struct timespec formerTimeSpec = {0, 0}; | |
| > struct timespec currentTimeSpec; | |
| > struct timespec intervalTimeSpec; | |
| > | |
| > if ((g_opts & OPT_AUTOSAVE) == 0) { | |
| > if (BUFF_INITIALIZED == gBuffInitialized) { | |
| > xprintf("OPT_AUTOSAVE OFF! \n"); | |
| > gLastCount = 0; | |
| > gFilledNum = 0; | |
| > gBuffInitialized = CONFIG_SET_OFF; | |
| > } | |
| > // check interval time | |
| > clock_gettime(CLOCK_MONOTONIC, ¤tTimeSpec); | |
| > if((formerTimeSpec.tv_sec == 0) && (formerTimeSpec.tv_nsec == 0)) { | |
| > memcpy(&formerTimeSpec, ¤tTimeSpec, sizeof(struct timespec)); | |
| > } | |
| > | |
| > intervalTimeSpec.tv_sec = currentTimeSpec.tv_sec - formerTimeSpec.tv_sec; | |
| > if((currentTimeSpec.tv_nsec - formerTimeSpec.tv_nsec) < 0){ | |
| > intervalTimeSpec.tv_sec --; | |
| > } | |
| > | |
| > if(intervalTimeSpec.tv_sec < AUTO_SAVE_TO_HEAP_SECOND) { | |
| > return; | |
| > } | |
| > memcpy(&formerTimeSpec, ¤tTimeSpec, sizeof(struct timespec)); | |
| > if ((memcardFlag==0)&&(memcardFlagOld==0)&&(memcardResetFlag==1)) { | |
| > emu_set_action(SACTION_RESET_EVENT); | |
| > memcardResetFlag = 0; | |
| > } | |
| > memcardFlagOld = memcardFlag; //Memory Card Flag Save | |
| > memcardFlag = 0; //Memory Card Flag Clear | |
| > return; | |
| > } | |
| > if (NOT_BUFF_INITIALIZED == gBuffInitialized) { | |
| > if (InitAutoSave() == -1) return; | |
| > } | |
| > else if (CONFIG_SET_OFF == gBuffInitialized) { | |
| > xprintf("OPT_AUTOSAVE ON! \n"); | |
| > gBuffInitialized = BUFF_INITIALIZED; | |
| > } | |
| > | |
| > // check interval time | |
| > clock_gettime(CLOCK_MONOTONIC, ¤tTimeSpec); | |
| > if((formerTimeSpec.tv_sec == 0) && (formerTimeSpec.tv_nsec == 0)) { | |
| > memcpy(&formerTimeSpec, ¤tTimeSpec, sizeof(struct timespec)); | |
| > } | |
| > | |
| > intervalTimeSpec.tv_sec = currentTimeSpec.tv_sec - formerTimeSpec.tv_sec; | |
| > if((currentTimeSpec.tv_nsec - formerTimeSpec.tv_nsec) < 0){ | |
| > intervalTimeSpec.tv_sec --; | |
| > } | |
| > | |
| > if(intervalTimeSpec.tv_sec < AUTO_SAVE_TO_HEAP_SECOND) { | |
| > return; | |
| > } | |
| > memcpy(&formerTimeSpec, ¤tTimeSpec, sizeof(struct timespec)); | |
| > | |
| > // Don't get the status while displaying the BIOS screen. | |
| > if (!resume_play && AUTO_SAVE_TO_HEAP_SECOND * blocking_count < BLOCKING_TIME) { | |
| > blocking_count++; | |
| > return; | |
| > } | |
| > | |
| > if (memcardFlag == 0) { | |
| > time_to_sync_state = 1; | |
| > } | |
| > if ((memcardFlag==0)&&(memcardFlagOld==0)&&(memcardResetFlag==1)) { | |
| > emu_set_action(SACTION_RESET_EVENT); | |
| > memcardResetFlag = 0; | |
| > } | |
| > memcardFlagOld = memcardFlag; | |
| > memcardFlag = 0; | |
| > } | |
| > | |
| > void emu_sync_state2(void) { | |
| > int count = gLastCount; | |
| > LOG_Print("emu_sync_state start", count); | |
| > if(AutoSaveState(count) == 0) { | |
| > if (gFilledNum < AUTO_SAVE_TO_FILE_COUNT) { | |
| > gFilledNum ++; | |
| > } | |
| > count += 1; | |
| > if (count >= AUTO_SAVE_TO_FILE_COUNT) { | |
| > count = 0; | |
| > } | |
| > gLastCount = count; | |
| > } | |
| > LOG_Print("emu_sync_state end", count); | |
| > } | |
| > | |
| 634a1531 | |
| > disc_change_state last_state; | |
| 642d1538 | |
| < | |
| 677a1574,1575 | |
| > xprintf("LoadState spu Size [0x%d] \n", Size); | |
| > | |
| 684a1583,1588 | |
| > // load disc change state | |
| > SaveFuncs.read(f, &last_state, sizeof(disc_change_state)); | |
| > is_disc_change = last_state.enable; | |
| > is_nop_count = last_state.counting; | |
| > nop_cnt = last_state.num; | |
| > | |
| 686a1591,1600 | |
| > if (g_opts & OPT_AUTOSAVE) { /* reset auto save buff when load state*/ | |
| > gLastCount = 0; | |
| > gFilledNum = 0; | |
| > printf("LoadState reset auto save buff \n"); | |
| > } | |
| > resume_play = 1; | |
| > | |
| > pthread_t fadein_thread; | |
| > pthread_create(&fadein_thread, NULL, &fadein, NULL); | |
| > | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/misc.h pcsx_rearmed_custom/libpcsxcore/misc.h | |
| 56a57 | |
| > extern char CdromId_old[10]; | |
| 57a59,69 | |
| > extern char CdromLabel_old[33]; | |
| > extern char CdromPath[MAXPATHLEN]; | |
| > extern char CdromPath_old[MAXPATHLEN]; | |
| > extern int disc_change_type; | |
| > extern int time_to_sync_state; | |
| > extern unsigned int memcardFlag; | |
| > extern int isUnknownCdrom; | |
| > extern int holdResetEvent; | |
| > | |
| > void StartCheckOpen(void); | |
| > int CheckOpenEnabled(void); | |
| 66a79 | |
| > int SaveStateWork(void * file); | |
| 73a87,88 | |
| > void emu_sync_state(void); | |
| > | |
| 77a93,97 | |
| > | |
| > #define ERROR_CPUOVERHEAT 20001 | |
| > #define ERROR_PCSXCRITICALERROR 90000 | |
| > | |
| > #define STATUS_DIR "/tmp/PCSX/exitstatus/" | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/new_dynarec/emu_if.c pcsx_rearmed_custom/libpcsxcore/new_dynarec/emu_if.c | |
| 90a91 | |
| > emu_sync_state(); | |
| 150c151 | |
| < void new_dyna_freeze(void *f, int mode) | |
| --- | |
| > int new_dyna_freeze(void *f, int mode) | |
| 158c159,178 | |
| < if (mode != 0) { // save | |
| --- | |
| > if (mode == 2) { // save buffer or get max buffer size | |
| > if(f) { | |
| > size = new_dynarec_save_blocks(addrs, sizeof(addrs)); | |
| > | |
| > memcpy(f, header_save, sizeof(header_save)); | |
| > f = (void *)((char *)f + sizeof(header_save)); | |
| > | |
| > memcpy(f, &size, sizeof(size)); | |
| > f = (void *)((char *)f + sizeof(size)); | |
| > | |
| > memcpy(f, addrs, size); | |
| > f = (void *)((char *)f + size); | |
| > | |
| > } else { | |
| > size = new_dynarec_save_blocks((void *)0, sizeof(addrs)); // get max size | |
| > } | |
| > size += (sizeof(header_save) + sizeof(size)); | |
| > return size; | |
| > | |
| > } else if (mode != 0) { // save | |
| 161c181 | |
| < return; | |
| --- | |
| > return 0; | |
| 174c194 | |
| < return; | |
| --- | |
| > return 0; | |
| 178c198 | |
| < return; | |
| --- | |
| > return 0; | |
| 186c206 | |
| < return; | |
| --- | |
| > return 0; | |
| 191a212,238 | |
| > return 0; | |
| > } | |
| > | |
| > void new_dyna_freeze_data(unsigned char** buff_out, int* size_out) | |
| > { | |
| > const char header_save[8] = "ariblks"; | |
| > uint32_t addrs[1024 * 4]; | |
| > int32_t size = 0; | |
| > | |
| > if (size_out == NULL) return; | |
| > | |
| > size = new_dynarec_save_blocks(addrs, sizeof(addrs)); | |
| > if (size == 0) { | |
| > printf("new_dyna_freeze new_dynarec_save_blocks size is 0\n"); | |
| > *size_out = 0; | |
| > return; | |
| > } | |
| > | |
| > unsigned char * p = (unsigned char *) malloc(sizeof(header_save) + sizeof(size) + size); | |
| > *buff_out = p; | |
| > memcpy(p, (unsigned char *)header_save, sizeof(header_save)); | |
| > p += sizeof(header_save); | |
| > memcpy(p, (unsigned char *)&size, sizeof(size)); | |
| > p += sizeof(size); | |
| > memcpy(p, (unsigned char *)addrs, size); | |
| > *size_out = sizeof(header_save) + sizeof(size) + size; | |
| > | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/new_dynarec/new_dynarec.c pcsx_rearmed_custom/libpcsxcore/new_dynarec/new_dynarec.c | |
| 7165a7166,7167 | |
| > static struct savestate_block tmp_blocks[1024]; | |
| > | |
| 7170d7171 | |
| < struct savestate_block tmp_blocks[1024]; | |
| 7174a7176,7178 | |
| > if(!(save)) { | |
| > return maxcount * sizeof(blocks[0]); | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/new_dynarec/pcsxmem.c pcsx_rearmed_custom/libpcsxcore/new_dynarec/pcsxmem.c | |
| 13a14 | |
| > #include "../title.h" | |
| 211a213,226 | |
| > if (isTitleName(DESTRUCTION_DERBY_EU) || | |
| > isTitleName(DESTRUCTION_DERBY_US)) { | |
| > int r = address & 0xfff; | |
| > if ((r == 0xdb0 || r == 0xdb2) && | |
| > (value == 0x0b18 || value == 0x0988 || value == 0x8009)) { | |
| > value = 0; | |
| > } | |
| > } | |
| > | |
| > if ((isTitleName(IQ_INTELLIGENT_QUBE_JP) && value == IQ_JP_MAX_VOLUME) || | |
| > (isTitleName(IQ_INTELLIGENT_QUBE_US) && value == IQ_US_MAX_VOLUME)) { | |
| > return; | |
| > } | |
| > | |
| 396a412,414 | |
| > if(isTitleName(ARMORED_CORE_JP) || isTitleName(ARMORED_CORE_MASTER_OF_ARENA)) { | |
| > map_item(&mem_iortab[IOMEM16(0x1054)], sio1ReadCtrl16, 1); | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/plugins.c pcsx_rearmed_custom/libpcsxcore/plugins.c | |
| 52a53,54 | |
| > GPUsetPatchFlag GPU_setPatchFlag; | |
| > GPUboStatus GPU_boStatus; | |
| 93a96,97 | |
| > SPUfadein SPU_fadein; | |
| > SPUenableRvbConfig SPU_enableRvbConfig; | |
| 244a249 | |
| > LoadGpuSym1(setPatchFlag, "GPUsetPatchFlag"); | |
| 247a253 | |
| > LoadGpuSym1(boStatus, "GPUboStatus"); | |
| 363a370,371 | |
| > LoadSpuSym1(fadein, "SPUfadein"); | |
| > LoadSpuSym1(enableRvbConfig, "SPUenableRvbConfig"); | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/plugins.h pcsx_rearmed_custom/libpcsxcore/plugins.h | |
| 81a82 | |
| > typedef uint32_t (CALLBACK* GPUboStatus)(void); | |
| 84a86,87 | |
| > uint32_t ulEventStatus; | |
| > uint32_t ulEventCnt; | |
| 92a96 | |
| > typedef void (CALLBACK* GPUsetPatchFlag)(int, int); | |
| 117a122,123 | |
| > extern GPUsetPatchFlag GPU_setPatchFlag; | |
| > extern GPUboStatus GPU_boStatus; | |
| 201a208,209 | |
| > int volume; | |
| > int reverb; | |
| 205a214,216 | |
| > typedef void (CALLBACK* SPUfadein)(void); | |
| > typedef void (CALLBACK* SPUenableRvbConfig)(int); | |
| > | |
| 227a239,240 | |
| > extern SPUfadein SPU_fadein; | |
| > extern SPUenableRvbConfig SPU_enableRvbConfig; | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/psxcounters.c pcsx_rearmed_custom/libpcsxcore/psxcounters.c | |
| 26a27,28 | |
| > #include "../libpcsxcore/title.h" | |
| > int isTitleName(enum TITLE_NAME argTitleName); | |
| 63c65 | |
| < static const u32 HSyncTotal[] = { 263, 313 }; | |
| --- | |
| > static u32 HSyncTotal[] = { 263, 313 }; | |
| 81a84,96 | |
| > #define HSYNC_ADJUSTED 297 | |
| > void change_HSync_Motionjpeg(int onoff){ | |
| > | |
| > if(onoff) | |
| > { | |
| > HSyncTotal[0] = 263; | |
| > } | |
| > else | |
| > { | |
| > HSyncTotal[0] = HSYNC_ADJUSTED; | |
| > } | |
| > } | |
| > | |
| 460a476,485 | |
| > if(isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US)){ | |
| > HSyncTotal[0] = HSYNC_ADJUSTED; | |
| > } | |
| > else if(isTitleName(SAGAFRONTIER_JP)){ | |
| > HSyncTotal[0] = 290; | |
| > } | |
| > | |
| 496a522,546 | |
| > if(Mode == 2) { | |
| > int iRetSize = sizeof(rcnts) \ | |
| > + sizeof(hSyncCount) \ | |
| > + sizeof(spuSyncCount) \ | |
| > + sizeof(psxNextCounter) \ | |
| > + sizeof(psxNextsCounter); | |
| > | |
| > if(f) { | |
| > memcpy(f, &rcnts, sizeof(rcnts) ); | |
| > f = (void *)((char *)f + sizeof(rcnts)); | |
| > | |
| > memcpy(f, &hSyncCount, sizeof(hSyncCount) ); | |
| > f = (void *)((char *)f + sizeof(hSyncCount)); | |
| > | |
| > memcpy(f, &spuSyncCount, sizeof(spuSyncCount) ); | |
| > f = (void *)((char *)f + sizeof(spuSyncCount)); | |
| > | |
| > memcpy(f, &psxNextCounter, sizeof(psxNextCounter) ); | |
| > f = (void *)((char *)f + sizeof(psxNextCounter)); | |
| > | |
| > memcpy(f, &psxNextsCounter, sizeof(psxNextsCounter) ); | |
| > f = (void *)((char *)f + sizeof(psxNextsCounter)); | |
| > } | |
| > return iRetSize; | |
| > } else { | |
| 519a570 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/psxdma.c pcsx_rearmed_custom/libpcsxcore/psxdma.c | |
| 25a26 | |
| > #include "title.h" | |
| 199c200,206 | |
| < GPUDMA_INT(size); | |
| --- | |
| > u32 offset = 0; | |
| > if (isTitleName(TOSHINDEN_JP)) { | |
| > if (!(HW_GPU_STATUS & PSXGPU_ILACE_BITS)) { | |
| > offset = 240000; | |
| > } | |
| > } | |
| > GPUDMA_INT(size + offset); | |
| 252c259,273 | |
| < GPUOTCDMA_INT(16); | |
| --- | |
| > | |
| > u32 offset = 0; | |
| > if (isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > if (!(HW_GPU_STATUS & PSXGPU_ILACE_BITS)) { | |
| > offset = 340000; | |
| > } | |
| > } | |
| > else if (isTitleName(KAGERO_JP)) { | |
| > if (!(HW_GPU_STATUS & PSXGPU_ILACE_BITS)) { | |
| > offset = 180000; | |
| > } | |
| > } | |
| > GPUOTCDMA_INT(16 + offset); | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/r3000a.h pcsx_rearmed_custom/libpcsxcore/r3000a.h | |
| 195c195,196 | |
| < void new_dyna_freeze(void *f, int mode); | |
| --- | |
| > int new_dyna_freeze(void *f, int mode); | |
| > void new_dyna_freeze_data(unsigned char** buff_out, int* size_out); | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/sio.c pcsx_rearmed_custom/libpcsxcore/sio.c | |
| 25a26,27 | |
| > #include "../frontend/libpicofe/input.h" | |
| > #include <unistd.h> | |
| 68a71 | |
| > unsigned int memcardFlag = 0; | |
| 205a209 | |
| > memcardFlag=1; | |
| 231c235,241 | |
| < case 0x2002: buf[0] = PAD2_startPoll(2); break; | |
| --- | |
| > case 0x2002: | |
| > if(p2_connected) { | |
| > buf[0] = PAD2_startPoll(2); | |
| > } else { | |
| > goto no_device; | |
| > } | |
| > break; | |
| 373a384,387 | |
| > unsigned short sio1ReadCtrl16() { | |
| > return 0x80; | |
| > } | |
| > | |
| 478a493,494 | |
| > int fd = fileno(f); | |
| > fsync(fd); | |
| 647a664 | |
| > fsync(fileno(f)); | |
| 659a677 | |
| > fsync(fileno(f)); | |
| 688a707 | |
| > fsync(fileno(f)); | |
| 693a713 | |
| > fsync(fileno(f)); | |
| 710a731 | |
| > fsync(fileno(f)); | |
| 715a737 | |
| > fsync(fileno(f)); | |
| 815a838,891 | |
| > if(Mode == 2) { | |
| > int iRetSize = sizeof(buf) \ | |
| > + sizeof(StatReg) \ | |
| > + sizeof(ModeReg) \ | |
| > + sizeof(CtrlReg) \ | |
| > + sizeof(BaudReg) \ | |
| > + sizeof(bufcount) \ | |
| > + sizeof(parp) \ | |
| > + sizeof(mcdst) \ | |
| > + sizeof(rdwr) \ | |
| > + sizeof(adrH) \ | |
| > + sizeof(adrL) \ | |
| > + sizeof(padst); | |
| > | |
| > if(f) { | |
| > memcpy(f,buf, sizeof(buf)); | |
| > f = (void *)((char *)f + sizeof(buf)); | |
| > | |
| > memcpy(f, &StatReg, sizeof(StatReg)); | |
| > f = (void *)((char *)f + sizeof(StatReg)); | |
| > | |
| > memcpy(f, &ModeReg, sizeof(ModeReg)); | |
| > f = (void *)((char *)f + sizeof(ModeReg)); | |
| > | |
| > memcpy(f, &CtrlReg, sizeof(CtrlReg)); | |
| > f = (void *)((char *)f + sizeof(CtrlReg)); | |
| > | |
| > memcpy(f, &BaudReg, sizeof(BaudReg)); | |
| > f = (void *)((char *)f + sizeof(BaudReg)); | |
| > | |
| > memcpy(f, &bufcount, sizeof(bufcount)); | |
| > f = (void *)((char *)f + sizeof(bufcount)); | |
| > | |
| > memcpy(f, &parp, sizeof(parp)); | |
| > f = (void *)((char *)f + sizeof(parp)); | |
| > | |
| > memcpy(f, &mcdst, sizeof(mcdst)); | |
| > f = (void *)((char *)f + sizeof(mcdst)); | |
| > | |
| > memcpy(f, &rdwr, sizeof(rdwr)); | |
| > f = (void *)((char *)f + sizeof(rdwr)); | |
| > | |
| > memcpy(f, &adrH, sizeof(adrH)); | |
| > f = (void *)((char *)f + sizeof(adrH)); | |
| > | |
| > memcpy(f, &adrL, sizeof(adrL)); | |
| > f = (void *)((char *)f + sizeof(adrL)); | |
| > | |
| > memcpy(f, &padst, sizeof(padst)); | |
| > f = (void *)((char *)f + sizeof(padst)); | |
| > } | |
| > return iRetSize; | |
| > | |
| > } else { | |
| 830a907 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/sio.h pcsx_rearmed_custom/libpcsxcore/sio.h | |
| 48a49 | |
| > unsigned short sio1ReadCtrl16(); | |
| diff --new-file -w -r pcsx_rearmed/libpcsxcore/title.h pcsx_rearmed_custom/libpcsxcore/title.h | |
| 0a1,299 | |
| > #ifndef _TITLE_H | |
| > #define _TITLE_H | |
| > | |
| > #define INCLUDE_TITLE_NUMBER 20 | |
| > | |
| > enum TITLE_NAME { | |
| > ARC_THE_LAD_JP, | |
| > ARC_THE_LAD_2_JP, | |
| > ARMORED_CORE_JP, | |
| > ARMORED_CORE_MASTER_OF_ARENA, | |
| > CHOCOBOS_JP, | |
| > COLIN_MCRAE_RALLY_EU, | |
| > COOL_BOARDERS_2_EU, | |
| > CRASH_BANDICOOT_EU, | |
| > CRASH_BANDICOOT_US, | |
| > CRASH_BANDICOOT_2_EU, | |
| > CRASH_BANDICOOT_2_JP, | |
| > CRASH_BANDICOOT_2_US, | |
| > DESTRUCTION_DERBY_EU, | |
| > DESTRUCTION_DERBY_US, | |
| > DISNEY_TOY_STORY_2_EU, | |
| > DRIVER_EU, | |
| > DRIVER_US, | |
| > EHRGEIZ_JP, | |
| > FIGHTING_FORCE_US, | |
| > FINAL_FANTANSY_VII_DICS_1_EU, | |
| > FINAL_FANTANSY_VII_DICS_1_JP, | |
| > FINAL_FANTANSY_VII_DICS_1_US, | |
| > FINAL_FANTANSY_VII_DICS_2_EU, | |
| > FINAL_FANTANSY_VII_DICS_2_JP, | |
| > FINAL_FANTANSY_VII_DICS_2_US, | |
| > FINAL_FANTANSY_VII_DICS_3_EU, | |
| > FINAL_FANTANSY_VII_DICS_3_JP, | |
| > FINAL_FANTANSY_VII_DICS_3_US, | |
| > FINAL_FANTANSY_VII_DICS_4_JP, | |
| > G_DARIUS_JP, | |
| > GRADIUS_GAIDEN_JP, | |
| > GRAN_TURISMO_EU, | |
| > GRAN_TURISMO_JP, | |
| > GRAN_TURISMO_US, | |
| > GRAND_THEFT_AUTO_2_EU, | |
| > GRAND_THEFT_AUTO_2_US, | |
| > GRAND_THEFT_AUTO_EU, | |
| > GRAND_THEFT_AUTO_US, | |
| > HARRY_POTTER_AND_THE_PHILOSOPHERS_STONE_EU, | |
| > IQ_INTELLIGENT_QUBE_JP, | |
| > IQ_INTELLIGENT_QUBE_US, | |
| > JUMPING_FLASH_EU, | |
| > JUMPING_FLASH_JP, | |
| > JUMPING_FLASH_US, | |
| > KAGERO_JP, | |
| > KLONOA_DOOR_TO_PHANTAMILE_JP, | |
| > KLONOA_DOOR_TO_PHANTAMILE_US, | |
| > KULA_WORLD_EU, | |
| > LEGACY_OF_KAIN_SOUL_REAVER_EU, | |
| > LEGACY_OF_KAIN_SOUL_REAVER_US, | |
| > MEDAL_OF_HONOR_EU, | |
| > MEDAL_OF_HONOR_US, | |
| > MEDIEVIL_EU, | |
| > MEDIEVIL_US, | |
| > MEGA_MAM_LEGENDS_EU, | |
| > MEGA_MAM_LEGENDS_JP, | |
| > MEGA_MAM_LEGENDS_US, | |
| > METAL_GEAR_SOLID_DISC_1_EU, | |
| > METAL_GEAR_SOLID_DISC_1_JP, | |
| > METAL_GEAR_SOLID_DISC_1_US, | |
| > METAL_GEAR_SOLID_DISC_2_EU, | |
| > METAL_GEAR_SOLID_DISC_2_JP, | |
| > METAL_GEAR_SOLID_DISC_2_US, | |
| > MR_DRILLER_EU, | |
| > MR_DRILLER_G_JP, | |
| > MR_DRILLER_JP, | |
| > MR_DRILLER_US, | |
| > ODDWORLD_ABES_ODDYSEE_EU, | |
| > ODDWORLD_ABES_ODDYSEE_US, | |
| > PACAPACA_PASSION_JP, | |
| > PARAPPA_THE_RAPPER_US, | |
| > PARASITE_EVE_DISC_1_JP, | |
| > PARASITE_EVE_DISC_1_US, | |
| > PARASITE_EVE_DISC_2_JP, | |
| > PARASITE_EVE_DISC_2_US, | |
| > PERSONA_JP, | |
| > PERSONA_US, | |
| > RAY_STORM_JP, | |
| > RAYMAN_US, | |
| > RESIDENT_EVIL_EU, | |
| > RESIDENT_EVIL_JP, | |
| > RESIDENT_EVIL_US, | |
| > RIDGE_RACER_EU, | |
| > RIDGE_RACER_JP, | |
| > RIDGE_RACER_US, | |
| > RIDGE_RACER_TYPE_4_EU, | |
| > RIDGE_RACER_TYPE_4_JP, | |
| > RIDGE_RACER_TYPE_4_US, | |
| > SAGAFRONTIER_JP, | |
| > SILENT_HILL_EU, | |
| > SILENT_HILL_JP, | |
| > SILENT_HILL_US, | |
| > SPEC_OPS_STEALTH_PATROL_US, | |
| > STREET_FIGHTER_ALPHA_3_US, | |
| > STREET_FIGHTER_EX_PLUS_EU, | |
| > STREET_FIGHTER_EX_PLUS_JP, | |
| > STREET_FIGHTER_EX_PLUS_US, | |
| > SUIKODEN_EU, | |
| > SUIKODEN_JP, | |
| > SUIKODEN_US, | |
| > SUPER_PUZZLE_FIGHTER_2_TURBO_US, | |
| > SUPER_PUZZLE_FIGHTER_2_X_JP, | |
| > SYPHON_FILTER_US, | |
| > TEKKEN3_EU, | |
| > TEKKEN3_JP, | |
| > TOM_CLANCYS_RAINBOW_SIX_EU, | |
| > TOMB_RAIDER_2_EU, | |
| > TOMB_RAIDER_2_JP, | |
| > TOMB_RAIDER_2_US, | |
| > TOMB_RAIDER_EU, | |
| > TOMB_RAIDER_JP, | |
| > TOMB_RAIDER_US, | |
| > TOMBA_JP, | |
| > TOMBA_US, | |
| > TONY_HAWK_SKATE_BOARDING_EU, | |
| > TONY_HAWKS_PRO_SKATER_2_EU, | |
| > TONY_HAWKS_PRO_SKATER_2_US, | |
| > TOSHINDEN_EU, | |
| > TOSHINDEN_JP, | |
| > TOSHINDEN_US, | |
| > TWISTED_METAL_US, | |
| > VAGRANT_STORY_EU, | |
| > VAGRANT_STORY_US, | |
| > WILD_ARMS_2_DISC_1_JP, | |
| > WILD_ARMS_2_DISC_2_JP, | |
| > WILD_ARMS_JP, | |
| > WILD_ARMS_US, | |
| > XEVIOUS_3D_G_JP, | |
| > XEVIOUS_3D_G_US, | |
| > XI_EU, | |
| > XI_JP, | |
| > TITLE_NAME_NONE | |
| > }; | |
| > | |
| > struct INCLUDE_TITLE { | |
| > char *m_cpCdromId; | |
| > enum TITLE_NAME m_eTitleName; | |
| > } INCLUDE_TITLE; | |
| > | |
| > static struct INCLUDE_TITLE stTitleList[] = { | |
| > {"SCPS10008" , ARC_THE_LAD_JP}, | |
| > {"SCPS10026" , ARC_THE_LAD_2_JP}, | |
| > {"SLPS00900" , ARMORED_CORE_JP}, | |
| > {"SLPS91444" , ARMORED_CORE_MASTER_OF_ARENA}, | |
| > {"SLPS01234" , CHOCOBOS_JP}, | |
| > {"SLES00477" , COLIN_MCRAE_RALLY_EU}, | |
| > {"SCES00992" , COOL_BOARDERS_2_EU}, | |
| > {"SCES00344" , CRASH_BANDICOOT_EU}, | |
| > {"SCUS94900" , CRASH_BANDICOOT_US}, | |
| > {"SCES00967" , CRASH_BANDICOOT_2_EU}, | |
| > {"SCPS10047" , CRASH_BANDICOOT_2_JP}, | |
| > {"SCUS94154" , CRASH_BANDICOOT_2_US}, | |
| > {"SCES00008" , DESTRUCTION_DERBY_EU}, | |
| > {"SCUS94302" , DESTRUCTION_DERBY_US}, | |
| > {"SLES02067" , DISNEY_TOY_STORY_2_EU}, | |
| > {"SLES01816" , DRIVER_EU}, | |
| > {"SLUS00842" , DRIVER_US}, | |
| > {"SLPS01750" , EHRGEIZ_JP}, | |
| > {"SLUS00433" , FIGHTING_FORCE_US}, | |
| > {"SCES00867" , FINAL_FANTANSY_VII_DICS_1_EU}, | |
| > {"SLPS01057" , FINAL_FANTANSY_VII_DICS_1_JP}, | |
| > {"SCUS94163" , FINAL_FANTANSY_VII_DICS_1_US}, | |
| > {"SCES10867" , FINAL_FANTANSY_VII_DICS_2_EU}, | |
| > {"SLPS01058" , FINAL_FANTANSY_VII_DICS_2_JP}, | |
| > {"SCUS94164" , FINAL_FANTANSY_VII_DICS_2_US}, | |
| > {"SCES20867" , FINAL_FANTANSY_VII_DICS_3_EU}, | |
| > {"SLPS01059" , FINAL_FANTANSY_VII_DICS_3_JP}, | |
| > {"SCUS94165" , FINAL_FANTANSY_VII_DICS_3_US}, | |
| > {"SLPS01060" , FINAL_FANTANSY_VII_DICS_4_JP}, | |
| > {"SLPS01348" , G_DARIUS_JP}, | |
| > {"SLPM86042" , GRADIUS_GAIDEN_JP}, | |
| > {"SCES00984" , GRAN_TURISMO_EU}, | |
| > {"SCPS10045" , GRAN_TURISMO_JP}, | |
| > {"SCUS94194" , GRAN_TURISMO_US}, | |
| > {"SLES01404" , GRAND_THEFT_AUTO_2_EU}, | |
| > {"SLUS00789" , GRAND_THEFT_AUTO_2_US}, | |
| > {"SLES00032" , GRAND_THEFT_AUTO_EU}, | |
| > {"SLUS00106" , GRAND_THEFT_AUTO_US}, | |
| > {"SLES03662" , HARRY_POTTER_AND_THE_PHILOSOPHERS_STONE_EU}, | |
| > {"SCPS10029" , IQ_INTELLIGENT_QUBE_JP}, | |
| > {"SCUS94181" , IQ_INTELLIGENT_QUBE_US}, | |
| > {"SCES00003" , JUMPING_FLASH_EU}, | |
| > {"SCPS10007" , JUMPING_FLASH_JP}, | |
| > {"SCUS94103" , JUMPING_FLASH_US}, | |
| > {"SLPS01421" , KAGERO_JP}, | |
| > {"SLPS01010" , KLONOA_DOOR_TO_PHANTAMILE_JP}, | |
| > {"SLUS00585" , KLONOA_DOOR_TO_PHANTAMILE_US}, | |
| > {"SCES01000" , KULA_WORLD_EU}, | |
| > {"SLES01301" , LEGACY_OF_KAIN_SOUL_REAVER_EU}, | |
| > {"SLUS00708" , LEGACY_OF_KAIN_SOUL_REAVER_US}, | |
| > {"SLES02470" , MEDAL_OF_HONOR_EU}, | |
| > {"SLUS00974" , MEDAL_OF_HONOR_US}, | |
| > {"SCES00311" , MEDIEVIL_EU}, | |
| > {"SCUS94227" , MEDIEVIL_US}, | |
| > {"SLES01485" , MEGA_MAM_LEGENDS_EU}, | |
| > {"SLPS01141" , MEGA_MAM_LEGENDS_JP}, | |
| > {"SLUS00603" , MEGA_MAM_LEGENDS_US}, | |
| > {"SLES01370" , METAL_GEAR_SOLID_DISC_1_EU}, | |
| > {"SLPM86114" , METAL_GEAR_SOLID_DISC_1_JP}, | |
| > {"SLUS00594" , METAL_GEAR_SOLID_DISC_1_US}, | |
| > {"SLES11370" , METAL_GEAR_SOLID_DISC_2_EU}, | |
| > {"SLPM86115" , METAL_GEAR_SOLID_DISC_2_JP}, | |
| > {"SLUS00776" , METAL_GEAR_SOLID_DISC_2_US}, | |
| > {"SCES02771" , MR_DRILLER_EU}, | |
| > {"SLPS03336" , MR_DRILLER_G_JP}, | |
| > {"SLPS02600" , MR_DRILLER_JP}, | |
| > {"SLUS01111" , MR_DRILLER_US}, | |
| > {"SLES00664" , ODDWORLD_ABES_ODDYSEE_EU}, | |
| > {"SLUS00190" , ODDWORLD_ABES_ODDYSEE_US}, | |
| > {"SLPS02122" , PACAPACA_PASSION_JP}, | |
| > {"SCUS94183" , PARAPPA_THE_RAPPER_US}, | |
| > {"SLPS01230" , PARASITE_EVE_DISC_1_JP}, | |
| > {"SLUS00662" , PARASITE_EVE_DISC_1_US}, | |
| > {"SLPS01231" , PARASITE_EVE_DISC_2_JP}, | |
| > {"SLUS00668" , PARASITE_EVE_DISC_2_US}, | |
| > {"SLPS00500" , PERSONA_JP}, | |
| > {"SLUS00339" , PERSONA_US}, | |
| > {"SLPS00678" , RAY_STORM_JP}, | |
| > {"SLUS00005" , RAYMAN_US}, | |
| > {"SLES00969" , RESIDENT_EVIL_EU}, | |
| > {"SLPS00998" , RESIDENT_EVIL_JP}, | |
| > {"SLUS00747" , RESIDENT_EVIL_US}, | |
| > {"SCES00001" , RIDGE_RACER_EU}, | |
| > {"SLPS00001" , RIDGE_RACER_JP}, | |
| > {"SCUS94300" , RIDGE_RACER_US}, | |
| > {"SCES01706" , RIDGE_RACER_TYPE_4_EU}, | |
| > {"SLPS01800" , RIDGE_RACER_TYPE_4_JP}, | |
| > {"SLUS00797" , RIDGE_RACER_TYPE_4_US}, | |
| > {"SLPS00898" , SAGAFRONTIER_JP}, | |
| > {"SLES01514" , SILENT_HILL_EU}, | |
| > {"SLPM86192" , SILENT_HILL_JP}, | |
| > {"SLUS00707" , SILENT_HILL_US}, | |
| > {"SLUS01131" , SPEC_OPS_STEALTH_PATROL_US}, | |
| > {"SLUS00821" , STREET_FIGHTER_ALPHA_3_US}, | |
| > {"SLES00939" , STREET_FIGHTER_EX_PLUS_EU}, | |
| > {"SLPM86041" , STREET_FIGHTER_EX_PLUS_JP}, | |
| > {"SLUS00548" , STREET_FIGHTER_EX_PLUS_US}, | |
| > {"SLES00527" , SUIKODEN_EU}, | |
| > {"SLPS00097" , SUIKODEN_JP}, | |
| > {"SLUS00292" , SUIKODEN_US}, | |
| > {"SLUS00418" , SUPER_PUZZLE_FIGHTER_2_TURBO_US}, | |
| > {"SLPS00611" , SUPER_PUZZLE_FIGHTER_2_X_JP}, | |
| > {"SCUS94240" , SYPHON_FILTER_US}, | |
| > {"SCES01237" , TEKKEN3_EU}, | |
| > {"SLPS01300" , TEKKEN3_JP}, | |
| > {"SLES01136" , TOM_CLANCYS_RAINBOW_SIX_EU}, | |
| > {"SLES00718" , TOMB_RAIDER_2_EU}, | |
| > {"SLPS01200" , TOMB_RAIDER_2_JP}, | |
| > {"SLUS00437" , TOMB_RAIDER_2_US}, | |
| > {"SLES00024" , TOMB_RAIDER_EU}, | |
| > {"SLPS00617" , TOMB_RAIDER_JP}, | |
| > {"SLUS00152" , TOMB_RAIDER_US}, | |
| > {"SLPS01144" , TOMBA_JP}, | |
| > {"SCUS94236" , TOMBA_US}, | |
| > {"SLES02055" , TONY_HAWK_SKATE_BOARDING_EU}, | |
| > {"SLES02908" , TONY_HAWKS_PRO_SKATER_2_EU}, | |
| > {"SLUS01066" , TONY_HAWKS_PRO_SKATER_2_US}, | |
| > {"SCES00002" , TOSHINDEN_EU}, | |
| > {"SLPS00025" , TOSHINDEN_JP}, | |
| > {"SCUS94200" , TOSHINDEN_US}, | |
| > {"SCUS94304" , TWISTED_METAL_US}, | |
| > {"SLES02754" , VAGRANT_STORY_EU}, | |
| > {"SLUS01040" , VAGRANT_STORY_US}, | |
| > {"SCPS10089" , WILD_ARMS_2_DISC_1_JP}, | |
| > {"SCPS10090" , WILD_ARMS_2_DISC_2_JP}, | |
| > {"SCPS10028" , WILD_ARMS_JP}, | |
| > {"SCUS94608" , WILD_ARMS_US}, | |
| > {"SLPS00750" , XEVIOUS_3D_G_JP}, | |
| > {"SLUS00461" , XEVIOUS_3D_G_US}, | |
| > {"SCES01312" , XI_EU}, | |
| > {"SCPS10051" , XI_JP}, | |
| > {"\0" , TITLE_NAME_NONE} | |
| > }; | |
| > static enum TITLE_NAME g_eTitleName = TITLE_NAME_NONE; | |
| > | |
| > #define GPU_PATCH_SCREEN_ADJUST (0x00000001) | |
| > #define GPU_PATCH_IS_FF7 (0x00000002) | |
| > #define GPU_PATCH_IS_MR_DRILLER (0x00000004) | |
| > #define GPU_PATCH_ADD_VRAM2 (0x00000008) | |
| > #define GPU_PATCH_IS_MR_DRILLER_JP (0x00000010) | |
| > #define GPU_PATCH_ADD_BO (0x00000020) | |
| > #define GPU_PATCH_ARC_THE_LAD (0x00000080) | |
| > | |
| > #define TOSHINDEN_DEFAULT_VOLUME 0x4890 | |
| > #define TOSHINDEN_JP_DEFAULT_VOLUME 0x3870 | |
| > #define IQ_JP_MAX_VOLUME 0x7fff | |
| > #define IQ_US_MAX_VOLUME 0x7ffe | |
| > #define ARMORED_CORE_JP_MAX_VOLUME 0x3f7e | |
| > #define TOM_CLANCYS_RAINBOW_SIX_EU_MAX_VOLUME 0x3fff | |
| > #define PARASITE_EVE_JP_ENABLE_VOLUME 0x600 | |
| > #define PARASITE_EVE_JP_DISABLE_VOLUME 0xffff8000 | |
| > | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/Makefile pcsx_rearmed_custom/Makefile | |
| 5a6,8 | |
| > ifdef CONFIG_ENABLE_MENU | |
| > CFLAGS += -DCONFIG_ENABLE_MENU | |
| > endif | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/alsa.c pcsx_rearmed_custom/plugins/dfsound/alsa.c | |
| 42c42,43 | |
| < const char *alsa_name = "default"; | |
| --- | |
| > // const char *alsa_name = "default"; | |
| > const char *alsa_name = "plughw:0,2"; | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/externals.h pcsx_rearmed_custom/plugins/dfsound/externals.h | |
| 242a243,246 | |
| > extern int xaSave_iLeftVolume; | |
| > extern int xaSave_iRightVolume; | |
| > extern unsigned char State_CdlPause; | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/freeze.c pcsx_rearmed_custom/plugins/dfsound/freeze.c | |
| 24a25 | |
| > #include "spu_config.h" | |
| 116a118,120 | |
| > unsigned char *SPUInfo; | |
| > int volume; | |
| > int reverb; | |
| 231,232c235 | |
| < | |
| < if(!pF) return 0; // first check | |
| --- | |
| > size_t size; | |
| 238,240c241,247 | |
| < if(ulFreezeMode==1) | |
| < memset(pF,0,sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t)); | |
| < | |
| --- | |
| > size = sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t); | |
| > if(ulFreezeMode==1) { | |
| > if(pF) { | |
| > memset(pF,0,size); | |
| > } | |
| > } | |
| > if(pF) { | |
| 243c250,251 | |
| < pF->ulFreezeSize=sizeof(SPUFreeze_t)+sizeof(SPUOSSFreeze_t); | |
| --- | |
| > pF->ulFreezeSize=size; | |
| > } | |
| 245c253,254 | |
| < if(ulFreezeMode==2) return 1; // info mode? ok, bye | |
| --- | |
| > if(ulFreezeMode==2) return (long)size; // info mode? ok, bye | |
| > if(!pF) return 0; // first check | |
| 273a283,285 | |
| > pF->volume = spu_config.iVolume; | |
| > pF->reverb = SPUisRvbConfigEnabled(); | |
| > | |
| 278a291 | |
| > if(!pF) return 0; // first check | |
| 279a293 | |
| > SPUResetStream(); // reset SPU stream buffer | |
| 312a327,329 | |
| > | |
| > spu_config.iVolume = pF->volume; | |
| > SPUenableRvbConfig(pF->reverb); | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/registers.c pcsx_rearmed_custom/plugins/dfsound/registers.c | |
| 24a25 | |
| > #include "../../libpcsxcore/title.h" | |
| 33a35 | |
| > static int SetDisableVolumeChange(short vol); | |
| 53a56,59 | |
| > static int isAlreadyRunBiosLogo = 0; | |
| > static int spuOn2OffCnt = 0; | |
| > unsigned short former_spuCtrl; | |
| > | |
| 104a111,116 | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_1_US) || | |
| > isTitleName(PARASITE_EVE_DISC_2_JP) || | |
| > isTitleName(PARASITE_EVE_DISC_2_US)) { | |
| > spu.s_chan[ch].ADSRX.ReleaseRate = ((lval & 0x001f)*9)/10; | |
| > } else { | |
| 105a118 | |
| > } | |
| 139a153,165 | |
| > | |
| > if (isAlreadyRunBiosLogo == 0) { | |
| > former_spuCtrl = spu.spuCtrl; | |
| > | |
| > if ((!(val & 0x8000)) && (former_spuCtrl & 0x8000)) { | |
| > // waiting until sound data has been played. | |
| > while (SOUND_isPlaying()) {}; | |
| > | |
| > if (++spuOn2OffCnt > 2) { | |
| > isAlreadyRunBiosLogo = 1; | |
| > } | |
| > } | |
| > } | |
| 170a197 | |
| > */ | |
| 173c200,228 | |
| < //auxprintf("ML %d\n",val); | |
| --- | |
| > if (isTitleName(ARMORED_CORE_JP)) { | |
| > double percent = (double)val / ARMORED_CORE_JP_MAX_VOLUME; | |
| > spu_config.iVolume = 768 * percent; | |
| > } else if (isTitleName(CRASH_BANDICOOT_2_EU) || | |
| > isTitleName(CRASH_BANDICOOT_2_JP) || | |
| > isTitleName(CRASH_BANDICOOT_2_US) || | |
| > isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(JUMPING_FLASH_JP) || | |
| > isTitleName(JUMPING_FLASH_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US) || | |
| > isTitleName(SILENT_HILL_EU) || | |
| > isTitleName(SILENT_HILL_JP) || | |
| > isTitleName(SILENT_HILL_US)) { | |
| > if (val != 0) { | |
| > spu.dwChannelOn = 0xffffff; | |
| > spu_config.iVolume = 768; | |
| > } else { | |
| > spu.dwChannelOn = 0; | |
| > spu_config.iVolume = 0; | |
| > } | |
| > } else if (isTitleName(TOM_CLANCYS_RAINBOW_SIX_EU)) { | |
| > double percent = (double)val / TOM_CLANCYS_RAINBOW_SIX_EU_MAX_VOLUME; | |
| > spu_config.iVolume = 768 * percent; | |
| > } | |
| 177c232,260 | |
| < //auxprintf("MR %d\n",val); | |
| --- | |
| > if (isTitleName(ARMORED_CORE_JP)) { | |
| > double percent = (double)val / ARMORED_CORE_JP_MAX_VOLUME; | |
| > spu_config.iVolume = 768 * percent; | |
| > } else if (isTitleName(CRASH_BANDICOOT_2_EU) || | |
| > isTitleName(CRASH_BANDICOOT_2_JP) || | |
| > isTitleName(CRASH_BANDICOOT_2_US) || | |
| > isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(JUMPING_FLASH_JP) || | |
| > isTitleName(JUMPING_FLASH_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_EU) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_JP) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_1_US) || | |
| > isTitleName(METAL_GEAR_SOLID_DISC_2_US) || | |
| > isTitleName(SILENT_HILL_EU) || | |
| > isTitleName(SILENT_HILL_JP) || | |
| > isTitleName(SILENT_HILL_US)) { | |
| > if (val != 0) { | |
| > spu.dwChannelOn = 0xffffff; | |
| > spu_config.iVolume = 768; | |
| > } else { | |
| > spu.dwChannelOn = 0; | |
| > spu_config.iVolume = 0; | |
| > } | |
| > } else if (isTitleName(TOM_CLANCYS_RAINBOW_SIX_EU)) { | |
| > double percent = (double)val / TOM_CLANCYS_RAINBOW_SIX_EU_MAX_VOLUME; | |
| > spu_config.iVolume = 768 * percent; | |
| > } | |
| 179a263,264 | |
| > | |
| > /* | |
| 205a291,307 | |
| > if (isTitleName(TOSHINDEN_EU) || | |
| > isTitleName(TOSHINDEN_JP) || | |
| > isTitleName(TOSHINDEN_US)) { | |
| > unsigned short max = isTitleName(TOSHINDEN_JP) ? | |
| > TOSHINDEN_JP_DEFAULT_VOLUME : TOSHINDEN_DEFAULT_VOLUME; | |
| > if (val == max) { | |
| > break; | |
| > } | |
| > } | |
| > | |
| > if (isTitleName(GRADIUS_GAIDEN_JP)) { | |
| > if (State_CdlPause == 1) { | |
| > xaSave_iLeftVolume = val & 0x7fff; | |
| > break; | |
| > } | |
| > } | |
| > | |
| 209a312,318 | |
| > if (isTitleName(GRADIUS_GAIDEN_JP)) { | |
| > if (State_CdlPause == 1) { | |
| > xaSave_iRightVolume = val & 0x7fff; | |
| > break; | |
| > } | |
| > } | |
| > | |
| 430a540,545 | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP) && ch <= 1) { | |
| > if (SetDisableVolumeChange(vol)) { | |
| > return; | |
| > } | |
| > } | |
| > | |
| 456a572,577 | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP) && ch <= 1) { | |
| > if (SetDisableVolumeChange(vol)) { | |
| > return; | |
| > } | |
| > } | |
| > | |
| 505a627,644 | |
| > } | |
| > | |
| > static int SetDisableVolumeChange(short vol) { | |
| > static int DisableVolumeChange = 0; | |
| > int disableVolume, enableVolume; | |
| > | |
| > if (isTitleName(PARASITE_EVE_DISC_1_JP)) { | |
| > disableVolume = PARASITE_EVE_JP_DISABLE_VOLUME; | |
| > enableVolume = PARASITE_EVE_JP_ENABLE_VOLUME; | |
| > } | |
| > | |
| > if (vol == disableVolume) { | |
| > DisableVolumeChange = 1; | |
| > } else if (enableVolume <= vol) { | |
| > DisableVolumeChange = 0; | |
| > } | |
| > | |
| > return DisableVolumeChange; | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/reverb.c pcsx_rearmed_custom/plugins/dfsound/reverb.c | |
| 73a74 | |
| > int shift; | |
| 106a108,113 | |
| > if (SPUisRvbConfigEnabled()) { | |
| > shift = 16; | |
| > } else { | |
| > shift = 15; | |
| > } | |
| > | |
| 110c117 | |
| < g_buffer(ACC_SRC_D0) * rvb->ACC_COEF_D) >> 15; | |
| --- | |
| > g_buffer(ACC_SRC_D0) * rvb->ACC_COEF_D) >> shift; | |
| 114c121 | |
| < g_buffer(ACC_SRC_D1) * rvb->ACC_COEF_D) >> 15; | |
| --- | |
| > g_buffer(ACC_SRC_D1) * rvb->ACC_COEF_D) >> shift; | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/sdl.c pcsx_rearmed_custom/plugins/dfsound/sdl.c | |
| 27a28,34 | |
| > volatile int g_isAudioPlaying = 0; | |
| > | |
| > #define DURATION_TIME_FOR_BG_SOUND 500 | |
| > | |
| > int SOUND_isPlaying(void) { | |
| > return g_isAudioPlaying; | |
| > } | |
| 30a38,39 | |
| > static int fromPlayToStopCnt = 0; | |
| > int waitSoundQueEmpty; | |
| 33a43,54 | |
| > if ((iReadPos == iWritePos) && (g_isAudioPlaying == 1)) { | |
| > | |
| > waitSoundQueEmpty = (int)((double)(DURATION_TIME_FOR_BG_SOUND) / ((len / 2) / 44.1)) + 1; | |
| > if (++fromPlayToStopCnt > waitSoundQueEmpty) { | |
| > g_isAudioPlaying = 0; | |
| > } | |
| > | |
| > } else if ((iReadPos != iWritePos) && (g_isAudioPlaying == 0)) { | |
| > g_isAudioPlaying = 1; | |
| > fromPlayToStopCnt = 0; | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/spu.c pcsx_rearmed_custom/plugins/dfsound/spu.c | |
| 37a38,39 | |
| > #include "../../libpcsxcore/title.h" | |
| > | |
| 77a80 | |
| > static int isRvbConfigEnabled = 0; | |
| 81a85,87 | |
| > void detect_pi(int ch, int ns_to); | |
| > void set_bo_trg(int onoff, int ch); | |
| > | |
| 252a259,266 | |
| > | |
| > if ((isTitleName(SUIKODEN_EU) || | |
| > isTitleName(SUIKODEN_JP) || | |
| > isTitleName(SUIKODEN_US))&& | |
| > ch == 0x15) | |
| > { | |
| > s_chan->ADSRX.SustainIncrease = 1; | |
| > } | |
| 572,573c586,587 | |
| < StoreInterpolationVal(SB, sinc, fa, spu.s_chan[ch].bFMod==2), | |
| < ChanBuf[ns] = iGetInterpolationVal(SB, sinc, *spos, spu.s_chan[ch].bFMod==2), ) | |
| --- | |
| > StoreInterpolationVal(SB, sinc, fa, spu.s_chan[ch].bFMod==2 && spu.s_chan[ch].iLeftVolume==0 && spu.s_chan[ch].iRightVolume==0), | |
| > ChanBuf[ns] = iGetInterpolationVal(SB, sinc, *spos, spu.s_chan[ch].bFMod==2 && spu.s_chan[ch].iLeftVolume==0 && spu.s_chan[ch].iRightVolume==0), ) | |
| 788c802 | |
| < else if (s_chan->bFMod == 2 | |
| --- | |
| > else if ((s_chan->bFMod == 2 && s_chan->iLeftVolume == 0 && s_chan->iRightVolume == 0) | |
| 812,813c826,828 | |
| < if (s_chan->bFMod == 2) // fmod freq channel | |
| < memcpy(iFMod, &ChanBuf, ns_to * sizeof(iFMod[0])); | |
| --- | |
| > if (s_chan->bFMod == 2) { // fmod freq channel | |
| > memcpy(iFMod, ChanBuf, ns_to * sizeof(iFMod[0])); | |
| > } | |
| 1016c1031 | |
| < else if (s_chan->bFMod == 2 | |
| --- | |
| > else if ((s_chan->bFMod == 2 && s_chan->iLeftVolume == 0 && s_chan->iRightVolume == 0) | |
| 1036,1037c1051,1057 | |
| < if (s_chan->bFMod == 2) // fmod freq channel | |
| < memcpy(iFMod, &ChanBuf, ns_to * sizeof(iFMod[0])); | |
| --- | |
| > if (isTitleName(METAL_GEAR_SOLID_DISC_1_JP) || isTitleName(METAL_GEAR_SOLID_DISC_1_US)){ | |
| > detect_pi(ch, ns_to); | |
| > } | |
| > | |
| > if (s_chan->bFMod == 2) { // fmod freq channel | |
| > memcpy(iFMod, ChanBuf, ns_to * sizeof(iFMod[0])); | |
| > } | |
| 1195a1216 | |
| > memset(SSumLR, 0, ns_to * 2 * sizeof(SSumLR[0])); | |
| 1346a1368,1374 | |
| > // SPU Reset stream buffer | |
| > int SPUResetStream(void) { | |
| > RemoveStreams(); | |
| > SetupStreams(); | |
| > return 0; | |
| > } | |
| > | |
| 1638a1667,1783 | |
| > int pi_first[]={ | |
| > 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, | |
| > 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000223, 0x00001093, | |
| > 0x00001f21, 0x00002c93, 0x0000391f, 0x00004593, 0x00005140, 0x00005b8c, 0x00006497, 0x00006ca4}; | |
| > | |
| > void detect_pi(int ch, int ns_to){ | |
| > | |
| > int result = 0; | |
| > int pi_size = (sizeof(pi_first)/sizeof(int)); | |
| > int i=0,start_index=0,end_index=0,remain=0; | |
| > static int judge_nextdata[24]={0}; | |
| > static int judge_nextdata_index[24]={0}; | |
| > | |
| > if(!judge_nextdata[ch]){ | |
| > if(pi_size <= ns_to){ | |
| > start_index = 0; | |
| > end_index = pi_size; | |
| > } | |
| > else{ | |
| > start_index = 0; | |
| > end_index = ns_to; | |
| > remain=1; | |
| > } | |
| > } | |
| > else{ | |
| > if((pi_size - judge_nextdata_index[ch]) <= ns_to){ | |
| > start_index = judge_nextdata_index[ch]; | |
| > end_index = pi_size - judge_nextdata_index[ch]; | |
| > } | |
| > else{ | |
| > start_index = judge_nextdata_index[ch]; | |
| > end_index = ns_to; | |
| > remain=1; | |
| > } | |
| > } | |
| > | |
| > for(i=0; i<end_index; i++){ | |
| > if( ChanBuf[i] != pi_first[start_index + i]){ | |
| > break; | |
| > } | |
| > } | |
| > | |
| > if((i == end_index) && (remain ==1)){ | |
| > judge_nextdata[ch] = 1; | |
| > judge_nextdata_index[ch] = start_index + i; | |
| > } | |
| > else if(i == end_index){ | |
| > result = 1; | |
| > } | |
| > else{ | |
| > judge_nextdata[ch] = 0; | |
| > judge_nextdata_index[ch] = 0; | |
| > } | |
| > | |
| > if (result == 1) { | |
| > set_bo_trg(1, ch); | |
| > memset(judge_nextdata,0,sizeof(judge_nextdata)); | |
| > memset(judge_nextdata_index,0,sizeof(judge_nextdata_index)); | |
| > } | |
| > else { | |
| > set_bo_trg(0, ch); | |
| > } | |
| > } | |
| > | |
| > void CALLBACK SPUfadein(void) | |
| > { | |
| > int end = spu_config.iVolume; | |
| > float t, v; | |
| > | |
| > spu_config.iVolume = 0; | |
| > usleep(300000); | |
| > | |
| > if (spu_config.iVolume != 0) end = spu_config.iVolume; | |
| > | |
| > for (t = -2; t <= 2; t += 0.125) { | |
| > v = (tanh(t) + 1) * (end / 2.0); | |
| > spu_config.iVolume = (int)v; | |
| > usleep(62500); | |
| > if (spu_config.iVolume != (int)v) end = spu_config.iVolume; | |
| > } | |
| > | |
| > spu_config.iVolume = end; | |
| > | |
| > return; | |
| > } | |
| > | |
| > void CALLBACK SPUenableRvbConfig(int val) | |
| > { | |
| > if (isTitleName(ARC_THE_LAD_JP)) { | |
| > isRvbConfigEnabled = val; | |
| > if (isRvbConfigEnabled) { | |
| > spu_config.iUseInterpolation = 3; | |
| > spu_config.iTempo = 1; | |
| > } else { | |
| > spu_config.iUseInterpolation = 1; | |
| > spu_config.iTempo = 0; | |
| > } | |
| > } else if (isTitleName(PARASITE_EVE_DISC_1_JP)) { | |
| > isRvbConfigEnabled = val; | |
| > } | |
| > | |
| > return; | |
| > } | |
| > | |
| > int SPUisRvbConfigEnabled(void) | |
| > { | |
| > int val = 0; | |
| > | |
| > if (isTitleName(ARC_THE_LAD_JP)) { | |
| > val = isRvbConfigEnabled; | |
| > } else if (isTitleName(PARASITE_EVE_DISC_1_JP)) { | |
| > val = isRvbConfigEnabled; | |
| > } | |
| > | |
| > return val; | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/spu.h pcsx_rearmed_custom/plugins/dfsound/spu.h | |
| 20a21,24 | |
| > int SPUResetStream(void); | |
| > void CALLBACK SPUfadein(void); | |
| > void CALLBACK SPUenableRvbConfig(int val); | |
| > int SPUisRvbConfigEnabled(void); | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfsound/xa.c pcsx_rearmed_custom/plugins/dfsound/xa.c | |
| 20a21,23 | |
| > #include "../../libpcsxcore/title.h" | |
| > | |
| > #include "../libpcsxcore/title.h" | |
| 24a28,29 | |
| > extern int isTitleName(enum TITLE_NAME argTitleName); | |
| > | |
| 114a120,139 | |
| > | |
| > if(isTitleName(JUMPING_FLASH_EU) || | |
| > isTitleName(GRADIUS_GAIDEN_JP) || | |
| > isTitleName(JUMPING_FLASH_JP) || | |
| > isTitleName(JUMPING_FLASH_US) || | |
| > isTitleName(KAGERO_JP) || | |
| > isTitleName(MEDIEVIL_EU) || | |
| > isTitleName(MEDIEVIL_US) || | |
| > isTitleName(RESIDENT_EVIL_EU) || | |
| > isTitleName(RESIDENT_EVIL_JP) || | |
| > isTitleName(RESIDENT_EVIL_US) || | |
| > isTitleName(STREET_FIGHTER_EX_PLUS_EU) || | |
| > isTitleName(STREET_FIGHTER_EX_PLUS_JP) || | |
| > isTitleName(STREET_FIGHTER_EX_PLUS_US) || | |
| > isTitleName(TEKKEN3_EU) || | |
| > isTitleName(TEKKEN3_JP) || | |
| > isTitleName(XEVIOUS_3D_G_JP) || | |
| > isTitleName(XEVIOUS_3D_G_US)) { | |
| > spu.XARepeat = 0; // set up repeat | |
| > } else { | |
| 115a141 | |
| > } | |
| 116a143,151 | |
| > if(isTitleName(MEGA_MAM_LEGENDS_EU) || | |
| > isTitleName(MEGA_MAM_LEGENDS_JP) || | |
| > isTitleName(MEGA_MAM_LEGENDS_US) ) { | |
| > if(xap->stereo){ | |
| > iSize=((44100*xap->nsamples)/xap->freq); // get size | |
| > } else { | |
| > iSize=((45500*xap->nsamples)/xap->freq); // get size | |
| > } | |
| > } else { | |
| 121a157,158 | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfxvideo/gpu.c pcsx_rearmed_custom/plugins/dfxvideo/gpu.c | |
| 1078a1079,1080 | |
| > uint32_t ulEventStatus; // event status | |
| > uint32_t ulEventCnt; // event count | |
| 1141a1144,1145 | |
| > scenes = &cbs->gpu_peops.scenes; | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfxvideo/gpu.h pcsx_rearmed_custom/plugins/dfxvideo/gpu.h | |
| 233a234 | |
| > extern int *scenes; | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfxvideo/gpulib_if.c pcsx_rearmed_custom/plugins/dfxvideo/gpulib_if.c | |
| 77c77,78 | |
| < #define PUTLE16(X, Y) do{*((uint16_t *)X)=HOST2LE16((uint16_t)Y);}while(0) | |
| --- | |
| > #define PUTLE16(X, Y) do{*((uint16_t *)X)=HOST2LE16((uint16_t)Y); \ | |
| > if(GlobalTextTP!=2 && gpu.vram2) *((uint16_t *)(psxVuw_t + (X - psxVuw)))=HOST2LE16((uint16_t)Y);}while(0) | |
| 86a88,263 | |
| > static const unsigned int SKIP_DATA_MASK[12] = { | |
| > 0xffffffff, 0x01ff03ff, 0x00000000, 0x00ffffff, | |
| > 0x01ff03ff, 0x01e00000, 0x00ffffff, 0x01ff03ff, | |
| > 0x00000000, 0x00ffffff, 0x01ff03ff, 0x00000000 | |
| > }; | |
| > #define CMD_DATA_COUNT (123) | |
| > static unsigned int skip_frame_data[CMD_DATA_COUNT][12] = { | |
| > /*135*/ 0x3c416752, 0x55ff60, 0x3ce0f258, 0x3f644e, 0x55ff6c, 0x90f251, 0x9324f38, 0x8cff5e, 0xd358, 0x8314d36, 0x8aff6b, 0x3e15d351, | |
| > /*135*/ 0x3c808080, 0xff77ffe4, 0x3e892795, 0x3c808080, 0xff72ffeb, 0x1052696, 0x3c808080, 0xff75ffed, 0x3c802798, 0x3c808080, 0xff6ffff3, 0x3c802598, | |
| > /*136*/ 0x3c416752, 0x56ff62, 0x3ce0f258, 0x3f644e, 0x55ff6e, 0x90f251, 0x8324f38, 0x8dff60, 0xffcad358, 0x8314d36, 0x8aff6d, 0x3c32d351, | |
| > /*136*/ 0x3c808080, 0xff7affe5, 0x3e89008b, 0x3c808080, 0xff76ffeb, 0x100008f, 0x3c808080, 0xff79ffed, 0x91, 0x3c808080, 0xff72fff3, 0x3e890096, | |
| > /*221*/ 0x3c50744d, 0xff56, 0x3cc0513e, 0x3c23371e, 0xffd0ff57, 0x92003e, 0x3c50744d, 0xff69, 0x8385100, 0x3c23371e, 0xffcbff69, 0xc0b0000, | |
| > /*222*/ 0x3c50744d, 0xff57, 0x3cc0513e, 0x3c23371e, 0xffd0ff57, 0x92003e, 0x3c50744d, 0xff69, 0x645100, 0x3c23371e, 0xffcbff69, 0xc0b0000, | |
| > /*287*/ 0x3c808080, 0x0034ffbc, 0x3e189d6b, 0x3c808080, 0x0035ffbc, 0x01059e6b, 0x3c808080, 0x0033ffbb, 0x3e899c6a, 0x3c808080, 0x0035ffbc, 0x01069e6b, | |
| > /*287*/ 0x3c808080, 0xffe20074, 0x3e89b16e, 0x3c808080, 0xffe20071, 0x0100b267, 0x3c808080, 0xffe10073, 0x0014af6d, 0x3c808080, 0xffe20071, 0xfff7b067, | |
| > /*287*/ 0x3c406550, 0xffe3ffdb, 0x3d20003f, 0x3c3c5f49, 0xffe5ffef, 0x91002f, 0x3c5d9482, 0x33ffda, 0x103f3f, 0x3c538471, 0x32ffef, 0x103f2f, | |
| > /*288*/ 0x3c406550, 0xffe4ffdf, 0x3d20003f, 0x3c3c5f49, 0xffe6fff3, 0x91002f, 0x3c5d9482, 0x33ffde, 0x103f3f, 0x3c538471, 0x33fff3, 0x3c3d3f2f, | |
| > /*338*/ 0x3c42683d, 0xff8affdd, 0x3e4d00d3, 0x3c6aa86d, 0xff890000, 0x1500b4, 0x3c42683d, 0xff92ffdf, 0x3c723ed3, 0x3c5d9b73, 0xff910007, 0x3c6f3eb4, | |
| > /*339*/ 0x3c42683d, 0xff8fffdc, 0x3e4d00d3, 0x3c6aa86d, 0xff8effff, 0x1500b4, 0x3c42683d, 0xff96ffde, 0x3c723ed3, 0x3c5d9b73, 0xff960006, 0x3c6f3eb4, | |
| > /*314*/ 0x3c42683d, 0xff8cffd9, 0x3e3d00d7, 0x3c42683d, 0xff8bfff7, 0x001500b8, 0x3c42683d, 0xff91ffdb, 0x3c5e3ed7, 0x3c6aa86d, 0xff91fffd, 0x3c6d3eb8, | |
| > /*349*/ 0x3c42683d, 0xff96004a, 0x3e3d3ed7, 0x3c5d9b73, 0xff930021, 0x00153ef6, 0x3c42683d, 0xff8b004c, 0x3c5100d7, 0x3c6aa86d, 0xff890028, 0x3c6100f6, | |
| > /*374*/ 0x3c42683d, 0xff95004a, 0x3e4d3ed3, 0x3c5d9b73, 0xff930021, 0x153ef2, 0x3c42683d, 0xff8a004d, 0x3c5100d3, 0x3c6aa86d, 0xff880028, 0x3c6100f2, | |
| > /*375*/ 0x3c42683d, 0xff95004a, 0x3e4d3ed3, 0x3c5d9b73, 0xff930021, 0x153ef2, 0x3c42683d, 0xff8a004d, 0x3c5100d3, 0x3c6aa86d, 0xff890028, 0x3c6100f2, | |
| > /*399*/ 0x3c456240, 0x100053, 0x3e868e00, 0x3c456240, 0x100070, 0x168e2e, 0x3c324f2d, 0x3b0055, 0x14eddc00, 0x3c324f2d, 0x3c0073, 0x10e8dc2e, | |
| > /*400*/ 0x3c23371e, 0x110053, 0x3e81a0f4, 0x3c23371e, 0x100053, 0x13a0fa, 0x3c23371e, 0x3c0055, 0xeef4, 0x3c23371e, 0x3c0055, 0xffceeefa, | |
| > /*540*/ 0x3c577555, 0xffc9009a, 0x3d20001b, 0x25d7d5d, 0xffca00b2, 0x910027, 0x537353, 0xffe5009d, 0xffae0e1b, 0x25a7d5d, 0xffe300b6, 0xffae0d27, | |
| > /*541*/ 0x3c577555, 0xffc9009a, 0x3d20001b, 0x25d7d5d, 0xffca00b2, 0x910027, 0x537353, 0xffe5009d, 0x3c7f0e1b, 0x25a7d5d, 0xffe300b6, 0x3c800d27, | |
| > /*541*/ 0x3c808080, 0x1c0010, 0x3e898bac, 0x3c808080, 0x1e0007, 0x1058ea6, 0x3c808080, 0x290016, 0xffa498b1, 0x3c808080, 0x2f000e, 0x3c809fab, | |
| > /*79 */ 0x3c5a5549, 0xffd1ff76, 0x3bf07fa8, 0x0067645b, 0xffabff6d, 0x00135fa8, 0x006d6a63, 0xffd5ff9b, 0x3c817fc7, 0x0092918c, 0xffacff96, 0x0c195fc7, | |
| > /*80 */ 0x3c5a5549, 0xffd2ff75, 0x3bf07fa8, 0x0067645b, 0xffabff6c, 0x00135fa8, 0x006d6a63, 0xffd5ff9b, 0x3c647fc7, 0x0092918c, 0xffacff95, 0x0c1c5fc7, | |
| > /*81 */ 0x3c5a5549, 0xffd3ff74, 0x3bf07fa8, 0x0067645b, 0xffacff6b, 0x00135fa8, 0x006d6a63, 0xffd6ff9a, 0x3c817fc7, 0x0092918c, 0xffadff94, 0x0c195fc7, | |
| > /*248*/ 0x3c75736e, 0xffabff4f, 0x3bf03fa8, 0x056f6c66, 0xff8fff4f, 0x00132fa8, 0x00969692, 0xffa7ff66, 0x00143fb7, 0x048a8984, 0xff8aff67, 0x003d2fb7, | |
| > /*249*/ 0x3c6f6c66, 0xff90ff4f, 0x3bf02fa8, 0x0569665e, 0xff74ff51, 0x00131fa8, 0x048a8984, 0xff8aff67, 0x00142fb7, 0x047f7d77, 0xff6dff68, 0x00731fb7, | |
| > /*248*/ 0x3c808080, 0xff7c0019, 0x3e1600ff, 0x3c808080, 0xff890000, 0x010100ff, 0x3c808080, 0xff7c0016, 0x001300ff, 0x3c808080, 0xff88fffe, 0x088400ff, | |
| > /*249*/ 0x3c808080, 0xff81001b, 0x3e1600b3, 0x3c808080, 0xff8f0001, 0x010000a0, 0x3c808080, 0xff800018, 0x001300b1, 0x3c808080, 0xff8effff, 0x0884009e, | |
| > /*302*/ 0x3c745b51, 0xfff3ff5c, 0x3bf03fe7, 0x3c463b31, 0xffceff5d, 0x001300e7, 0x3cffc0b6, 0xfff2ff80, 0x00173fa8, 0x3c785e54, 0xffccff81, 0x3e7a00a8, | |
| > /*302*/ 0x3c745b51, 0xfff2ff5c, 0x3bf03fe7, 0x3c463b31, 0xffcdff5d, 0x001300e7, 0x3cffc0b6, 0xfff1ff80, 0x00173fa8, 0x3c785e54, 0xffcbff81, 0x001800a8, | |
| > /*303*/ 0x3c745b51, 0xfff3ff5c, 0x3bf03fe7, 0x3c463b31, 0xffceff5d, 0x001300e7, 0x3cffc0b6, 0xfff3ff80, 0x45453fa8, 0x3c785e54, 0xffccff81, 0x424200a8, | |
| > /* 23*/ 0x3c808080, 0x015bfff2, 0x3af85009, 0x3c808080, 0x0156ffec, 0x001a4711, 0x3c808080, 0x014cffe8, 0xfff94e00, 0x3c808080, 0x014cffe8, 0xfff24e00, | |
| > /* 23*/ 0x3c808080, 0x014cffdf, 0x3af84e00, 0x3c808080, 0x0156ffdc, 0x001a4711, 0x3c808080, 0x015cffd8, 0xff8b5009, 0x3c808080, 0x015cffd8, 0xff9c5009, | |
| > /* 24*/ 0x3c808080, 0x015bfff3, 0x3af8df96, 0x3c808080, 0x0156ffed, 0x0105df91, 0x3c808080, 0x014cffe9, 0x3b77df8e, 0x3c808080, 0x014cffe9, 0x001adf8e, | |
| > /* 24*/ 0x3c808080, 0x014cffe0, 0x3af8df88, 0x3c808080, 0x0156ffdd, 0x0105df85, 0x3c808080, 0x015cffd9, 0x3b77df82, 0x3c808080, 0x015cffd9, 0x001adf82, | |
| > /* 87*/ 0x3c808080, 0x0016001a, 0x3af8c682, 0x3c808080, 0x0010001b, 0x0100be82, 0x3c808080, 0x00170014, 0x3c32c686, 0x3c808080, 0x00110015, 0x3c32be85, | |
| > /* 87*/ 0x3c808080, 0x00190014, 0x3af8df84, 0x3c808080, 0x00170014, 0x0100da84, 0x3c808080, 0x00290018, 0x3c80d685, 0x3c808080, 0x00220019, 0x3c80d384, | |
| > /* 88*/ 0x3c808080, 0x002c0022, 0x3af895ba, 0x3c808080, 0x0026001e, 0x01058fb7, 0x3c808080, 0x001d001b, 0x005786b5, 0x3c808080, 0x001a001b, 0x0c1c84b5, | |
| > /* 88*/ 0x3c808080, 0xffdafff2, 0x3bb84198, 0x3c808080, 0xffc9ffe9, 0x01053196, 0x3c808080, 0xffd8fff3, 0x02694099, 0x3c808080, 0xffc7ffea, 0x03852e97, | |
| > /* 25*/ 0x3c808080, 0xffceffdb, 0x3af582f3, 0x3c808080, 0xffd6ffd5, 0x001d8ff3, 0x3c808080, 0xffc7ffe0, 0xfc0082e9, 0x3c808080, 0xffccffdc, 0xfc0089ea, | |
| > /* 25*/ 0x3c808080, 0xffb3ffde, 0x3af57eee, 0x3c808080, 0xffb5fff1, 0x001d90f0, 0x3c808080, 0xffb6ffe8, 0xfc008cec, 0x3c808080, 0xffb6ffe8, 0xfc008cec, | |
| > /* 26*/ 0x3c808080, 0xffcfffda, 0x3af582f3, 0x3c808080, 0xffd6ffd4, 0x001d8ff3, 0x3c808080, 0xffc7ffdf, 0xfc0082e9, 0x3c808080, 0xffccffdb, 0xfc0089ea, | |
| > /* 26*/ 0x3c808080, 0xffb3ffde, 0x3af57eee, 0x3c808080, 0xffb6fff0, 0x001d90f0, 0x3c808080, 0xffb7ffe7, 0xfc008cec, 0x3c808080, 0xffb7ffe7, 0xfc008cec, | |
| > /* 26*/ 0x3c808080, 0x015bfff2, 0x3af8df95, 0x3c808080, 0x0155ffec, 0x0105df91, 0x3c808080, 0x014cffe8, 0x3b77df8e, 0x3c808080, 0x014cffe8, 0x001adf8e, | |
| > /* 26*/ 0x3c808080, 0x014dffde, 0x3af8df87, 0x3c808080, 0x0156ffdc, 0x0105df85, 0x3c808080, 0x015cffd8, 0x3b77df82, 0x3c808080, 0x015cffd8, 0x001adf82, | |
| > /* 27*/ 0x3c808080, 0xffcfffd9, 0x3af53e84, 0x3c808080, 0xffd7ffd2, 0x0105467f, 0x3c808080, 0xffc8ffdd, 0xfc003788, 0x3c808080, 0xffcdffd9, 0xfc003c85, | |
| > /* 27*/ 0x3c808080, 0xffb4ffdc, 0x3af52386, 0x3c808080, 0xffb7ffee, 0x01052594, 0x3c808080, 0xffb7ffe6, 0xfc00268e, 0x3c808080, 0xffb7ffe6, 0xfc00268e, | |
| > /* 28*/ 0x3c808080, 0xffd0ffd7, 0x3af53f83, 0x3c808080, 0xffd8ffd1, 0x0100467f, 0x3c808080, 0xffc8ffdc, 0xfc003787, 0x3c808080, 0xffcdffd8, 0xfc003c84, | |
| > /* 28*/ 0x3c808080, 0xffb5ffdb, 0x3af52386, 0x3c808080, 0xffb8ffec, 0x01002694, 0x3c808080, 0xffb8ffe4, 0xfc00278d, 0x3c808080, 0xffb8ffe4, 0xfc00278d, | |
| > /* 29*/ 0x3c808080, 0xffd0ffd6, 0x3af53f82, 0x3c808080, 0xffd8ffcf, 0x0105477d, 0x3c808080, 0xffc9ffdb, 0xfc003885, 0x3c808080, 0xffceffd6, 0xfc003d82, | |
| > /* 29*/ 0x3c808080, 0xffb5ffda, 0x3af52485, 0x3c808080, 0xffb8ffeb, 0x01052792, 0x3c808080, 0xffb9ffe3, 0xfc00278c, 0x3c808080, 0xffb9ffe3, 0xfc00278c, | |
| > /*167*/ 0x3c808080, 0x00ab0011, 0x3c3bdf74, 0x3c808080, 0x00a80014, 0x0100df70, 0x3c808080, 0x00b6000f, 0x02bcdf7f, 0x3c808080, 0x00b10013, 0x3c3fdf79, | |
| > /*167*/ 0x3c808080, 0x00b7001d, 0x3c3bdf6a, 0x3c808080, 0x00b20019, 0x0100df6f, 0x3c808080, 0x00ae001a, 0x01fcdf66, 0x3c808080, 0x00a90018, 0x3c32df69, | |
| > /*168*/ 0x3c808080, 0x00ac0012, 0x3c3bdf74, 0x3c808080, 0x00a90014, 0x0105df70, 0x3c808080, 0x00b7000f, 0x02dddf7f, 0x3c808080, 0x00b20013, 0x3c40df79, | |
| > /*168*/ 0x3c808080, 0x00b8001d, 0x3c3bdf6a, 0x3c808080, 0x00b20019, 0x0105df70, 0x3c808080, 0x00ae001a, 0x020edf67, 0x3c808080, 0x00aa0018, 0x3c27df6a, | |
| > /*169*/ 0x3c808080, 0x00ad0012, 0x3c3bdfad, 0x3c808080, 0x00a90014, 0x0100dfaf, 0x3c808080, 0x00b8000f, 0x02bcdfac, 0x3c808080, 0x00b30013, 0x3c3fdfaf, | |
| > /*169*/ 0x3c808080, 0x00b9001d, 0x3c3bdfb6, 0x3c808080, 0x00b3001a, 0x0100dfb3, 0x3c808080, 0x00af001a, 0x01fcdfb4, 0x3c808080, 0x00ab0018, 0x3c32dfb2, | |
| > /*181*/ 0x3c808080, 0x0024fff0, 0x3df928f4, 0x3c808080, 0x0021ffea, 0x007628fc, 0x3c808080, 0x0025ffef, 0x00172bf4, 0x3c808080, 0x0026ffe7, 0xff922bfd, | |
| > /*181*/ 0x3c808080, 0x000b0001, 0x3db3bbff, 0x3c808080, 0x00060002, 0x0075b9ff, 0x3c808080, 0x0007fffa, 0xffc3bbf7, 0x3c808080, 0x000afffb, 0xffc3bbf7, | |
| > /*182*/ 0x3c808080, 0x000affec, 0x3db37ba1, 0x3c808080, 0x0005ffef, 0x010076a2, 0x3c808080, 0x0004ffe7, 0x3c80779b, 0x3c808080, 0x0006ffe6, 0x3c807a9c, | |
| > /*182*/ 0x3c808080, 0x000affec, 0x3dfc7ba1, 0x3c808080, 0x000cffed, 0x01007ca1, 0x3c808080, 0x0005ffef, 0x3c8076a2, 0x3c808080, 0x0007fff1, 0x3c8077a3, | |
| > /*151*/ 0x3c808080, 0x0011ffe9, 0x3d7c5465, 0x3c808080, 0x0012ffe9, 0x01054c65, 0x3c808080, 0x0012ffe8, 0x00175467, 0x3c808080, 0x0013ffe9, 0x012c4c67, | |
| > /*151*/ 0x3c808080, 0x0012ffe8, 0x3d7c4ba1, 0x3c808080, 0x0013ffe9, 0x010544a3, 0x3c808080, 0x0012ffe7, 0x3c6e4da1, 0x3c808080, 0x0013ffe8, 0x3c6e44a3, | |
| > /*152*/ 0x3c808080, 0x0012ffe8, 0x3d7c7e8f, 0x3c808080, 0x0014ffe8, 0x01007f8f, 0x3c808080, 0x0013ffe7, 0xad097f8e, 0x3c808080, 0x0015ffe8, 0xd46a808f, | |
| > /*152*/ 0x3c808080, 0xffe70002, 0x3d7c5a5b, 0x3c808080, 0xffe80001, 0x01005a5e, 0x3c808080, 0xffe80000, 0x08d95b5e, 0x3c808080, 0xffe80000, 0xc0645b5e, | |
| > /*153*/ 0x3c808080, 0x0025fffb, 0x3d7ba298, 0x3c808080, 0x0027fff5, 0x0105a493, 0x3c808080, 0x002dfffb, 0x000eab97, 0x3c808080, 0x002cfff6, 0xffe5a994, | |
| > /*153*/ 0x3c808080, 0xffec0001, 0x3d7c5ca1, 0x3c808080, 0xffecffff, 0x01055c9f, 0x3c808080, 0xffec0000, 0x00175da0, 0x3c808080, 0xffec0000, 0x3c805da0, | |
| > /*30 */ 0x3c808080, 0x015afff3, 0x3d001939, 0x3c808080, 0x0156ffed, 0x001a1041, 0x3c808080, 0x014bffe9, 0xffdc1730, 0x3c808080, 0x014bffe9, 0x00121730, | |
| > /*30 */ 0x3c808080, 0x014bffe0, 0x3d001730, 0x3c808080, 0x0156ffdd, 0x001a1041, 0x3c808080, 0x015cffd9, 0xff931939, 0x3c808080, 0x015cffd9, 0xffbb1939, | |
| > /*31 */ 0x3c808080, 0x015bfff2, 0x3d001939, 0x3c808080, 0x0156ffec, 0x001a1041, 0x3c808080, 0x014cffe8, 0x3d1b1730, 0x3c808080, 0x014cffe8, 0x00161730, | |
| > /*31 */ 0x3c808080, 0x014cffdf, 0x3d001730, 0x3c808080, 0x0156ffdc, 0x001a1041, 0x3c808080, 0x015cffd8, 0x3d1b1939, 0x3c808080, 0x015cffd8, 0x00161939, | |
| > /*32 */ 0x3c808080, 0x015bfff3, 0x3d001939, 0x3c808080, 0x0156ffed, 0x001a1041, 0x3c808080, 0x014cffe9, 0xffdc1730, 0x3c808080, 0x014cffe9, 0x00121730, | |
| > /*32 */ 0x3c808080, 0x014cffe0, 0x3d001730, 0x3c808080, 0x0157ffdd, 0x001a1041, 0x3c808080, 0x015cffd9, 0xff931939, 0x3c808080, 0x015cffd9, 0xffbb1939, | |
| > /*33 */ 0x3c808080, 0x015afff2, 0x3d00df96, 0x3c808080, 0x0155ffed, 0x0100df91, 0x3c808080, 0x014bffe9, 0x3d1bdf8e, 0x3c808080, 0x014bffe9, 0x0016df8e, | |
| > /*33 */ 0x3c808080, 0x014cffdf, 0x3d00df88, 0x3c808080, 0x0156ffdd, 0x0100df85, 0x3c808080, 0x015cffd9, 0x3d1bdf82, 0x3c808080, 0x015cffd9, 0x0016df82, | |
| > /*34 */ 0x3c808080, 0x015dfff2, 0x3d00df96, 0x3c808080, 0x0156ffec, 0x0105df91, 0x3c808080, 0x014effe9, 0xffdcdf8e, 0x3c808080, 0x014effe9, 0x0012df8e, | |
| > /*34 */ 0x3c808080, 0x014fffdf, 0x3d00df88, 0x3c808080, 0x0158ffdc, 0x0105df85, 0x3c808080, 0x015effd8, 0xff93df82, 0x3c808080, 0x015effd8, 0xffbbdf82, | |
| > /*35 */ 0x3c808080, 0x015efff3, 0x3d00df95, 0x3c808080, 0x0157ffed, 0x0100df91, 0x3c808080, 0x014fffe9, 0x3d1bdf8e, 0x3c808080, 0x014fffe9, 0x0016df8e, | |
| > /*35 */ 0x3c808080, 0x0150ffe0, 0x3d00df86, 0x3c808080, 0x0158ffdd, 0x0100df85, 0x3c808080, 0x015fffd9, 0x3d1bdf82, 0x3c808080, 0x015fffd9, 0x0016df82, | |
| > /*36 */ 0x3c808080, 0x006d001c, 0x3d4fdfb9, 0x3c808080, 0x00670009, 0x0105dfac, 0x3c808080, 0x006c0020, 0xffe4dfbc, 0x3c808080, 0x0065000c, 0xffe4dfaf, | |
| > /*36 */ 0x3c808080, 0x0075001f, 0x3d4fdfbb, 0x3c808080, 0x006e000c, 0x0105dfae, 0x3c808080, 0x006d001c, 0xffe2dfb9, 0x3c808080, 0x00670009, 0xffe2dfac, | |
| > /*111*/ 0x3c808080, 0x0018001b, 0x3d00c682, 0x3c808080, 0x0012001c, 0x0100be82, 0x3c808080, 0x00190015, 0x0035c686, 0x3c808080, 0x00130016, 0x0032be85, | |
| > /*111*/ 0x3c808080, 0x001b0015, 0x3d00df82, 0x3c808080, 0x00190015, 0x0100df82, 0x3c808080, 0x002b0019, 0x005ddd83, 0x3c808080, 0x00240019, 0x014cdb82, | |
| > /*112*/ 0x3c808080, 0x002f0022, 0x3d0095ba, 0x3c808080, 0x0028001e, 0x01058fb7, 0x3c808080, 0x0020001b, 0xffe786b5, 0x3c808080, 0x001d001b, 0xffab84b5, | |
| > /*112*/ 0x3c808080, 0x0028001e, 0x3d008fb7, 0x3c808080, 0x0021001d, 0x010587b6, 0x3c808080, 0x001d001b, 0x003084b5, 0x3c808080, 0x0018001c, 0x00007eb5, | |
| > /*113*/ 0x3c808080, 0x0033001f, 0x3d0093b7, 0x3c808080, 0x002c001d, 0x01008cb6, 0x3c808080, 0x0028001c, 0xffcf88b5, 0x3c808080, 0x0021001d, 0xffda82b5, | |
| > /*113*/ 0x3c808080, 0x00340019, 0x3d0094b3, 0x3c808080, 0x00290015, 0x010089b0, 0x3c808080, 0x002c0019, 0x01328cb3, 0x3c808080, 0x00220016, 0x043283b1, | |
| > /*191*/ 0x3c808080, 0x00670014, 0x3de2c2bb, 0x3c808080, 0x00630014, 0x0100b0b9, 0x3c808080, 0x0072001e, 0x0019d7c8, 0x3c808080, 0x0072001e, 0x3cd1d7c8, | |
| > /*191*/ 0x3c808080, 0x00630014, 0x3de2b0b9, 0x3c808080, 0x005f0014, 0x0100a1bb, 0x3c808080, 0x0067001d, 0x0019b4c9, 0x3c808080, 0x0064001c, 0x3c8da9c7, | |
| > /*192*/ 0x3c808080, 0x0063001d, 0x3de2dfcb, 0x3c808080, 0x005c001a, 0x0105dfc8, 0x3c808080, 0x0066001f, 0x001adfce, 0x3c808080, 0x0060001a, 0x3c84dfc9, | |
| > /*192*/ 0x3c808080, 0x00680014, 0x3de2d8af, 0x3c808080, 0x00630013, 0x0105d3af, 0x3c808080, 0x0073001e, 0x0019dfb7, 0x3c808080, 0x0073001e, 0x3cd1dfb7, | |
| > /*40 */ 0x3c808080, 0xffcfffda, 0x3ce582f3, 0x3c808080, 0xffd6ffd4, 0x001d8ff3, 0x3c808080, 0xffc7ffdf, 0xfc0082e9, 0x3c808080, 0xffccffdb, 0xfc0089ea, | |
| > /*41 */ 0x3c808080, 0xffcfffd9, 0x3ce53d85, 0x3c808080, 0xffd7ffd2, 0x01054580, 0x3c808080, 0xffc8ffdd, 0xfc003688, 0x3c808080, 0xffcdffd9, 0xfc003b85, | |
| > /*41 */ 0x3c808080, 0xffb4ffdc, 0x3ce52287, 0x3c808080, 0xffb7ffee, 0x01052595, 0x3c808080, 0xffb7ffe6, 0xfc00268e, 0x3c808080, 0xffb7ffe6, 0xfc00268e, | |
| > /*40 */ 0x3c808080, 0xffb3ffde, 0x3ce57eee, 0x3c808080, 0xffb6fff0, 0x001d90f0, 0x3c808080, 0xffb7ffe7, 0xfc008cec, 0x3c808080, 0xffb7ffe7, 0xfc008cec, | |
| > /*42 */ 0x3c808080, 0xffd0ffd7, 0x3ce53f83, 0x3c808080, 0xffd8ffd1, 0x0100467f, 0x3c808080, 0xffc8ffdc, 0xfc003787, 0x3c808080, 0xffcdffd8, 0xfc003c84, | |
| > /*42 */ 0x3c808080, 0xffb5ffdb, 0x3ce52386, 0x3c808080, 0xffb8ffec, 0x01002694, 0x3c808080, 0xffb8ffe4, 0xfc00278d, 0x3c808080, 0xffb8ffe4, 0xfc00278d, | |
| > /*43 */ 0x3c808080, 0xffd0ffd6, 0x3ce53f82, 0x3c808080, 0xffd8ffcf, 0x0105477d, 0x3c808080, 0xffc9ffdb, 0xfc003885, 0x3c808080, 0xffceffd6, 0xfc003d82, | |
| > /*43 */ 0x3c808080, 0xffb5ffda, 0x3ce52485, 0x3c808080, 0xffb8ffeb, 0x01052792, 0x3c808080, 0xffb9ffe3, 0xfc00278c, 0x3c808080, 0xffb9ffe3, 0xfc00278c, | |
| > /*276*/ 0x3c808080, 0x00ac0012, 0x3d83df74, 0x3c808080, 0x00a90014, 0x0105df70, 0x3c808080, 0x00b7000f, 0x02bcdf7f, 0x3c808080, 0x00b20013, 0x3c3fdf79, | |
| > /*276*/ 0x3c808080, 0x00b8001d, 0x3d83df6a, 0x3c808080, 0x00b20019, 0x0105df70, 0x3c808080, 0x00ae001a, 0x01fcdf67, 0x3c808080, 0x00aa0018, 0x3c27df6a, | |
| > /*277*/ 0x3c808080, 0x00ae0012, 0x3d83dfad, 0x3c808080, 0x00aa0014, 0x0100dfaf, 0x3c808080, 0x00b9000f, 0x02dddfac, 0x3c808080, 0x00b30013, 0x3c40dfaf, | |
| > /*277*/ 0x3c808080, 0x00ba001d, 0x3d83dfb6, 0x3c808080, 0x00b4001a, 0x0100dfb3, 0x3c808080, 0x00b0001a, 0x020edfb4, 0x3c808080, 0x00ac0018, 0x3c32dfb2, | |
| > /*253*/ 0x3c191e0a, 0x009600df, 0x38b18ffb, 0x3c242a14, 0x009300d2, 0x000c92fb, 0x3c779173, 0x007e00d3, 0x00958ff0, 0x3c748c6e, 0x008000c8, 0x009493f0, | |
| > /*254*/ 0x3c191e0a, 0x00bb00ee, 0x38b193fb, 0x3c4b5e48, 0x00a400dc, 0x000c94f0, 0x3c191e0a, 0x00b900ed, 0x001792fb, 0x3c687c5f, 0x00a300da, 0x0c1c93f0, | |
| > /*255*/ 0x3c33432f, 0x00cd0109, 0x38b18ffb, 0x3c191e0a, 0x00cc00fa, 0x000c92fb, 0x3c738a6c, 0x00af00ec, 0x00958ff0, 0x3c627457, 0x00b400e2, 0x009493f0, | |
| > /*266*/ 0x3c1a200c, 0x00a700ed, 0x38b18ffb, 0x3c1e240f, 0x00a500de, 0x000c92fb, 0x3c779072, 0x008d00db, 0x00178ff0, 0x3c6e8567, 0x009000d0, 0x0c1c93f0, | |
| > /*73 */ 0x3c808080, 0xffdbfff4, 0x3d3c4e56, 0x3c808080, 0xffdefff4, 0x01054e55, 0x3c808080, 0xffd5fff0, 0x3c994459, 0x3c808080, 0xffd5fff0, 0x3c954459, | |
| > /*73 */ 0x3c808080, 0xffd5fff0, 0x3d3c4459, 0x3c808080, 0xffd5fff2, 0x01054d58, 0x3c808080, 0xffdbfff4, 0x3ccb4e56, 0x3c808080, 0xffdbfff4, 0x3cdc4e56, | |
| > /*74 */ 0x3c808080, 0xffddfff3, 0x3d3c465a, 0x3c808080, 0xffdffff7, 0x01004555, 0x3c808080, 0xffdffff2, 0x7742405a, 0x3c808080, 0xffdffff2, 0xc87d405a, | |
| > /*74 */ 0x3c808080, 0xffde0000, 0x3d3c5dac, 0x3c808080, 0xffe30001, 0x01005fac, 0x3c808080, 0xffe0fffc, 0xde585dac, 0x3c808080, 0xffe5fffe, 0x028160ac, | |
| > /*75 */ 0x3c808080, 0xfff0fff7, 0x3d7c549b, 0x3c808080, 0xffeefff5, 0x0105519a, 0x3c808080, 0xffeffff7, 0x3c68539c, 0x3c808080, 0xffeffff7, 0x3c7e539c, | |
| > /*75 */ 0x3c808080, 0xffe7fff1, 0x3d3c4b97, 0x3c808080, 0xffeafff1, 0x01054e97, 0x3c808080, 0xffe2ffed, 0x3c994594, 0x3c808080, 0xffe2ffed, 0x3c954594, | |
| > /*76 */ 0x3c808080, 0xfff3fff5, 0x3d7c5a9a, 0x3c808080, 0xfff1fff3, 0x01005899, 0x3c808080, 0xfff2fff5, 0x5c4d5a9a, 0x3c808080, 0xfff2fff5, 0x0de15a9a, | |
| > /*76 */ 0x3c808080, 0xffeaffef, 0x3d3c5195, 0x3c808080, 0xffedffef, 0x01005496, 0x3c808080, 0xffe5ffeb, 0x0b2f4c93, 0x3c808080, 0xffe5ffeb, 0xc9694c93, | |
| > /*30 */ 0x3c808080, 0x0027000e, 0x3d73a588, 0x3c808080, 0x0024000e, 0x0100a288, 0x3c808080, 0x00270012, 0x9f92a48b, 0x3c808080, 0x00240012, 0x5e72a28b, | |
| > /*30 */ 0x3c808080, 0x0021000e, 0x3d7ba088, 0x3c808080, 0x0026000f, 0x0100a189, 0x3c808080, 0x001b000b, 0x3a3ea68a, 0x3c808080, 0x0021000c, 0xda49a88a, | |
| > /*31 */ 0x3c808080, 0x000c0011, 0x3d7b978b, 0x3c808080, 0x0009000d, 0x0105968a, 0x3c808080, 0x000e0011, 0x00f9998b, 0x3c808080, 0x000c000d, 0x3c50988a, | |
| > /*31 */ 0x3c808080, 0x0020000f, 0x3d7ba288, 0x3c808080, 0x00260010, 0x0105a389, 0x3c808080, 0x001c000c, 0x01d9a88a, 0x3c808080, 0x0022000d, 0x3c93aa8a, | |
| > /*32 */ 0x3c808080, 0x0024000e, 0x3d7391a9, 0x3c808080, 0x0021000f, 0x01008eab, 0x3c808080, 0x0025000f, 0x829494ab, 0x3c808080, 0x00210010, 0xbf7790ac, | |
| > /*32 */ 0x3c808080, 0x00240013, 0x3d7391ae, 0x3c808080, 0x00250013, 0x010094ae, 0x3c808080, 0x00210012, 0x24868eac, 0x3c808080, 0x00210011, 0x312390ac, | |
| > /*33 */ 0x3c808080, 0x0009000d, 0x3d7b79aa, 0x3c808080, 0x00090009, 0x010578a7, 0x3c808080, 0x000d000d, 0x00f97caa, 0x3c808080, 0x000d0009, 0x3c707ca7, | |
| > /*33 */ 0x3c808080, 0x00060002, 0x3d7b80a6, 0x3c808080, 0xffff0002, 0x01057aa5, 0x3c808080, 0x0005fffb, 0x03ff80a1, 0x3c808080, 0x0000fffb, 0x3c807ba0, | |
| > }; | |
| > #define PMT_CMD_COUNT (12) | |
| > #define PMT_CMD_SIZE (8) | |
| > #define PMT_CMD_ex_SIZE (1) | |
| > #define PMT_CMD_60_SIZE (3) | |
| > #define PMT_CMD_64_SIZE (4) | |
| > | |
| > const unsigned int PMT_MASK_60_62[PMT_CMD_60_SIZE] = { | |
| > 0xffffffff, 0x001fffff, 0x01ff03ff | |
| > }; | |
| > static const unsigned int PMT_MASK_64[PMT_CMD_64_SIZE] = { | |
| > 0xffffffff, 0x00ffffff, 0xffffffff, 0x01ff03ff | |
| > }; | |
| > static const unsigned int PMT_MASK_38[PMT_CMD_SIZE] = { | |
| > 0xffffffff, 0x001fffff, 0x00ffffff, 0, 0x00ffffff, 0x001fffff, 0x00ffffff, 0 | |
| > }; | |
| > /* PMT life label */ | |
| > static unsigned int* PMT_MASK[PMT_CMD_COUNT] = { | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_38, | |
| > PMT_MASK_60_62, | |
| > PMT_MASK_64, | |
| > PMT_MASK_64, | |
| > PMT_MASK_64, | |
| > PMT_MASK_64, | |
| > PMT_MASK_64 | |
| > }; | |
| > static const unsigned int PMT_CMD[PMT_CMD_COUNT][PMT_CMD_SIZE+1] = { | |
| > /* 35, cmd 60,len 3 */ 3, 0x60000000, 0x00280048, 0x00060001, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 60,len 3 */ 3, 0x60000000, 0x002d0010, 0x00010038, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 60,len 3 */ 3, 0x60000000, 0x00280010, 0x00010038, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 60,len 3 */ 3, 0x60000000, 0x0028000f, 0x00060001, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 62,len 3 */ 3, 0x62181800, 0x00290010, 0x00040038, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 38,len 8 */ 8, 0x385fbf1f, 0x00290010, 0x005fbf1f, 0x00290027, 0x005fbf1f, 0x002d0010, 0x645fbf1f, 0x002d0027, | |
| > /* 35, cmd 62,len 3 */ 3, 0x62000000, 0x002b0013, 0x00070020, 0, 0, 0, 0, 0, | |
| > /* 35, cmd 64,len 4 */ 4, 0x64ffffff, 0x002c002c, 0x7ffced42, 0x00050006, 0, 0, 0, 0, | |
| > /* 35, cmd 64,len 4 */ 4, 0x64ffffff, 0x002c0026, 0x7ffced90, 0x00050006, 0, 0, 0, 0, | |
| > /* 35, cmd 64,len 4 */ 4, 0x64ffffff, 0x002c0020, 0x7ffced66, 0x00050006, 0, 0, 0, 0, | |
| > /* 35, cmd 64,len 4 */ 4, 0x64ffffff, 0x002c001a, 0x7ffced18, 0x00050006, 0, 0, 0, 0, | |
| > /* 35, cmd 64,len 4 */ 4, 0x64ffffff, 0x002c0014, 0x7ffced48, 0x00050006, 0, 0, 0, 0 | |
| > }; | |
| > extern int g_gpu_patch_flag; | |
| 201a379,383 | |
| > extern int isToShinDen; | |
| > extern int isBiosLogoEnd; | |
| > extern int *scenes; | |
| > extern int regions; | |
| > extern int iTrimJaggyFrame; | |
| 243a426 | |
| > unsigned short *psxVuw_t; | |
| 278a462,465 | |
| > if (gpu.vram2) | |
| > psxVuw_t = gpu.vram2; | |
| > else | |
| > psxVuw_t = psxVuw; | |
| 309a497,544 | |
| > static void check_skip_frame(unsigned int *list) { | |
| > for (int i=0;i<CMD_DATA_COUNT;i++) { | |
| > int count = 0; | |
| > for (int cs=0;cs<12;cs++) { | |
| > if ((skip_frame_data[i][cs]&SKIP_DATA_MASK[cs]) == (list[cs]&SKIP_DATA_MASK[cs])){ | |
| > count ++; | |
| > } | |
| > else { | |
| > count = 0; | |
| > break; | |
| > } | |
| > } | |
| > if (count == 12 && !gpu.state.skip_frame) { | |
| > gpu.state.skip_frame = 1; | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| > static int pmt_cmd_count = 0; | |
| > void check_pmt_cmd(unsigned int cmd, unsigned int len, unsigned int *list) { | |
| > if (gpu.state.dma_chain) { | |
| > pmt_cmd_count = 0; | |
| > gpu.state.dma_chain = 0; | |
| > gpu.state.pmt_show = 0; | |
| > } | |
| > if (gpu.state.pmt_show) | |
| > return; | |
| > | |
| > int pos = 0; | |
| > for (int i=0;i<PMT_CMD[pmt_cmd_count][0];i++) { | |
| > if ((PMT_CMD[pmt_cmd_count][i+1] & *(PMT_MASK[pmt_cmd_count] + i)) == (list[i] & *(PMT_MASK[pmt_cmd_count] + i))) { | |
| > pos ++; | |
| > } | |
| > else | |
| > break; | |
| > } | |
| > if (pos >= PMT_CMD[pmt_cmd_count][0]) { | |
| > pmt_cmd_count ++; | |
| > if (pmt_cmd_count >= PMT_CMD_COUNT) { | |
| > gpu.state.pmt_show = 1; | |
| > pmt_cmd_count = 0; | |
| > } | |
| > } | |
| > else | |
| > pmt_cmd_count = 0; | |
| > } | |
| > | |
| 335a571,577 | |
| > if ((g_gpu_patch_flag & 0x00000020) == 0x00000020) { | |
| > check_pmt_cmd(cmd, len, list); | |
| > } | |
| > | |
| > if (cmd==0x3c && !gpu.state.skip_frame && gpu.vram2) | |
| > check_skip_frame(list); | |
| > | |
| 434a677,681 | |
| > isToShinDen = cbs->gpu_peops.isToShinDen; | |
| > isBiosLogoEnd = cbs->gpu_peops.isBiosLogoEnd; | |
| > scenes = &cbs->gpu_peops.scenes; | |
| > regions = cbs->gpu_peops.regions; | |
| > iTrimJaggyFrame = cbs->gpu_peops.iTrimJaggyFrame; | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfxvideo/prim.c pcsx_rearmed_custom/plugins/dfxvideo/prim.c | |
| 34a35,39 | |
| > int isToShinDen=0; | |
| > int isBiosLogoEnd=0; | |
| > int *scenes; | |
| > int regions=0; | |
| > int iTrimJaggyFrame=0; | |
| 73a79,81 | |
| > case 3: | |
| > iDither=3; | |
| > break; | |
| 112,113c120,121 | |
| < #define CHKMAX_X 1024 | |
| < #define CHKMAX_Y 512 | |
| --- | |
| > #define CHKMAX_X 1023 | |
| > #define CHKMAX_Y 511 | |
| 173,232c181,192 | |
| < if(lx0<0) | |
| < { | |
| < if(((lx1-lx0)>CHKMAX_X) || | |
| < ((lx2-lx0)>CHKMAX_X)) | |
| < { | |
| < if(lx3<0) | |
| < { | |
| < if((lx1-lx3)>CHKMAX_X) return TRUE; | |
| < if((lx2-lx3)>CHKMAX_X) return TRUE; | |
| < } | |
| < } | |
| < } | |
| < if(lx1<0) | |
| < { | |
| < if((lx0-lx1)>CHKMAX_X) return TRUE; | |
| < if((lx2-lx1)>CHKMAX_X) return TRUE; | |
| < if((lx3-lx1)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(lx2<0) | |
| < { | |
| < if((lx0-lx2)>CHKMAX_X) return TRUE; | |
| < if((lx1-lx2)>CHKMAX_X) return TRUE; | |
| < if((lx3-lx2)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(lx3<0) | |
| < { | |
| < if(((lx1-lx3)>CHKMAX_X) || | |
| < ((lx2-lx3)>CHKMAX_X)) | |
| < { | |
| < if(lx0<0) | |
| < { | |
| < if((lx1-lx0)>CHKMAX_X) return TRUE; | |
| < if((lx2-lx0)>CHKMAX_X) return TRUE; | |
| < } | |
| < } | |
| < } | |
| < | |
| < | |
| < if(ly0<0) | |
| < { | |
| < if((ly1-ly0)>CHKMAX_Y) return TRUE; | |
| < if((ly2-ly0)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly1<0) | |
| < { | |
| < if((ly0-ly1)>CHKMAX_Y) return TRUE; | |
| < if((ly2-ly1)>CHKMAX_Y) return TRUE; | |
| < if((ly3-ly1)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly2<0) | |
| < { | |
| < if((ly0-ly2)>CHKMAX_Y) return TRUE; | |
| < if((ly1-ly2)>CHKMAX_Y) return TRUE; | |
| < if((ly3-ly2)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly3<0) | |
| < { | |
| < if((ly1-ly3)>CHKMAX_Y) return TRUE; | |
| < if((ly2-ly3)>CHKMAX_Y) return TRUE; | |
| < } | |
| --- | |
| > // check delta x | |
| > if (abs(lx0 - lx1) > CHKMAX_X) return TRUE; | |
| > if (abs(lx1 - lx2) > CHKMAX_X) return TRUE; | |
| > if (abs(lx2 - lx0) > CHKMAX_X) return TRUE; | |
| > if (abs(lx3 - lx1) > CHKMAX_X) return TRUE; | |
| > if (abs(lx3 - lx2) > CHKMAX_X) return TRUE; | |
| > // check delta y | |
| > if (abs(ly0 - ly1) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly1 - ly2) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly2 - ly0) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly3 - ly1) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly3 - ly2) > CHKMAX_Y) return TRUE; | |
| 239,268c199,206 | |
| < if(lx0<0) | |
| < { | |
| < if((lx1-lx0)>CHKMAX_X) return TRUE; | |
| < if((lx2-lx0)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(lx1<0) | |
| < { | |
| < if((lx0-lx1)>CHKMAX_X) return TRUE; | |
| < if((lx2-lx1)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(lx2<0) | |
| < { | |
| < if((lx0-lx2)>CHKMAX_X) return TRUE; | |
| < if((lx1-lx2)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(ly0<0) | |
| < { | |
| < if((ly1-ly0)>CHKMAX_Y) return TRUE; | |
| < if((ly2-ly0)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly1<0) | |
| < { | |
| < if((ly0-ly1)>CHKMAX_Y) return TRUE; | |
| < if((ly2-ly1)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly2<0) | |
| < { | |
| < if((ly0-ly2)>CHKMAX_Y) return TRUE; | |
| < if((ly1-ly2)>CHKMAX_Y) return TRUE; | |
| < } | |
| --- | |
| > // check delta x | |
| > if (abs(lx0 - lx1) > CHKMAX_X) return TRUE; | |
| > if (abs(lx1 - lx2) > CHKMAX_X) return TRUE; | |
| > if (abs(lx2 - lx0) > CHKMAX_X) return TRUE; | |
| > // check delta y | |
| > if (abs(ly0 - ly1) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly1 - ly2) > CHKMAX_Y) return TRUE; | |
| > if (abs(ly2 - ly0) > CHKMAX_Y) return TRUE; | |
| 276,291c214,217 | |
| < if(lx0<0) | |
| < { | |
| < if((lx1-lx0)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(lx1<0) | |
| < { | |
| < if((lx0-lx1)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(ly0<0) | |
| < { | |
| < if((ly1-ly0)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(ly1<0) | |
| < { | |
| < if((ly0-ly1)>CHKMAX_Y) return TRUE; | |
| < } | |
| --- | |
| > // check delta x | |
| > if (abs(lx0 - lx1) > CHKMAX_X) return TRUE; | |
| > // check delta y | |
| > if (abs(ly0 - ly1) > CHKMAX_Y) return TRUE; | |
| 298,313c224,227 | |
| < if(slx0<0) | |
| < { | |
| < if((slx1-slx0)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(slx1<0) | |
| < { | |
| < if((slx0-slx1)>CHKMAX_X) return TRUE; | |
| < } | |
| < if(sly0<0) | |
| < { | |
| < if((sly1-sly0)>CHKMAX_Y) return TRUE; | |
| < } | |
| < if(sly1<0) | |
| < { | |
| < if((sly0-sly1)>CHKMAX_Y) return TRUE; | |
| < } | |
| --- | |
| > // check delta x | |
| > if (abs(slx0 - slx1) > 1023) return TRUE; | |
| > // check delta y | |
| > if (abs(sly0 - sly1) > 511) return TRUE; | |
| 1054a969,1012 | |
| > if (isToShinDen) { | |
| > if (GETLEs16(&sgpuData[4]) == 0x38e0 && lx1-lx0 == 0x10 && ly2-ly0 == 0x8) | |
| > { | |
| > short sW = 4; | |
| > short sH = 1; | |
| > | |
| > lx0 = lx0 + 6; // 0 | |
| > ly0 = ly0 + 3; // | |
| > lx1 = lx0 + sW; // 1 x | |
| > ly1 = ly0; // +----> | |
| > lx2 = lx1; // 2 | 0 1 | |
| > ly2 = ly0 + sH; // y| | |
| > lx3 = lx0; // 3 v 3 2 | |
| > ly3 = ly2; // | |
| > | |
| > DrawSemiTrans = FALSE; | |
| > int color = -1; | |
| > switch (GETLEs16(&sgpuData[5])) | |
| > { | |
| > case 0x7ce0: // Yellow "H" | |
| > color = 0x00ffff; | |
| > break; | |
| > case 0x7da0: // Blue "H" | |
| > color = 0xff8c00; | |
| > break; | |
| > case 0x7d20: // Pink "H" | |
| > color = 0x7860f8; | |
| > break; | |
| > case 0x7d60: // light blue "H" | |
| > color = 0xf8f800; | |
| > break; | |
| > case 0x7de0: // white "H" | |
| > color = 0xffffff; | |
| > default: | |
| > break; | |
| > } | |
| > | |
| > if (color != -1) | |
| > { | |
| > FillSoftwareAreaTrans(lx0,ly0,lx2,ly2,BGR24to16((0x40 << 24) | color)); | |
| > } | |
| > } | |
| > } | |
| > | |
| 1165a1124,1213 | |
| > if (*scenes != 0) | |
| > { | |
| > if (GETLE32(&gpuData[0]) == 0x3c808080 && GETLE32(&gpuData[3]) == 0x3c808080 && GETLE32(&gpuData[6]) == 0x3c808080 && GlobalTextTP == 0) | |
| > { | |
| > int cba = GETLEs16(&sgpuData[5]); | |
| > switch (*scenes) | |
| > { | |
| > case 1: | |
| > if (regions == 1) | |
| > { | |
| > if (cba >= 0x3a00 && cba <= 0x3d00) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > if (regions == 2) | |
| > { | |
| > if (cba >= 0x3c00 && cba <= 0x3e00) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > break; | |
| > | |
| > case 2: | |
| > case 3: | |
| > case 7: | |
| > if (regions == 1) | |
| > { | |
| > if (cba >= 0x3d00 && cba <= 0x3d33 || | |
| > cba >= 0x3d35 && cba <= 0x3e00) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > if (regions == 2) | |
| > { | |
| > if (cba >= 0x3da0 && cba <= 0x3dd2 || | |
| > cba >= 0x3dd4 && cba <= 0x3ea0) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > break; | |
| > | |
| > case 4: | |
| > if (regions == 1) | |
| > { | |
| > if (cba >= 0x3ee0 && cba <= 0x3ef7 || | |
| > cba >= 0x3f00 && cba <= 0x4000) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > if (regions == 2) | |
| > { | |
| > if (cba >= 0x3e80 && cba <= 0x3e82 || | |
| > cba >= 0x3e84 && cba <= 0x3e94 || | |
| > cba >= 0x3e96 && cba <= 0x3ee0) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > break; | |
| > | |
| > case 5: | |
| > case 6: | |
| > case 8: | |
| > if (regions == 1 || regions == 2) | |
| > { | |
| > if (cba >= 0x3a00 && cba <= 0x3f00) | |
| > { | |
| > bDoVSyncUpdate=TRUE; | |
| > return; | |
| > } | |
| > } | |
| > break; | |
| > | |
| > default: | |
| > break; | |
| > } | |
| > } | |
| > } | |
| > | |
| 1197a1246,1257 | |
| > if (!isBiosLogoEnd) { | |
| > if (GETLE32(&gpuData[1]) == 0x00e10125 && GETLE32(&gpuData[2]) == 0x00e80120 && GETLE32(&gpuData[3]) == 0x00eb010c) { | |
| > int color = (0x68 << 24) | (GETLE32(&gpuData[0]) & 0xffffff); | |
| > DrawSemiTrans = FALSE; | |
| > | |
| > FillSoftwareAreaTrans(272,233,273,234,BGR24to16(color)); | |
| > FillSoftwareAreaTrans(277,231,278,232,BGR24to16(color)); | |
| > FillSoftwareAreaTrans(282,229,283,230,BGR24to16(color)); | |
| > FillSoftwareAreaTrans(287,227,288,228,BGR24to16(color)); | |
| > } | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/dfxvideo/soft.c pcsx_rearmed_custom/plugins/dfxvideo/soft.c | |
| 1279a1280,1307 | |
| > static inline BOOL NextRow_G4(void) | |
| > { | |
| > if(--left_section_height<=0) | |
| > { | |
| > if(--left_section <= 0) {return TRUE;} | |
| > if(LeftSection_G() <= 0) {return TRUE;} | |
| > } | |
| > else | |
| > { | |
| > left_x += delta_left_x; | |
| > left_R += delta_left_R; | |
| > left_G += delta_left_G; | |
| > left_B += delta_left_B; | |
| > } | |
| > | |
| > if(--right_section_height<=0) | |
| > { | |
| > if(--right_section<=0) {return TRUE;} | |
| > if(RightSection_G() <=0) {return TRUE;} | |
| > } | |
| > else | |
| > { | |
| > if((right_section_height < left_section_height || right_section-1 > 0 || right_section_height < 3) || (left_R != left_G || left_G!=left_B || left_R != left_B)){ | |
| > right_x += delta_right_x; | |
| > } | |
| > } | |
| > return FALSE; | |
| > } | |
| 1328a1357 | |
| > | |
| 3891c3920 | |
| < (((int32_t)GETLE16(&psxVuw[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| --- | |
| > (((int32_t)GETLE16(&psxVuw_t[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| 3899c3928 | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); | |
| --- | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); | |
| 4117,4118c4146,4147 | |
| < (((int32_t)GETLE16(&psxVuw[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); | |
| --- | |
| > (((int32_t)GETLE16(&psxVuw_t[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX])); | |
| 4125c4154 | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); | |
| --- | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX])); | |
| 4488a4518,4522 | |
| > if (iTrimJaggyFrame && | |
| > (((lx1-lx0 >= -4 && lx1-lx0 <= 4 && lx3-lx2 >= -4 && lx3-lx2 <= 4) && (lx2-lx0 == 0 && lx3-lx1 == 0)) || | |
| > ((ly2-ly0 >= -4 && ly2-ly0 <= 4 && ly3-ly1 >= -4 && ly3-ly1 <= 4) && (ly1-ly0 == 0 && ly3-ly2 == 0)))) { | |
| > if(NextRow_G4()) return; | |
| > } else { | |
| 4490a4525 | |
| > } | |
| 4580c4615 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 4663c4698 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 4727c4762 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 4812c4847 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 4896c4931 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5007c5042 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5086c5121 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5160c5195 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5223c5258 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5301c5336 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5379c5414 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5479c5514 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5552c5587 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5574,5575c5609,5610 | |
| < (((int32_t)GETLE16(&psxVuw[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), | |
| --- | |
| > (((int32_t)GETLE16(&psxVuw_t[((((posY+difY)>>16)+GlobalTextAddrY)<<10)+((posX+difX)>>16)+GlobalTextAddrX]))<<16)| | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+((posX)>>16)+GlobalTextAddrX]), | |
| 5587c5622 | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| --- | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| 5619c5654 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5676c5711 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5746c5781 | |
| < if(iDither) | |
| --- | |
| > if(iDither==2) | |
| 5813c5848 | |
| < if(!bCheckMask && !DrawSemiTrans && !iDither) | |
| --- | |
| > if(!bCheckMask && !DrawSemiTrans && iDither!=2) | |
| 5902a5938 | |
| > int i_t = i+5; | |
| 5905c5941,5943 | |
| < if(iDither) | |
| --- | |
| > int j_t = j+5; | |
| > if(iDither==2) { | |
| > if (*scenes == 8) { | |
| 5907c5945 | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| --- | |
| > GETLE16(&psxVuw_t[(i_t<<10)+j_t]), | |
| 5908a5947,5952 | |
| > } else { | |
| > GetTextureTransColGX(&psxVuw[(i<<10)+j], | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| > (cB1>>16),(cG1>>16),(cR1>>16)); | |
| > } | |
| > } | |
| 5911c5955 | |
| < GETLE16(&psxVuw[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| --- | |
| > GETLE16(&psxVuw_t[(((posY>>16)+GlobalTextAddrY)<<10)+(posX>>16)+GlobalTextAddrX]), | |
| 6623c6667,6670 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6624a6672,6673 | |
| > } | |
| > } | |
| 6642c6691,6694 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6645a6698,6699 | |
| > } | |
| > } | |
| 6682c6736,6739 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6683a6741,6742 | |
| > } | |
| > } | |
| 6701c6760,6763 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6704a6767,6768 | |
| > } | |
| > } | |
| 6741c6805,6808 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6742a6810,6811 | |
| > } | |
| > } | |
| 6760c6829,6832 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6763a6836,6837 | |
| > } | |
| > } | |
| 6800c6874,6877 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6801a6879,6881 | |
| > } | |
| > } | |
| > | |
| 6819c6899,6902 | |
| < if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)) | |
| --- | |
| > if ((x0>=drawX)&&(x0<drawW)&&(y0>=drawY)&&(y0<drawH)){ | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y0<<10)+x0],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6822a6906,6907 | |
| > } | |
| > } | |
| 6866a6952,6954 | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y<<10)+x],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6867a6956 | |
| > } | |
| 6916a7006,7008 | |
| > if(iDither==3){ | |
| > GetShadeTransCol_Dither(&psxVuw[(y<<10)+x],(b0>>16),(g0>>16),(r0>>16)); | |
| > }else{ | |
| 6917a7010 | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpu-gles/gpuPlugin.h pcsx_rearmed_custom/plugins/gpu-gles/gpuPlugin.h | |
| 60a61,62 | |
| > unsigned int ulEventStatus; | |
| > unsigned int ulEventCnt; | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpulib/gpu.c pcsx_rearmed_custom/plugins/gpulib/gpu.c | |
| 37a38,39 | |
| > static void do_bo(void); | |
| > static void check_pmt_frame(void); | |
| 49a52,103 | |
| > int g_gpu_patch_flag = 0; | |
| > | |
| > // double, for overdraw guard | |
| > #define VRAM_SIZE (1024 * 512 * 2 * 2) | |
| > #define GPU_PATCH_SCREEN_ADJUST (0x00000001) | |
| > #define GPU_PATCH_ADD_VRAM2 (0x00000008) | |
| > #define GPU_PATCH_ADD_BO (0x00000020) | |
| > #define GPU_PATCH_ARC_THE_LAD (0x00000080) | |
| > | |
| > void GPUsetPatchFlag(int flag, int set) { | |
| > if(set) | |
| > g_gpu_patch_flag |= flag; | |
| > else | |
| > g_gpu_patch_flag &= ~flag; | |
| > | |
| > if (g_gpu_patch_flag & GPU_PATCH_ADD_VRAM2 && gpu.vram2 == NULL) { | |
| > gpu.vram2 = gpu.mmap(VRAM_SIZE); | |
| > if (gpu.vram2 != NULL) { | |
| > gpu.vram2 += 4096 / 2; | |
| > } | |
| > } | |
| > } | |
| > | |
| > static noinline int update_sw(int sw_in){ | |
| > int sw = sw_in; | |
| > | |
| > if (g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER) { | |
| > if (gpu.screen.pck_rate == 0 || sw == 0) { | |
| > sw = gpu.screen.hres; | |
| > } else { | |
| > sw = sw / gpu.screen.pck_rate; | |
| > } | |
| > return sw; | |
| > } | |
| > | |
| > if (sw <= 0 || sw >= 2560) | |
| > // full width | |
| > sw = gpu.screen.hres; | |
| > else | |
| > sw = sw * gpu.screen.hres / 2560; | |
| > return sw; | |
| > } | |
| > | |
| > static noinline int update_sh(int sh_in){ | |
| > int sh = sh_in; | |
| > if (gpu.status.dheight) | |
| > sh *= 2; | |
| > if (sh <= 0 || sh > gpu.screen.vres) | |
| > sh = gpu.screen.vres; | |
| > return sh; | |
| > } | |
| > | |
| 63a118,120 | |
| > gpu.screen.w_regs = 0; | |
| > gpu.screen.h_regs = 0; | |
| > gpu.screen.pck_rate = 0; | |
| 66c123 | |
| < static noinline void update_width(void) | |
| --- | |
| > static noinline void update_width(int isHVcmd) | |
| 67a125,147 | |
| > if (g_gpu_patch_flag & GPU_PATCH_SCREEN_ADJUST) { | |
| > int data = gpu.regs[6]; | |
| > gpu.screen.x1 = data & 0xfff; | |
| > gpu.screen.x2 = (data >> 12) & 0xfff; | |
| > int sw = update_sw(gpu.screen.x2 - gpu.screen.x1); | |
| > if(isHVcmd == 0) { | |
| > gpu.screen.w = sw; | |
| > return; | |
| > } | |
| > | |
| > int diff = sw - update_sw(gpu.screen.w_cmd); | |
| > if (diff > 4 || diff < -4) { | |
| > gpu.screen.w = sw; | |
| > gpu.screen.w_regs = data; | |
| > } | |
| > else if (gpu.screen.w == sw) { | |
| > gpu.screen.w_regs = data; | |
| > } | |
| > gpu.regs[6] = gpu.screen.w_regs; | |
| > gpu.screen.w_cmd = gpu.screen.x2 - gpu.screen.x1; | |
| > return; | |
| > } | |
| > | |
| 68a149,158 | |
| > | |
| > if (g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER) { | |
| > if (gpu.screen.pck_rate == 0 || sw == 0) { | |
| > gpu.screen.w = gpu.screen.hres; | |
| > } else { | |
| > gpu.screen.w = sw / gpu.screen.pck_rate; | |
| > } | |
| > return; | |
| > } | |
| > | |
| 76c166 | |
| < static noinline void update_height(void) | |
| --- | |
| > static noinline void update_height(int isHVcmd) | |
| 77a168,193 | |
| > if (g_gpu_patch_flag & GPU_PATCH_SCREEN_ADJUST) { | |
| > int data = gpu.regs[7]; | |
| > gpu.screen.y1 = data & 0x3ff; | |
| > gpu.screen.y2 = (data >> 10) & 0x3ff; | |
| > // TODO: emulate this properly.. | |
| > int sh = update_sh(gpu.screen.y2 - gpu.screen.y1); | |
| > if(isHVcmd == 0) { | |
| > gpu.screen.h = sh; | |
| > return; | |
| > } | |
| > | |
| > int diff = sh - update_sh(gpu.screen.h_cmd); | |
| > if (diff > 4 || diff < -4 || gpu.screen.region_change == 1) { | |
| > gpu.screen.h = sh; | |
| > gpu.screen.h_regs = data; | |
| > if (diff == 0) | |
| > gpu.screen.region_change = 0; | |
| > } | |
| > else if (gpu.screen.h == sh) { | |
| > gpu.screen.h_regs = data; | |
| > } | |
| > gpu.regs[7] = gpu.screen.h_regs; | |
| > gpu.screen.h_cmd = gpu.screen.y2 - gpu.screen.y1; | |
| > return; | |
| > } | |
| > | |
| 84d199 | |
| < | |
| 144,146d258 | |
| < // double, for overdraw guard | |
| < #define VRAM_SIZE (1024 * 512 * 2 * 2) | |
| < | |
| 190a303,310 | |
| > if (g_gpu_patch_flag & GPU_PATCH_ADD_VRAM2) { | |
| > if (gpu.vram2 != NULL) { | |
| > gpu.vram2 -= 4096 / 2; | |
| > gpu.munmap(gpu.vram2, VRAM_SIZE); | |
| > } | |
| > gpu.vram2 = NULL; | |
| > } | |
| > | |
| 196,197c316,327 | |
| < static const short hres[8] = { 256, 368, 320, 384, 512, 512, 640, 640 }; | |
| < static const short vres[4] = { 240, 480, 256, 480 }; | |
| --- | |
| > static const short hres[2][4] = { | |
| > { 256, 320, 512, 640 }, // HDS2 = 0 | |
| > { 368, 384, 384, 384 } // HDS2 = 1 | |
| > }; | |
| > static const short vres[2][2] = { | |
| > { 240, 480 }, // NTSC | |
| > { 288, 576 } // PAL | |
| > }; | |
| > static const short pck_rate[2][4] = { | |
| > { 10, 8, 5, 4 }, // HDS2 = 0 | |
| > { 7, 7, 7, 7 } // HDS2 = 1 | |
| > }; | |
| 206a337 | |
| > int video = gpu.status.video; | |
| 235c366 | |
| < update_width(); | |
| --- | |
| > update_width(1); | |
| 240c371 | |
| < update_height(); | |
| --- | |
| > update_height(1); | |
| 244,247c375,390 | |
| < gpu.screen.hres = hres[(gpu.status.reg >> 16) & 7]; | |
| < gpu.screen.vres = vres[(gpu.status.reg >> 19) & 3]; | |
| < update_width(); | |
| < update_height(); | |
| --- | |
| > gpu.screen.hres = hres[gpu.status.width1][gpu.status.width0]; | |
| > gpu.screen.vres = vres[gpu.status.video][gpu.status.dheight]; | |
| > | |
| > if (g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER) { | |
| > if (gpu.screen.hres == 368) gpu.screen.hres = 384; | |
| > if (!gpu.status.interlace && gpu.status.dheight) { | |
| > // VGA non-interlace | |
| > gpu.screen.pck_rate = 2; | |
| > } else { | |
| > gpu.screen.pck_rate = pck_rate[gpu.status.width1][gpu.status.width0]; | |
| > } | |
| > } | |
| > | |
| > if (video != gpu.status.video) gpu.screen.region_change = 1; | |
| > update_width(0); | |
| > update_height(0); | |
| 463a607,612 | |
| > } else { | |
| > if ((g_gpu_patch_flag & GPU_PATCH_IS_FF7) || | |
| > (g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER)) { | |
| > gpu.frameskip.frame_ready = 1; | |
| > gpu.frameskip.active = 0; | |
| > } | |
| 577a727,731 | |
| > if (g_gpu_patch_flag & GPU_PATCH_ADD_BO) { | |
| > check_pmt_frame(); | |
| > do_bo(); | |
| > } | |
| > | |
| 627a782,783 | |
| > uint32_t ulEventStatus; // event status | |
| > uint32_t ulEventCnt; // event count | |
| 641a798,801 | |
| > if (g_gpu_patch_flag & GPU_PATCH_SCREEN_ADJUST) { | |
| > memcpy(freeze->ulControl + sizeof(gpu.regs), (unsigned char*)&gpu.screen.w_cmd, sizeof(int)); | |
| > memcpy(freeze->ulControl + sizeof(gpu.regs) + sizeof(int), (unsigned char*)&gpu.screen.h_cmd, sizeof(int)); | |
| > } | |
| 643a804,805 | |
| > freeze->ulEventStatus = gpu.state.bo_processing; | |
| > freeze->ulEventCnt = gpu.state.bo_cnt; | |
| 650a813,814 | |
| > gpu.state.bo_processing = freeze->ulEventStatus; | |
| > gpu.state.bo_cnt = freeze->ulEventCnt; | |
| 654a819,822 | |
| > if (g_gpu_patch_flag & GPU_PATCH_SCREEN_ADJUST) { | |
| > memcpy((unsigned char*)&gpu.screen.w_cmd, freeze->ulControl + sizeof(gpu.regs), sizeof(int)); | |
| > memcpy((unsigned char*)&gpu.screen.h_cmd, freeze->ulControl + sizeof(gpu.regs) + sizeof(int), sizeof(int)); | |
| > } | |
| 662a831 | |
| > static int frame_cnt = 0; | |
| 688a858,863 | |
| > if (gpu.state.skip_frame && g_gpu_patch_flag & GPU_PATCH_ADD_VRAM2) { | |
| > gpu.state.skip_frame = 0; | |
| > gpu.state.fb_dirty = 0; | |
| > gpu.state.blanked = 0; | |
| > return; | |
| > } | |
| 689a865,874 | |
| > if ((g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER) || | |
| > (g_gpu_patch_flag & GPU_PATCH_ARC_THE_LAD)) { | |
| > if (frame_cnt >= 59) { | |
| > gpu.state.fb_dirty = 0; | |
| > gpu.state.blanked = 0; | |
| > frame_cnt = 0; | |
| > return; | |
| > } | |
| > frame_cnt++; | |
| > } | |
| 719a905 | |
| > gpu.state.bo_trigger = &cbs->gpu_unai.lineskip; | |
| 741a928,1208 | |
| > uint32_t GPUboStatus(void) { | |
| > uint32_t ret = 0; | |
| > | |
| > if (g_gpu_patch_flag & GPU_PATCH_ADD_BO) { | |
| > ret = gpu.state.bo_processing; | |
| > } | |
| > | |
| > return ret; | |
| > } | |
| > | |
| > static void check_pmt_frame(void) { | |
| > if (!gpu.state.bo && gpu.state.last_pmt_show && !gpu.state.pmt_show) { | |
| > gpu.state.bo = 1; | |
| > } | |
| > else if (gpu.state.bo && !gpu.state.last_pmt_show && gpu.state.pmt_show) { | |
| > gpu.state.bo = 0; | |
| > } | |
| > gpu.state.last_pmt_show = gpu.state.pmt_show; | |
| > gpu.state.dma_chain = 1; | |
| > } | |
| > | |
| > static void wo(void){ | |
| > | |
| > uint32_t data[12]; | |
| > int cmd, pos; | |
| > | |
| > if((gpu.state.bo_processing == 1) || (gpu.state.bo_processing == 2) ){ | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0x28; | |
| > pos = 5; | |
| > data[0]=0x28ffffff; | |
| > data[1]=0x00000000; | |
| > data[2]=0x00000140; | |
| > data[3]=0x00e00000; | |
| > data[4]=0x00e00140; | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe100021f; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > do_cmd_list(data, pos, &cmd); | |
| > } | |
| > } | |
| > | |
| > static void small_bh(int count){ | |
| > | |
| > uint32_t data[12]; | |
| > int cmd, pos; | |
| > | |
| > if((gpu.state.bo_processing == 1) || (gpu.state.bo_processing == 2) ){ | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > if((count & 0x1) == 0){ | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > else{ | |
| > data[0]=0xe3000000; | |
| > data[1]=0xe4037d3f; | |
| > data[2]=0xe5000000; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0x28; | |
| > | |
| > pos = 5; | |
| > data[0]=0x28000000; | |
| > data[1]=0x00000000; | |
| > data[2]=0x00000140; | |
| > data[3]=0x00e00000; | |
| > data[4]=0x00e00140; | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0x2c; | |
| > pos = 9; | |
| > if(gpu.state.bo_processing == 1){ | |
| > data[0]=0x2c808080; | |
| > data[1]=0x00080104; | |
| > data[2]=0x003c70ac; | |
| > data[3]=0x00080128; | |
| > data[4]=0x001470f3; | |
| > data[5]=0x00180104; | |
| > data[6]=0x00008fac; | |
| > data[7]=0x00180128; | |
| > data[8]=0x00008ff3; | |
| > } | |
| > else{ | |
| > data[0]=0x2c808080; | |
| > data[1]=0x000800fc; | |
| > data[2]=0x003c0ec4; | |
| > data[3]=0x00080138; | |
| > data[4]=0x00130eff; | |
| > data[5]=0x001600fc; | |
| > data[6]=0x00001bc4; | |
| > data[7]=0x00160138; | |
| > data[8]=0x00001bff; | |
| > } | |
| > | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > if((count & 0x1) == 0){ | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe100021f; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > else{ | |
| > data[0]=0xe3000000; | |
| > data[1]=0xe4037d3f; | |
| > data[2]=0xe5000000; | |
| > data[3]=0xe100021f; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > do_cmd_list(data, pos, &cmd); | |
| > } | |
| > } | |
| > | |
| > static void big_bh(int count){ | |
| > | |
| > uint32_t data[12]; | |
| > int cmd, pos; | |
| > | |
| > if((gpu.state.bo_processing == 1) || (gpu.state.bo_processing == 2) ){ | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > if((count & 0x1) == 0){ | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > else{ | |
| > data[0]=0xe3000000; | |
| > data[1]=0xe4037d3f; | |
| > data[2]=0xe5000000; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0x28; | |
| > pos = 5; | |
| > data[0]=0x28000000; | |
| > data[1]=0x00000000; | |
| > data[2]=0x00000140; | |
| > data[3]=0x00e00000; | |
| > data[4]=0x00e00140; | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0x2c; | |
| > pos = 9; | |
| > if(gpu.state.bo_processing == 1){ | |
| > data[0]=0x2c808080; | |
| > data[1]=0x000800e0; | |
| > data[2]=0x003c70ac; | |
| > data[3]=0x00080128; | |
| > data[4]=0x001470f3; | |
| > data[5]=0x002800e0; | |
| > data[6]=0x00008fac; | |
| > data[7]=0x00280128; | |
| > data[8]=0x00008ff3; | |
| > } | |
| > else{ | |
| > data[0]=0x2c808080; | |
| > data[1]=0x000800c0; | |
| > data[2]=0x007ce020; | |
| > data[3]=0x00080138; | |
| > data[4]=0x0011e097; | |
| > data[5]=0x002400c0; | |
| > data[6]=0x0000fb20; | |
| > data[7]=0x00240138; | |
| > data[8]=0x0000fb97; | |
| > } | |
| > do_cmd_list(data, pos, &cmd); | |
| > | |
| > cmd = 0xe3; | |
| > pos = 6; | |
| > if((count & 0x1) == 0){ | |
| > data[0]=0xe3000140; | |
| > data[1]=0xe4037e7f; | |
| > data[2]=0xe5000140; | |
| > data[3]=0xe100021f; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > else{ | |
| > data[0]=0xe3000000; | |
| > data[1]=0xe4037d3f; | |
| > data[2]=0xe5000000; | |
| > data[3]=0xe1000200; | |
| > data[4]=0xe2000000; | |
| > data[5]=0xe6000000; | |
| > } | |
| > do_cmd_list(data, pos, &cmd); | |
| > } | |
| > } | |
| > | |
| > #define DO_CANCEL 0x80000000 | |
| > static void do_bo(void){ | |
| > | |
| > if((((*gpu.state.bo_trigger) & DO_CANCEL) == DO_CANCEL) && (gpu.state.bo_cnt < 18)){ | |
| > gpu.state.bo_processing = 0; | |
| > gpu.state.bo_cnt = 0; | |
| > return; | |
| > } | |
| > | |
| > if( gpu.state.pmt_show == 1 ){ | |
| > if(!gpu.state.bo_processing){ | |
| > gpu.state.bo_processing = 0xf & (*gpu.state.bo_trigger); | |
| > } | |
| > } | |
| > | |
| > if(gpu.state.bo_processing){ | |
| > | |
| > if(gpu.state.bo_cnt < 18){ | |
| > ; //nop | |
| > } | |
| > else if(gpu.state.bo_cnt == 18){ | |
| > wo(); | |
| > } | |
| > else if(gpu.state.bo_cnt < 60+18){ | |
| > big_bh(gpu.state.bo_cnt); | |
| > } | |
| > else if(gpu.state.bo_cnt < 240+36){ | |
| > | |
| > if(gpu.state.pmt_show == 1){ | |
| > wo(); | |
| > gpu.state.bo_processing = 8; | |
| > } | |
| > else{ | |
| > small_bh(gpu.state.bo_cnt); | |
| > } | |
| > } | |
| > else if(gpu.state.bo_cnt == 240+36){ | |
| > wo(); | |
| > } | |
| > else{ | |
| > gpu.state.bo_processing = 8; | |
| > } | |
| > | |
| > if((gpu.state.bo_processing == 8)&&(*gpu.state.bo_trigger == 0)) gpu.state.bo_processing=0; | |
| > | |
| > gpu.state.bo_cnt++; | |
| > } | |
| > else{ | |
| > if(gpu.state.bo_cnt) gpu.state.bo_cnt = 0; | |
| > } | |
| > } | |
| > | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpulib/gpu.h pcsx_rearmed_custom/plugins/gpulib/gpu.h | |
| 18a19,23 | |
| > #define GPU_PATCH_SCREEN_ADJUST (0x00000001) | |
| > #define GPU_PATCH_IS_FF7 (0x00000002) | |
| > #define GPU_PATCH_IS_MR_DRILLER (0x00000004) | |
| > #define GPU_PATCH_IS_MR_DRILLER_JP (0x00000010) | |
| > | |
| 22a28 | |
| > uint16_t *vram2; | |
| 56a63,65 | |
| > int w_regs, h_regs, w_cmd, h_cmd; | |
| > int region_change; | |
| > int pck_rate; | |
| 70a80,84 | |
| > uint32_t skip_frame:1; | |
| > uint32_t dma_chain:1; | |
| > uint32_t pmt_show:1; | |
| > uint32_t last_pmt_show:1; | |
| > uint32_t bo:1; | |
| 79a94,97 | |
| > int bo_cnt; | |
| > int *bo_trigger; | |
| > int bo_processing; | |
| > int bo_2nd; | |
| 137a156 | |
| > void GPUsetPatchFlag(int flag, int set); | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpulib/vout_pl.c pcsx_rearmed_custom/plugins/gpulib/vout_pl.c | |
| 55a56 | |
| > extern int g_gpu_patch_flag; | |
| 82a84,94 | |
| > if (g_gpu_patch_flag & GPU_PATCH_IS_FF7) { | |
| > if (gpu.screen.y2 - gpu.screen.y1 == 224) { | |
| > y -= 8; | |
| > h = gpu.screen.h = 240; | |
| > } | |
| > }else if(g_gpu_patch_flag & GPU_PATCH_IS_MR_DRILLER_JP) { | |
| > if((gpu.screen.x1==830) && (gpu.screen.x2==3290) && (w==246)) { | |
| > w = 208; | |
| > } | |
| > } | |
| > | |
| 85a98,106 | |
| > | |
| > if (gpu.vram2 != NULL) { | |
| > uint16_t *p_vram2 = gpu.vram2; | |
| > p_vram2 += y * 1024 + x; | |
| > for (int i = h-1; i >= 0; i--) { | |
| > uint16_t *s_2 = p_vram2 + 1024*i; | |
| > memset((char*)s_2, 0, w * (gpu.status.rgb24 ? 3 : 2)); | |
| > } | |
| > } | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpulib/vout_sdl.c pcsx_rearmed_custom/plugins/gpulib/vout_sdl.c | |
| 15a16,20 | |
| > #if SDL_MAJOR_VERSION == 2 | |
| > SDL_Window *hoge_window; | |
| > SDL_bool hoge_ret; | |
| > #endif | |
| > | |
| 29a35 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 30a37,39 | |
| > #else | |
| > screen = SDL_GetWindowSurface(hoge_window); | |
| > #endif | |
| 37a47 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 39a50,53 | |
| > #else | |
| > hoge_ret = SDL_GetWindowWMInfo(hoge_window, &wminfo); | |
| > if (hoge_ret == 1) | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpu_neon/psx_gpu/psx_gpu_main.c pcsx_rearmed_custom/plugins/gpu_neon/psx_gpu/psx_gpu_main.c | |
| 165a166 | |
| > #if SDL_MAJOR_VERSION == 1 | |
| 166a168,171 | |
| > #else | |
| > SDL_Window* sdl2Window; | |
| > screen = SDL_GetWindowSurface(sdl2Window); | |
| > #endif | |
| diff --new-file -w -r pcsx_rearmed/plugins/gpu_unai/gpu.h pcsx_rearmed_custom/plugins/gpu_unai/gpu.h | |
| 62a63,64 | |
| > u32 EventStatus; | |
| > u32 EventCnt; | |
| diff --new-file -w -r pcsx_rearmed/skin pcsx_rearmed_custom/skin | |
| 0a1 | |
| > frontend/pandora/skin | |
| \ No newline at end of file |
This comment has been minimized.
This comment has been minimized.
Wsreylet
commented
Jan 4, 2019
|
Gist of github |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
Alain-Christian commentedDec 9, 2018
Left out for licensing reason I'll bet.