From 42c0d5674d9762467c482bc172822638b0933d6e Mon Sep 17 00:00:00 2001 From: littleguy77 Date: Wed, 31 Dec 2014 17:50:16 -0500 Subject: [PATCH 1/4] core: Update to commit bdeb371. https://github.com/mupen64plus-ae/mupen64plus-core/commit/bdeb371 * bdeb371 Revert to upstream's method signature. * d7ea52c Merge remote-tracking branch 'upstream/master' * addef5f add new m64p_GLattr enumerated types to control the OpenGL context version and type when mupen64plus is built against SDL2 * 9e5e1da update makefile, bundle build script, and instructions for OSX builds * b635486 Merge pull request #55 from littleguy77/master |\ | * f0bea96 Add wiki documentation for polygon offset settings (video-rice). * d2728bb Merge pull request #54 from Gillou68310/assem_arm * e95f807 new_dynarec: Removed assert(0) in emit_rscimm * 751848a new_dynarec: Fix DMULT instruction on ARM --- .../Mupen64Plus-Plugin-Parameters.mediawiki | 12 ++++ .../Mupen64Plus-v2.0-headers.mediawiki | 11 ++- jni/mupen64plus-core/projects/unix/Makefile | 2 +- jni/mupen64plus-core/src/api/m64p_types.h | 11 ++- jni/mupen64plus-core/src/api/vidext.c | 49 ++++++++++++- .../src/r4300/new_dynarec/assem_arm.c | 2 - .../src/r4300/new_dynarec/new_dynarec.c | 2 +- .../tools/osx_build_bundle.sh | 4 +- .../tools/osx_build_instructions.txt | 72 ++++++------------- 9 files changed, 105 insertions(+), 60 deletions(-) diff --git a/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-Plugin-Parameters.mediawiki b/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-Plugin-Parameters.mediawiki index 99f038ab67..cdaa900cd9 100644 --- a/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-Plugin-Parameters.mediawiki +++ b/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-Plugin-Parameters.mediawiki @@ -218,6 +218,18 @@ These are standard parameters which are used by the Mupen64Plus plugins. The be |AnisotropicFiltering |M64TYPE_INT |Enable/Disable Anisotropic Filtering for Mipmapping (0=no filtering, 2-16=quality). This is uneffective if EnableMipmapping is false. If the given value is to high to be supported by your graphic card, the value will be the highest value your graphic card can support. Better result with Trilinear filtering +|- +|ForcePolygonOffset +|M64TYPE_BOOL +|If true, use polygon offset values specified below (default=False). This can be used to eliminate stitching artifacts in textures and shadows, which are typically only a problem in mobile/embedded platforms (e.g. Android), where chipsets are inconsistent in their implementation of glPolygonOffset. +|- +|PolygonOffsetFactor +|M64TYPE_FLOAT +|Specifies a scale factor that is used to create a variable depth offset for each polygon. Ignored if ForcePolygonOffset is False, and typically only relevant for mobile/embedded platforms. This value is typically equal to PolygonOffsetUnits, and is found through trial and error. Mario's shadow in Super Mario 64 is a good test case when tuning this value. If the shadow flickers, use a larger magnitude for the float settings. Do not use a larger value than necessary to eliminate artifacts. As a guideline, typical values for mobile chipsets circa 2012-2014 are positive or negative values in the range 0.001 to 2. +|- +|PolygonOffsetUnits +|M64TYPE_FLOAT +|Is multiplied by an implementation-specific value to create a constant depth offset. Ignored if ForcePolygonOffset is False, and typically only relevant for mobile/embedded platforms. This value is typically equal to PolygonOffsetFactor, and is found through trial and error. Mario's shadow in Super Mario 64 is a good test case when tuning this value. If the shadow flickers, use a larger magnitude for the float settings. Do not use a larger value than necessary to eliminate artifacts. As a guideline, typical values for mobile chipsets circa 2012-2014 are positive or negative values in the range 0.001 to 2. |} === Input-SDL === diff --git a/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-v2.0-headers.mediawiki b/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-v2.0-headers.mediawiki index 934cf7458a..df03f871ed 100644 --- a/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-v2.0-headers.mediawiki +++ b/jni/mupen64plus-core/doc/emuwiki-api-doc/Mupen64Plus-v2.0-headers.mediawiki @@ -304,9 +304,18 @@ M64P_GL_ALPHA_SIZE, M64P_GL_SWAP_CONTROL, M64P_GL_MULTISAMPLEBUFFERS, - M64P_GL_MULTISAMPLESAMPLES + M64P_GL_MULTISAMPLESAMPLES, + M64P_GL_CONTEXT_MAJOR_VERSION, + M64P_GL_CONTEXT_MINOR_VERSION, + M64P_GL_CONTEXT_PROFILE_MASK } m64p_GLattr; + typedef enum { + M64P_GL_CONTEXT_PROFILE_CORE, + M64P_GL_CONTEXT_PROFILE_COMPATIBILITY, + M64P_GL_CONTEXT_PROFILE_ES + } m64p_GLContextType; + typedef struct { unsigned int Functions; m64p_error (*VidExtFuncInit)(void); diff --git a/jni/mupen64plus-core/projects/unix/Makefile b/jni/mupen64plus-core/projects/unix/Makefile index b9edf08aac..5d9c8ff521 100644 --- a/jni/mupen64plus-core/projects/unix/Makefile +++ b/jni/mupen64plus-core/projects/unix/Makefile @@ -157,7 +157,7 @@ ifeq ($(OS), OSX) OSX_SDK_PATH = $(OSX_SDK_ROOT)/$(shell ls $(OSX_SDK_ROOT) | tail -1) TARGET = libmupen64plus$(POSTFIX).dylib - LDFLAGS += -bundle -read_only_relocs suppress + LDFLAGS += -framework CoreFoundation -bundle -read_only_relocs suppress LDLIBS += -ldl ifeq ($(CPU), X86) ifeq ($(ARCH_DETECTED), 64BITS) diff --git a/jni/mupen64plus-core/src/api/m64p_types.h b/jni/mupen64plus-core/src/api/m64p_types.h index f75f5d5d2b..10a87c2b5f 100644 --- a/jni/mupen64plus-core/src/api/m64p_types.h +++ b/jni/mupen64plus-core/src/api/m64p_types.h @@ -328,9 +328,18 @@ typedef enum { M64P_GL_ALPHA_SIZE, M64P_GL_SWAP_CONTROL, M64P_GL_MULTISAMPLEBUFFERS, - M64P_GL_MULTISAMPLESAMPLES + M64P_GL_MULTISAMPLESAMPLES, + M64P_GL_CONTEXT_MAJOR_VERSION, + M64P_GL_CONTEXT_MINOR_VERSION, + M64P_GL_CONTEXT_PROFILE_MASK } m64p_GLattr; +typedef enum { + M64P_GL_CONTEXT_PROFILE_CORE, + M64P_GL_CONTEXT_PROFILE_COMPATIBILITY, + M64P_GL_CONTEXT_PROFILE_ES +} m64p_GLContextType; + typedef struct { unsigned int Functions; m64p_error (*VidExtFuncInit)(void); diff --git a/jni/mupen64plus-core/src/api/vidext.c b/jni/mupen64plus-core/src/api/vidext.c index 6837f3c441..f033a85e0a 100644 --- a/jni/mupen64plus-core/src/api/vidext.c +++ b/jni/mupen64plus-core/src/api/vidext.c @@ -394,7 +394,13 @@ static const GLAttrMapNode GLAttrMap[] = { { M64P_GL_SWAP_CONTROL, SDL_GL_SWAP_CONTROL }, #endif { M64P_GL_MULTISAMPLEBUFFERS, SDL_GL_MULTISAMPLEBUFFERS }, - { M64P_GL_MULTISAMPLESAMPLES, SDL_GL_MULTISAMPLESAMPLES }}; + { M64P_GL_MULTISAMPLESAMPLES, SDL_GL_MULTISAMPLESAMPLES } +#if SDL_VERSION_ATLEAST(2,0,0) + ,{ M64P_GL_CONTEXT_MAJOR_VERSION, SDL_GL_CONTEXT_MAJOR_VERSION }, + { M64P_GL_CONTEXT_MINOR_VERSION, SDL_GL_CONTEXT_MINOR_VERSION }, + { M64P_GL_CONTEXT_PROFILE_MASK, SDL_GL_CONTEXT_PROFILE_MASK } +#endif +}; static const int mapSize = sizeof(GLAttrMap) / sizeof(GLAttrMapNode); EXPORT m64p_error CALL VidExt_GL_SetAttribute(m64p_GLattr Attr, int Value) @@ -408,6 +414,27 @@ EXPORT m64p_error CALL VidExt_GL_SetAttribute(m64p_GLattr Attr, int Value) if (!SDL_WasInit(SDL_INIT_VIDEO)) return M64ERR_NOT_INIT; + /* translate the GL context type mask if necessary */ +#if SDL_VERSION_ATLEAST(2,0,0) + if (Attr == M64P_GL_CONTEXT_PROFILE_MASK) + { + switch (Value) + { + case M64P_GL_CONTEXT_PROFILE_CORE: + Value = SDL_GL_CONTEXT_PROFILE_CORE; + break; + case M64P_GL_CONTEXT_PROFILE_COMPATIBILITY: + Value = SDL_GL_CONTEXT_PROFILE_COMPATIBILITY; + break; + case M64P_GL_CONTEXT_PROFILE_ES: + Value = SDL_GL_CONTEXT_PROFILE_ES; + break; + default: + Value = 0; + } + } +#endif + for (i = 0; i < mapSize; i++) { if (GLAttrMap[i].m64Attr == Attr) @@ -439,6 +466,26 @@ EXPORT m64p_error CALL VidExt_GL_GetAttribute(m64p_GLattr Attr, int *pValue) int NewValue = 0; if (SDL_GL_GetAttribute(GLAttrMap[i].sdlAttr, &NewValue) != 0) return M64ERR_SYSTEM_FAIL; + /* translate the GL context type mask if necessary */ +#if SDL_VERSION_ATLEAST(2,0,0) + if (Attr == M64P_GL_CONTEXT_PROFILE_MASK) + { + switch (NewValue) + { + case SDL_GL_CONTEXT_PROFILE_CORE: + NewValue = M64P_GL_CONTEXT_PROFILE_CORE; + break; + case SDL_GL_CONTEXT_PROFILE_COMPATIBILITY: + NewValue = M64P_GL_CONTEXT_PROFILE_COMPATIBILITY; + break; + case SDL_GL_CONTEXT_PROFILE_ES: + NewValue = M64P_GL_CONTEXT_PROFILE_ES; + break; + default: + NewValue = 0; + } + } +#endif *pValue = NewValue; return M64ERR_SUCCESS; } diff --git a/jni/mupen64plus-core/src/r4300/new_dynarec/assem_arm.c b/jni/mupen64plus-core/src/r4300/new_dynarec/assem_arm.c index 21b52b242e..b9fa86a561 100644 --- a/jni/mupen64plus-core/src/r4300/new_dynarec/assem_arm.c +++ b/jni/mupen64plus-core/src/r4300/new_dynarec/assem_arm.c @@ -1298,7 +1298,6 @@ static void emit_adcimm(u_int rs,int imm,u_int rt) static void emit_rscimm(int rs,int imm,u_int rt) { - // assert(0); u_int armval, ret; ret = genimm(imm,&armval); assert(ret); @@ -4171,7 +4170,6 @@ static void multdiv_assemble_arm(int i,struct regstat *i_regs) { if(opcode2[i]==0x1C) // DMULT { - // assert(opcode2[i]!=0x1C); signed char m1h=get_reg(i_regs->regmap,rs1[i]|64); signed char m1l=get_reg(i_regs->regmap,rs1[i]); signed char m2h=get_reg(i_regs->regmap,rs2[i]|64); diff --git a/jni/mupen64plus-core/src/r4300/new_dynarec/new_dynarec.c b/jni/mupen64plus-core/src/r4300/new_dynarec/new_dynarec.c index 04da19816c..df0d4f6e69 100644 --- a/jni/mupen64plus-core/src/r4300/new_dynarec/new_dynarec.c +++ b/jni/mupen64plus-core/src/r4300/new_dynarec/new_dynarec.c @@ -860,7 +860,7 @@ static void divu64(uint64_t dividend,uint64_t divisor) // ,(int)reg[LOREG],(int)(reg[LOREG]>>32)); } -static void mult64(int64_t m1,int64_t m2) +static void mult64(uint64_t m1,uint64_t m2) { unsigned long long int op1, op2, op3, op4; unsigned long long int result1, result2, result3, result4; diff --git a/jni/mupen64plus-core/tools/osx_build_bundle.sh b/jni/mupen64plus-core/tools/osx_build_bundle.sh index e6de384a09..201bb70f34 100755 --- a/jni/mupen64plus-core/tools/osx_build_bundle.sh +++ b/jni/mupen64plus-core/tools/osx_build_bundle.sh @@ -25,12 +25,12 @@ mkdir -p $APP_CONTENTS/Frameworks mv test/*.ini test/*.ttf $APP_CONTENTS/Resources mv test/mupen* $APP_CONTENTS/Resources mv test $APP_CONTENTS/SharedSupport -cp -r /Library/Frameworks/SDL.framework $APP_CONTENTS/Frameworks mv $APP_CONTENTS/SharedSupport/m64p_test_rom.v64 ./example.v64 echo './mupen64plus.app/Contents/MacOS/mupen64plus --corelib ./mupen64plus.app/Contents/MacOS/libmupen64plus.dylib --plugindir ./mupen64plus.app/Contents/MacOS --gfx mupen64plus-video-rice "$@"' > run_rice.sh echo './mupen64plus.app/Contents/MacOS/mupen64plus --corelib ./mupen64plus.app/Contents/MacOS/libmupen64plus.dylib --plugindir ./mupen64plus.app/Contents/MacOS --gfx mupen64plus-video-glide64mk2 "$@"' > run_glide.sh echo -e "Note that Mupen64Plus requires an Intel mac and will not run on PPC macs.\nIt is known to run on OS X 10.8; and most likely also runs on 10.7.\n\nThis application can NOT be opened in the Finder by double-clicking.\n To use, launch the terminal, then cd into the directory that contains mupen64plus.app and use a command like :\n\n $ ./run_rice.sh example.v64 # for the Rice video plugin\n $ ./run_glide.sh example.v64 # for the Glide64mk2 video plugin\n\n Note that at this point, the only way to configure Mupen64Plus is to edit the config files in ~/.config/mupen64plus\n\n If you cannot follow the instructions above then this package is not meant for you =)\n" > Readme.txt chmod +x run_rice.sh run_glide.sh -zip -r mupen64plus-bundle-osx-2.0rc4.zip mupen64plus.app Readme.txt run_rice.sh run_glide.sh example.v64 +CURDATE=`date +%Y%m%d` +zip -r mupen64plus-bundle-osx-$CURDATE.zip mupen64plus.app Readme.txt run_rice.sh run_glide.sh example.v64 diff --git a/jni/mupen64plus-core/tools/osx_build_instructions.txt b/jni/mupen64plus-core/tools/osx_build_instructions.txt index 61f953c497..debf159a76 100644 --- a/jni/mupen64plus-core/tools/osx_build_instructions.txt +++ b/jni/mupen64plus-core/tools/osx_build_instructions.txt @@ -1,52 +1,22 @@ -OSX build instructions (using OSX 10.8.3 and Xcode 4.6.2): +Mupen64plus build under OSX 10.9.5 (Mavericks) with Xcode 6.1.1 + +1. Install command-line tools through xcode + - Xcode --> Preferences... --> Downloads tab --> Components page --> Command Line Tools +2. Install mac ports + - download page: http://www.macports.org/install.php + - .pkg installer for Mavericks +3. Install Git via macports + - command line: "sudo port install git” +4. Get m64p_helper_scripts.tar.gz from https://code.google.com/p/mupen64plus/wiki/CompilingFromGit + - unzip into build folder + - run "./m64p_get.sh" +5. Install other build dependencies: + - sudo port install pkgconfig + - sudo port install libpng + - edit /opt/local/etc/macports/variants.conf: + - add: +no_x11 +quartz + - sudo port install libSDL2 + - sudo port install freetype + - sudo port install boost +6. Run "./m64p_build.sh" -1. Install SDL framework - - go to http://www.libsdl.org/download-1.2.php - - download SDL-1.2.15.dmg - - Open the DMG and copy SDL.framework to /Library/Frameworks - - also, copy devel-lite to your desktop - - Build SDLMain.m_o: - - open terminal, cd ~/Desktop/devel-lite - - run: gcc -c -O3 -I./ -I/Library/Frameworks/SDL.framework/Headers -o SDLMain.m_o SDLMain.m -2. Install macports -3. Install the following ports (sudo port install ): - - bzip2 - - freetype - - libpng - - libsamplerate - - speex - - zlib -4. Boost requires some special stuff. We must compile with clang and libc++. - - edit your /opt/local/etc/macports/macports.conf - - add to end: default_compiler clang - - sudo port edit boost - - change this line: - write_jam "using darwin : : ${configure.cxx} : \"${configure.cxxflags}\" ${compileflags} \"${configure.ldflags}\" : ;" - - to this: - write_jam "using darwin : : ${configure.cxx} : \"${configure.cxxflags} -std=c++11 -stdlib=libc++\" ${compileflags} \"${configure.ldflags} -stdlib=libc++\" : ;" - - if you have boost already installed in macports, remove it: - - sudo port uninstall boost - - reinstall boost from source: - - sudo port -s install boost -5. Download the Mupen64Plus source code: - - Open terminal window, create build directory for Mupen64Plus - - Download and unpack the latest m64p_helper_scripts.tar.gz from: https://code.google.com/p/mupen64plus/wiki/CompilingFromHg - - run ./m64p_get.sh -6. Hack your ui-console makefile to build against SDLMain.m_o: - - edit source/mupen64plus-ui-console/projects/unix/Makefile - - change line: - CFLAGS += $(SDL_CFLAGS) - - to: - CFLAGS += $(SDL_CFLAGS) ~/devel-lite/SDLMain.m_o -framework Cocoa -7. Hack your m64p_build.sh script to build under OSX: - - change line: - "$MAKE" -C source/mupen64plus-${component}/projects/unix all $@ - - to: - if [ "${component}" = "ui-console" ]; then - "$MAKE" -C source/mupen64plus-${component}/projects/unix all -j4 V=1 CC=clang CXX=clang++ OSX_SDK=10.7 SDL_CFLAGS="-I/opt/local/include -D__APPLE__ -I/Library/Frameworks/SDL.framework/Headers" SDL_LDLIBS="-F/Library/Frameworks -framework SDL -framework Foundation" OPTFLAGS="-O3" LDFLAGS="-Wl,-rpath -Wl,@executable_path/../Frameworks" - else - "$MAKE" -C source/mupen64plus-${component}/projects/unix all -j4 V=1 CC=clang CXX=clang++ OSX_SDK=10.7 SDL_CFLAGS="-I/opt/local/include -D__APPLE__ -I/Library/Frameworks/SDL.framework/Headers" SDL_LDLIBS="-F/Library/Frameworks -framework SDL -framework Foundation" OPTFLAGS="-O3" - fi -8. Build it - - copy osx_build_bundle.sh from source/mupen64plus-core/tools to current directory - - run ./osx_build_bundle.sh From f3abd1f057ebfc2c7833589e3606978f556e93d0 Mon Sep 17 00:00:00 2001 From: littleguy77 Date: Wed, 31 Dec 2014 17:51:39 -0500 Subject: [PATCH 2/4] tools: Switch to vanilla upstream for core. --- tools/pull-upstream.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pull-upstream.sh b/tools/pull-upstream.sh index a72dc12c76..ee105574c6 100644 --- a/tools/pull-upstream.sh +++ b/tools/pull-upstream.sh @@ -42,7 +42,7 @@ for i in $COMPONENTS; do CLONE_DIR="tmp/mupen64plus-${i}" BASE_URL="https://github.com/mupen64plus/mupen64plus-${i}" case "$i" in - "audio-sdl"|"core"|"ui-console") + "audio-sdl"|"ui-console") # Use mupen64plus-ae fork in some cases BASE_URL="https://github.com/mupen64plus-ae/mupen64plus-${i}" ;; From 1222288ffcb2bb8e8d88930dacd9956c191f542f Mon Sep 17 00:00:00 2001 From: littleguy77 Date: Wed, 31 Dec 2014 17:53:03 -0500 Subject: [PATCH 3/4] core: Update to commit addef5f. https://github.com/mupen64plus/mupen64plus-core/commit/addef5f From 3999a5941b5d14c0a57da845c400ebe33a7722d5 Mon Sep 17 00:00:00 2001 From: littleguy77 Date: Wed, 31 Dec 2014 17:56:27 -0500 Subject: [PATCH 4/4] assets: Sync mupen64plus.ini with upstream (long overdue). --- assets/mupen64plus_data/mupen64plus.ini | 104 ++++++++++++++++++ .../android/mupen64plusae/SplashActivity.java | 2 +- 2 files changed, 105 insertions(+), 1 deletion(-) diff --git a/assets/mupen64plus_data/mupen64plus.ini b/assets/mupen64plus_data/mupen64plus.ini index d9d4b4cc59..b771d06c2f 100644 --- a/assets/mupen64plus_data/mupen64plus.ini +++ b/assets/mupen64plus_data/mupen64plus.ini @@ -5950,6 +5950,12 @@ CRC=AF9DCC15 1A723D88 Players=1 SaveType=Eeprom 4KB +[6F417D30D772F4420C9384E9BBB7BC01] +GoodName=Indiana Jones and the Infernal Machine (E) +CRC=3A6F8C6B 2897BAEB +SaveType=Eeprom 4KB +Players=1 + [A7781D441AF55C4FF8AFC68AB3A59313] GoodName=Indy Racing 2000 (U) [!] CRC=E436467A 82DE8F9B @@ -6846,6 +6852,10 @@ SaveType=Flash RAM Status=4 Rumble=Yes Players=1 +; Subscreen Delay Fix +Cheat0=801DB78B 0002 +; End Credits Fix +Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 [33FB7852C180B18EA0B9620B630F413F] GoodName=Zelda no Densetsu - Toki no Ocarina GC (J) (GC) [!] @@ -6854,6 +6864,10 @@ SaveType=Flash RAM Status=4 Rumble=Yes Players=1 +; Subscreen Delay Fix +Cheat0=801DB78B 0002 +; End Credits Fix +Cheat1=D109A834 0320,8109A834 0000,D109A836 F809,8109A836 0000 [69895C5C78442260F6EAFB2506DC482A] GoodName=Zelda no Densetsu - Toki no Ocarina GC URA (J) (GC) [!] @@ -6862,6 +6876,10 @@ SaveType=Flash RAM Status=4 Rumble=Yes Players=1 +; Subscreen Delay Fix +Cheat0=801DB78B 0002 +; End Credits Fix +Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 [13FAB67E603B002CEAF0EEA84130E973] GoodName=Legend of Zelda, The - Majora's Mask (E) (M4) (V1.0) [!] @@ -6991,6 +7009,8 @@ SaveType=SRAM Status=4 Rumble=Yes Players=1 +; Subscreen Delay Fix +Cheat0=801DA5CB 0002 [A04EBD753276C52E95E25AF7683DA32D] GoodName=Zelda no Densetsu - Toki no Ocarina (J) (V1.0) [T+Chi.02_madcell] @@ -7014,11 +7034,15 @@ SaveType=SRAM Status=4 Rumble=Yes Players=1 +; Subscreen Delay Fix +Cheat0=801DA78B 0002 [2258052847BDD056C8406A9EF6427F13] GoodName=Zelda no Densetsu - Toki no Ocarina (J) (V1.2) [!] CRC=693BA2AE B7F14E9F RefMD5=1BF5F42B98C3E97948F01155F12E2D88 +; Subscreen Delay Fix +Cheat0=801DAE8B 0002 [E040DE91A74B61E3201DB0E2323F768A] GoodName=Legend of Zelda, The - Ocarina of Time (E) (M3) (V1.0) [!] @@ -7027,6 +7051,8 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801D860B 0002 [2B60EF777F759B4F0E19DDF3CB84D9AB] GoodName=Legend of Zelda, The - Ocarina of Time (E) (M3) (V1.0) [b1] @@ -7050,6 +7076,8 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801D864B 0002 [5BD1FE107BF8106B2AB6650ABECD54D6] GoodName=Legend of Zelda, The - Ocarina of Time (U) (V1.0) [!] @@ -7058,6 +7086,8 @@ Status=4 SaveType=SRAM Players=1 Rumble=Yes +; Subscreen Delay Fix +Cheat0=801DA5CB 0002 [A43A350385FA814EC9793B7ACD9E18F4] GoodName=Legend of Zelda, The - Ocarina of Time (U) (V1.0) (Room121 Hack) @@ -7230,6 +7260,8 @@ Status=4 SaveType=SRAM Players=1 Rumble=Yes +; Subscreen Delay Fix +Cheat0=801DA78B 0002 [92C842FC8CF706FF290044D40A64D346] GoodName=Legend of Zelda, The - Ocarina of Time (U) (V1.1) [T+Ita100] @@ -7276,6 +7308,8 @@ GoodName=Legend of Zelda, The - Ocarina of Time (U) (V1.2) [!] CRC=693BA2AE B7F14E9F Players=1 SaveType=SRAM +; Subscreen Delay Fix +Cheat0=801DAE8B 0002 [CD09029EDCFB7C097AC01986A0F83D3F] GoodName=Legend of Zelda, The - Ocarina of Time (U) (GC) [!] @@ -7284,6 +7318,10 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801DB78B 0002 +; End Credits Fix +Cheat1=D109A814 0320,8109A814 0000,D109A816 F809,8109A816 0000 [2C27B4E000E85FD78DBCA551F1B1C965] GoodName=Legend of Zelda, The - Ocarina of Time (E) (GC) [!] @@ -7292,6 +7330,10 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801D8F8B 0002 +; End Credits Fix +Cheat1=D109A8E4 0320,8109A8E4 0000,D109A8E6 F809,8109A8E6 0000 [77314FE3C3EDD472D0554C12FEDB38F4] GoodName=Legend of Zelda, The - Ocarina of Time (E) (GC) [f1] @@ -7305,6 +7347,10 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801D8F4B 0002 +; End Credits Fix +Cheat1=D109A8C4 0320,8109A8C4 0000,D109A8C6 F809,8109A8C6 0000 [BC2ECBE96B04EDC56B08347DF7C7FECD] GoodName=Legend of Zelda, The - Ocarina of Time - Master Quest (E) (GC) [T+Ita70%_Rulesless] @@ -7333,6 +7379,10 @@ Status=4 Players=1 SaveType=SRAM Rumble=Yes +; Subscreen Delay Fix +Cheat0=801DB74B 0002 +; End Credits Fix +Cheat1=D109A7F4 0320,8109A7F4 0000,D109A7F6 F809,8109A7F6 0000 [26A1616667EEC82288534C47B6927D45] GoodName=Legend of Zelda, The - Ocarina of Time - Master Quest (U) (Debug Version) [f1] @@ -10623,6 +10673,12 @@ Players=1 Rumble=No SaveType=Eeprom 4KB CountPerOp=3 +; Land Shadow Fix (disabled because can cause hangs when pressing Quit after landing) +;Cheat0=D0264361 0012,80264361 00FF,D0264BE1 0012,80264BE1 00FF,D0264DA1 0012,80264DA1 00FF,D02647E1 0012,802647E1 00FF,D02646A1 0012,802646A1 00FF,D0264661 0012,80264661 00FF,D02649A1 0012,802649A1 00FF +;Cheat1=D0264BA1 0012,80264BA1 00FF,D0264AA1 0012,80264AA1 00FF,D02641E1 0020,802641E1 00FF,D02648E1 0020,802648E1 00FF,D0264D61 0020,80264D61 00FF,D0264A21 0020,80264A21 00FF,D02645A1 0020,802645A1 00FF +;Cheat2=D02647A1 0020,802647A1 00FF,D02642A1 0029,802642A1 00FF,D0264921 0029,80264921 00FF,D0264621 0029,80264621 00FF,D0264A21 0029,80264A21 00FF,D0264C61 0029,80264C61 00FF,D02647A1 0029,802647A1 00FF +;Cheat3=D0264FE1 0029,80264FE1 00FF,D0265161 0029,80265161 00FF,D0264AA1 0029,80264AA1 00FF,D02641E1 003D,802641E1 00FF,D02649E1 003D,802649E1 00FF,D0264561 003D,80264561 00FF,D02646E1 003D,802646E1 00FF +;Cheat4=D0264721 003D,80264721 00FF [F21E2A3A05ACF49586F32DCE5C449FE4] GoodName=Pilotwings 64 (E) (M3) [b1] @@ -10646,6 +10702,12 @@ Players=1 SaveType=Eeprom 4KB Rumble=No CountPerOp=3 +; Land Shadow Fix (disabled because can cause hangs when pressing Quit after landing) +;Cheat0=D02639B1 0012,802639B1 00FF,D0264231 0012,80264231 00FF,D02643F1 0012,802643F1 00FF,D0263E31 0012,80263E31 00FF,D0263CF1 0012,80263CF1 00FF,D0263CB1 0012,80263CB1 00FF,D0263FF1 0012,80263FF1 00FF +;Cheat1=D02641F1 0012,802641F1 00FF,D02640F1 0012,802640F1 00FF,D0263831 0020,80263831 00FF,D0263F31 0020,80263F31 00FF,D02643B1 0020,802643B1 00FF,D0264071 0020,80264071 00FF,D0263BF1 0020,80263BF1 00FF +;Cheat2=D0263DF1 0020,80263DF1 00FF,D02638F1 0029,802638F1 00FF,D0263F71 0029,80263F71 00FF,D0263C71 0029,80263C71 00FF,D0264071 0029,80264071 00FF,D02642B1 0029,802642B1 00FF,D0263DF1 0029,80263DF1 00FF +;Cheat3=D0264631 0029,80264631 00FF,D02647B1 0029,802647B1 00FF,D02640F1 0029,802640F1 00FF,D0263831 003D,80263831 00FF,D0264031 003D,80264031 00FF,D0263BB1 003D,80263BB1 00FF,D0263D31 003D,80263D31 00FF +;Cheat4=D0263D71 003D,80263D71 00FF [2740F1B89CE7D78A5D31CF60C97A0C11] GoodName=Pilotwings 64 (J) [b1] @@ -10659,6 +10721,12 @@ Players=1 SaveType=Eeprom 4KB Rumble=No CountPerOp=3 +; Land Shadow Fix (disabled because can cause hangs when pressing Quit after landing) +;Cheat0=D0263B41 0012,80263B41 00FF,D02643C1 0012,802643C1 00FF,D0264581 0012,80264581 00FF,D0263FC1 0012,80263FC1 00FF,D0263E81 0012,80263E81 00FF,D0263E41 0012,80263E41 00FF,D0264181 0012,80264181 00FF +;Cheat1=D0264381 0012,80264381 00FF,D0264281 0012,80264281 00FF,D02639C1 0020,802639C1 00FF,D02640C1 0020,802640C1 00FF,D0264541 0020,80264541 00FF,D0264201 0020,80264201 00FF,D0263D81 0020,80263D81 00FF +;Cheat2=D0263F81 0020,80263F81 00FF,D0263A81 0029,80263A81 00FF,D0264101 0029,80264101 00FF,D0263E01 0029,80263E01 00FF,D0264201 0029,80264201 00FF,D0264441 0029,80264441 00FF,D0263F81 0029,80263F81 00FF +;Cheat3=D02647C1 0029,802647C1 00FF,D0264941 0029,80264941 00FF,D0264281 0029,80264281 00FF,D02639C1 003D,802639C1 00FF,D02641C1 003D,802641C1 00FF,D0263D41 003D,80263D41 00FF,D0263EC1 003D,80263EC1 00FF +;Cheat4=D0263F01 003D,80263F01 00FF [E28F8F19E56CC6C7A0F3A3286AEB60C1] GoodName=Pilotwings 64 (U) [h1C] @@ -10768,6 +10836,10 @@ CRC=EC0F690D 32A7438C Players=1 Rumble=Yes SaveType=Flash RAM +; Pass 1st Level and Controller Fix +Cheat0=D136D22C 802A,8036D21F 0000 +; Make Picture selectable +Cheat1=D11E1EC4 2881,811E1EC4 2001,D11E1EC6 0098,811E1EC6 0001 [42CC0FE1442B0A498DFD8F743179C51A] GoodName=Pocket Monsters Snap (J) [b1] @@ -10888,6 +10960,10 @@ CRC=7BB18D40 83138559 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1382D1C 802C,80382D0F 0000 +; Make Picture selectable +Cheat1=D11E3C44 2881,811E3C44 2001,D11E3C46 0098,811E3C46 0001 [A88FCF3FF00F21D3CEC44D2E0FAAAAD8] GoodName=Pokemon Snap (A) [f1] (GameShark) @@ -10900,6 +10976,10 @@ CRC=4FF5976F ACF559D8 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1381BFC 802C,80381BEF 0000 +; Make Picture selectable +Cheat1=D11E3824 2881,811E3824 2001,D11E3826 0098,811E3826 0001 [E9028F9CCC307806695DD81742D05D5D] GoodName=Pokemon Snap (F) [!] @@ -10907,6 +10987,10 @@ CRC=BA6C293A 9FAFA338 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1381BFC 802C,80381BEF 0000 +; Make Picture selectable +Cheat1=D11E3744 2881,811E3744 2001,D11E3746 0098,811E3746 0001 [5FA70A63E352EA804607999674381749] GoodName=Pokemon Snap (F) [b1] @@ -10919,6 +11003,10 @@ CRC=5753720D 2A8A884D Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1381BDC 802C,80381BCF 0000 +; Make Picture selectable +Cheat2=D11E3744 2881,811E3744 2001,D11E3746 0098,811E3746 0001 [D0453459095F69BE36D675D8F743069B] GoodName=Pokemon Snap (I) [!] @@ -10926,6 +11014,10 @@ CRC=C0C85046 61051B05 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1381BFC 802C,80381BEF 0000 +; Make Picture selectable +Cheat1=D11E3994 2881,811E3994 2001,D11E3996 0098,811E3996 0001 [A45D7115BE5A06FD1567F9F913C3BDF8] GoodName=Pokemon Snap (S) [!] @@ -10933,6 +11025,10 @@ CRC=817D286A EF417416 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1381BFC 802C,80381BEF 0000 +; Make Picture selectable +Cheat1=D11E38C4 2881,811E38C4 2001,D11E38C6 0098,811E38C6 0001 [FC3C9329B7CDD67CF7650ABF63B9A580] GoodName=Pokemon Snap (U) [!] @@ -10940,6 +11036,10 @@ CRC=CA12B547 71FA4EE4 Players=1 SaveType=Flash RAM Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1382D1C 802C,80382D0F 0000 +; Make Picture selectable +Cheat1=D11E3184 2881,811E3184 2001,D11E3186 0098,811E3186 0001 [CCA6F7593302D46ADA66C991C976DA2D] GoodName=Pokemon Snap (U) [T+Spa] @@ -10971,6 +11071,10 @@ GoodName=Pokemon Snap Station (U) [!] CRC=39119872 07722E9F Players=1 Rumble=Yes +; Pass 1st Level and Controller Fix +Cheat0=D1382D1C 802C,80382D0F 0000 +; Make Picture selectable +Cheat1=D11E30F4 2881,811E30F4 2001,D11E30F6 0098,811E30F6 0001 [B88F0EC125C54685FA516D233B564842] GoodName=Pokemon Snap Station (U) [f1] diff --git a/src/paulscode/android/mupen64plusae/SplashActivity.java b/src/paulscode/android/mupen64plusae/SplashActivity.java index 5151814fe9..540c5073d7 100644 --- a/src/paulscode/android/mupen64plusae/SplashActivity.java +++ b/src/paulscode/android/mupen64plusae/SplashActivity.java @@ -58,7 +58,7 @@ public class SplashActivity extends Activity implements ExtractAssetsListener * Asset version number, used to determine stale assets. Increment this number every time the * assets are updated on disk. */ - private static final int ASSET_VERSION = 48; + private static final int ASSET_VERSION = 49; /** The total number of assets to be extracted (for computing progress %). */ private static final int TOTAL_ASSETS = 115;