Package: mupen64plus-core / 2.0-7

Metadata

Package Version Patches format
mupen64plus-core 2.0-7 3.0 (quilt)

Patch series

view the series file
Patch File delta Description
bitstream font.patch | (download)

projects/unix/Makefile | 1 1 + 0 - 0 !
src/osd/osd.cpp | 4 2 + 2 - 0 !
2 files changed, 3 insertions(+), 2 deletions(-)

 use font from ttf-bitstream-vera
printf_fixup.patch | (download)

src/api/callbacks.h | 2 1 + 1 - 0 !
src/debugger/dbg_decoder.c | 5 5 + 0 - 0 !
src/main/main.h | 2 1 + 1 - 0 !
src/osd/osd.h | 4 2 + 2 - 0 !
4 files changed, 9 insertions(+), 4 deletions(-)

 add printf-format attribute
 The compiler needs to get more information for function declaration to
 help to find printf specific format attacks.
disable_recompiler_disassembler.patch | (download)

projects/unix/Makefile | 2 1 + 1 - 0 !
src/debugger/dbg_memory.c | 2 1 + 1 - 0 !
2 files changed, 2 insertions(+), 2 deletions(-)

 disable the disassembler of the recompiled code
 The interface of libopcode.so and libbfd.so is not stable and therefore not
 allowed to use in Debian. The libopcode.a and libbfd.a don't provide PIC
 object files and therefore cannot be linked to the PIC shared object.
 .
 This part of the debugging interface can be disabled because their is no known
 user interface that has support for it.
sdl2_keysym.patch | (download)

projects/unix/Makefile | 1 1 + 0 - 0 !
src/main/eventloop.c | 72 37 + 35 - 0 !
src/main/sdl_key_converter.c | 652 652 + 0 - 0 !
src/main/sdl_key_converter.h | 52 52 + 0 - 0 !
tools/gen_sdl_key_converter.c | 498 498 + 0 - 0 !
5 files changed, 1240 insertions(+), 35 deletions(-)

 use sdl1.2 keysym in the config when using sdl2
 It is easier for a user to keep the old SDL1.2 values for the keys in the
 config instead of converting them by hand. This is extreme important when the
 default (automatic) config is used.
multiple_main.patch | (download)

src/main/main.c | 9 0 + 9 - 0 !
1 file changed, 9 deletions(-)

 fix multiple definitions of main in same namespace
n64_cic_nus_6105_reset.patch | (download)

src/memory/pif.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 reset pif_ramb 46,47 after the n64_cic_nus_6105 challenge
 Response check fails when the PIF RAM is is not set to zero for byte 46+47
sdl2_select_saveslot.patch | (download)

src/main/eventloop.c | 42 40 + 2 - 0 !
1 file changed, 40 insertions(+), 2 deletions(-)

 fix saveslot selection for sdl2
 The IDs for SDL scancodes don't start from SDL_SCANCODE_0 and end at
 SDL_SCANCODE_9. Therefore, SDL_SCANCODE_9 is bigger than SDL_SCANCODE_0 (which
 violates a precondition of the key check) and this makes it impossible to
 select a saveslot using the numbers on the keyboard.
Bug-Debian: http://bugs.debian.org/717801
sdl2_no_unicode.patch | (download)

src/api/vidext_sdl2_compat.h | 19 0 + 19 - 0 !
1 file changed, 19 deletions(-)

 remove sdl unicode keycode compat code
 SDL 2.0 cannot store unicode anymore. Pre-2.0 versions provided this
 field but it was removed right before the 2.0 release. Still using it
 makes the compile fail.
oot_subscreen_delay_fix.patch | (download)

src/main/cheat.c | 78 70 + 8 - 0 !
1 file changed, 70 insertions(+), 8 deletions(-)

 add missing subscreen delay fix for ocarina of time
 Mupen64plus contains built-in cheats for Ocarina of Time, which activates the
 essential subscreen delay fix.  However, the built-in code for Master Quest
 only works for the (E) version of Master Quest, and not the (U) version. The
 file also does not include the (U) (GC) version of Ocarina of Time. Master
 Quest and the GC versions of Ocarina of Time also need the End Credits Fix,
 otherwise these games will crash when the credits are displayed.
counter_per_op.patch | (download)

doc/emuwiki-api-doc/Mupen64Plus_Core_Parameters.txt | 4 4 + 0 - 0 !
src/main/main.c | 4 4 + 0 - 0 !
src/r4300/interupt.c | 4 2 + 2 - 0 !
src/r4300/new_dynarec/new_dynarec.c | 2 1 + 1 - 0 !
src/r4300/r4300.c | 3 2 + 1 - 0 !
src/r4300/r4300.h | 1 1 + 0 - 0 !
src/r4300/x86/gr4300.c | 12 4 + 8 - 0 !
src/r4300/x86_64/gr4300.c | 4 3 + 1 - 0 !
8 files changed, 21 insertions(+), 13 deletions(-)

 allow to overwrite the cycles per instruction
two_events_interrupt.patch | (download)

src/r4300/interupt.c | 2 2 + 0 - 0 !
1 file changed, 2 insertions(+)

 don't insert a second interrupt event from same type
delay_si.patch | (download)

doc/emuwiki-api-doc/Mupen64Plus_Core_Parameters.txt | 4 4 + 0 - 0 !
src/main/main.c | 2 2 + 0 - 0 !
src/main/main.h | 2 2 + 0 - 0 !
src/memory/dma.c | 19 17 + 2 - 0 !
4 files changed, 25 insertions(+), 2 deletions(-)

 allow to disable interrupt delay after dma si read/write
 Titles like Banjo Tooie are known to hang because the interrupt after the SI
 read/write is delayed. But there are also titles which are known to have
 problems when delay is enabled. Examples are
 * Body Harvest
 * City Tour Grandprix - Zennihon GT Senshuken
 * Cruis'n USA
 * GT 64 - Championship Edition
 * Nightmare Creatures
 * Ucchan Nanchan no Hono no Challenger - Denryuu Ira Ira Bou
config_currentstateslot.patch | (download)

src/main/savestates.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 use correct config parameter string (currentsaveslot->currentstateslot)
obsolete_variable.patch | (download)

src/r4300/interpreter_cop0.def | 2 0 + 2 - 0 !
src/r4300/r4300.c | 3 0 + 3 - 0 !
src/r4300/r4300.h | 1 0 + 1 - 0 !
3 files changed, 6 deletions(-)

 remove obsolete variable; caused crashes in pd/goldeneye in android ed.
format_eeprom.patch | (download)

src/memory/pif.c | 2 1 + 1 - 0 !
1 file changed, 1 insertion(+), 1 deletion(-)

 a cleared eeprom block has all bits to 1 and not 0
revert_wii64_eeprom.patch | (download)

data/mupen64plus.ini | 8 4 + 4 - 0 !
1 file changed, 4 insertions(+), 4 deletions(-)

 revert "merge 16kb eeprom savetype with wii64"
countperop_rominfo.patch | (download)

src/main/main.c | 2 1 + 1 - 0 !
src/main/rom.c | 14 14 + 0 - 0 !
src/main/rom.h | 2 2 + 0 - 0 !
src/r4300/r4300.c | 2 1 + 1 - 0 !
src/r4300/r4300.h | 1 1 + 0 - 0 !
5 files changed, 19 insertions(+), 2 deletions(-)

 allow to load countperop info from mupen64plus.ini
 The CountPerOp settings has to be adjusted for each ROM. It is easier for the
 enduser when the default value is not hardcoded in mupen64plus and instead
 this dynamic information is retreived from the mupen64plus.ini.
 .
 The countperop information (currently named count_per_op_default) is not saved
 inside m64p_rom_settings because this type is exported using the frontend api.
 Modifying this would require a version bump.
countperop_romdb.patch | (download)

data/mupen64plus.ini | 158 158 + 0 - 0 !
1 file changed, 158 insertions(+)

 add countperop info to mupen64plus.ini
 The CountPerOp settings has to be adjusted for each ROM. It is easier for the
 enduser when the default value is not hardcoded in mupen64plus and instead
 this dynamic information is retreived from the mupen64plus.ini.
sdl2_no_surface.patch | (download)

src/api/vidext_sdl2_compat.h | 376 28 + 348 - 0 !
1 file changed, 28 insertions(+), 348 deletions(-)

 remove unused sdl2 surface in compat code
 mupen64plus doesn't support 2D video output because it forces OPENGL mode.
 Unfortunately, the rest of the compat code still assumes that surfaces for 2D
 data are used and overwrites the data when the window is changed.
 .
 The surface code can be removed to avoid these problems.
sdl2_destroywindow.patch | (download)

src/api/vidext.c | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 close sdl2 window when quitting video subsystem
 SDL2 doesn't close windows anymore when the video subsystem is closed.
 Therefore, the window created by the SDL2 compat layer has to be closed
 manually to avoid orphan windows in frontends like m64py in non-VidExt mode.
interpreter_cmd_link_unconditionally.patch | (download)

src/r4300/pure_interp.c | 10 5 + 5 - 0 !
src/r4300/r4300.c | 20 10 + 10 - 0 !
2 files changed, 15 insertions(+), 15 deletions(-)

 save link information in *al(l) instructions unconditionally
 All "Jump and link" and "Branch and link" like instructions save the PC in the
 target register unconditionally and not only when the branch/jump is taken.
 The specification is not clear whether the store is actually made before or
 after the delay slot and therefore the behavior of the dynarecs ("link" before
 delay slot) is used.
cheat_multiconditions.patch | (download)

src/main/cheat.c | 84 34 + 50 - 0 !
1 file changed, 34 insertions(+), 50 deletions(-)

 allow multiple preconditions per cheat
 Each cheat code can have multiple preconditions which all have to be fulfilled
 before it can be executed. The default implementation in mupen64plus could not
 handle these extra test codes because a failed test only caused a jump over
 the next cheatcode (ignoring whether is also a test or a non-test cheatcode).
 .
 Therefore, all (negative) results before a non-test cheat code have to be
 aggregated. The first non-test cheatcode evaluates the result of the
 preconditions and only executes the non-test cheatcode when no precondition
 test failed. The earlier results are always dropped after a non-test cheatcode
 to allow a fresh start.
mario64_levitate.patch | (download)

data/mupen64plus.cht | 6 3 + 3 - 0 !
data/mupencheat.txt | 12 6 + 6 - 0 !
2 files changed, 9 insertions(+), 9 deletions(-)

 use same precondition for all parts of the mario64 levitate cheat
 The cheat code consists of three pairs of precondition and actual write. The
self_reference_romdb.patch | (download)

data/mupen64plus.ini | 30 15 + 15 - 0 !
1 file changed, 15 insertions(+), 15 deletions(-)

 fix self-references in mupen64plus.ini.
invalid_reference_romdb.patch | (download)

data/mupen64plus.ini | 12 6 + 6 - 0 !
1 file changed, 6 insertions(+), 6 deletions(-)

 fix incorrect md5 references in mupen64plus.ini.
countperop_hydrothunter.patch | (download)

data/mupen64plus.ini | 3 3 + 0 - 0 !
1 file changed, 3 insertions(+)

 zuzma says that hydro thunder plays without freezing if the countperop is set to 1
complete_resolve_romdb.patch | (download)

src/main/rom.c | 82 58 + 24 - 0 !
1 file changed, 58 insertions(+), 24 deletions(-)

 only resolve using complete rom database entries
 The old rom database algorithm tried to resolve (refMD5) entries immediately in
 romdatabase_open without checking the referenced entry. This algorithm caused
 entries to be used when they are still have uninitialized fields because the
 referenced entry still has some other entries which it referenced.
 .
 Using only complete (resolved) entries also allows to detect loops
 (unresolvable references) as seen before
 304bf8c4de6824ed09b71622a23662f9111a660b ("Fix self-references in
 mupen64plus.ini")
nondefault_resolve_romdb.patch | (download)

src/main/rom.c | 96 74 + 22 - 0 !
src/main/rom.h | 21 21 + 0 - 0 !
2 files changed, 95 insertions(+), 22 deletions(-)

 don't overwrite rom specific settings during resolve phase
 The behavior of the romdatabase_resolve was to overwrite any setting when the
 referenced rom had non-default settings. This made it impossible to use
cheatengine_workarounds.patch | (download)

src/main/cheat.c | 181 96 + 85 - 0 !
src/main/cheat.h | 1 1 + 0 - 0 !
src/main/main.c | 2 2 + 0 - 0 !
3 files changed, 99 insertions(+), 85 deletions(-)

 use normal cheat engine to run workaround cheats
 Instead of hardcoding special commands in cheat_apply_cheats, it is easier to
 just use add the codes to the active cheats list when the the rom is started.
 This avoids having more string compares and similar things in this regularly
 called routine when more workaround cheats are added.
 .
 This is especially helpful against the slowdowns in the Zelda debug roms caused
 by the "Warning: Ocarina of Time version could not be determined.  No fixes
 applied." spam on the console.
zelda_workarounds_romdb.patch | (download)

data/mupen64plus.ini | 44 44 + 0 - 0 !
1 file changed, 44 insertions(+)

 add zelda oot cheats to mupen64plus.ini
 It is a lot easier to add the workaround cheats to the mupen64plus.ini instead
 of having them hardcoded in the cheat engine. The data is currently not used
 because it still has to be parsed by the romdatabase before these general
 workaround cheats are supported.
workarounds_romdb.patch | (download)

src/main/cheat.c | 186 96 + 90 - 0 !
src/main/rom.c | 42 42 + 0 - 0 !
src/main/rom.h | 3 3 + 0 - 0 !
3 files changed, 141 insertions(+), 90 deletions(-)

 parse cheats from from mupen64plus.ini
 The workaround cheats are easier to manage over the mupen64plus.ini instead of
 hardcoding them inside the mupen64plus-core source code.
pilotwings_workarounds_romdb.patch | (download)

data/mupen64plus.ini | 18 18 + 0 - 0 !
1 file changed, 18 insertions(+)

 add note about (broken) pilotwing64 shadow fix
 This fix is used in PJ64 to avoid the big landing shadow block. But it can
 cause hangs when the user presses Quit (can be reproduced in PJ64+m64p when
 using the rocket in 3FCD4969F9A080BD2BCB913EC5D7A3BD).
pokemon_snap_workarounds_romdb.patch | (download)

data/mupen64plus.ini | 36 36 + 0 - 0 !
1 file changed, 36 insertions(+)

 add workaround to make pokemon snap controls working and images selectable
 The controller problem seems to be related to the graphics plugin. A quote from darkmaster14
 .
 "I believe the Pokemon Snap input issue is closely related to the missing red
 dot issue. If you recall, in the original hardware, when you first arrive on
 the beach, there's a small tutorial where you can't move the cursor until you
 take a picture of the first few Pokemon that show up. Once you finish the mini
 tutorial, you can move the cursor around as you please. Well, the red dot
 doesn't work on most plugins, so the game doesn't detect the cursor locking
 onto the first few Pokemon, so the tutorial doesn't work, and thus the input
 never gets unlocked.
 .
 Well, I got a hold of a very buggy port of FatCat's software renderer plugin
 for Mupen64Plus, and the red dot works on that, which lets you do the tutorial,
 and thus the cursor movement is unlocked and you can play the game as normal.
 So really, the problem most likely lies in the video plugins rather than the
 emulation core. I'm guessing on Project64, however, they added a hack to force
 the cursor to move around despite the red dot not working, which is why it
 works on that emulator."
flashram_read_handing.patch | (download)

src/memory/flashram.c | 1 1 + 0 - 0 !
1 file changed, 1 insertion(+)

 add missing read mode check in flashram_command -> execute
duplicates_cheatdb.patch | (download)

data/mupen64plus.cht | 9 1 + 8 - 0 !
data/mupencheat.txt | 22 10 + 12 - 0 !
2 files changed, 11 insertions(+), 20 deletions(-)

 fix duplicate entries and broken formatting in cheat files.
 There may be others, but these are the obvious ones that tripped our
 parser.
whitelist_cheatdb.patch | (download)

data/mupen64plus.cht | 32 16 + 16 - 0 !
data/mupencheat.txt | 32 16 + 16 - 0 !
2 files changed, 32 insertions(+), 32 deletions(-)

 remove leading/trailing whitespace in some cheat strings.
nfl_duplicates_cheatdb.patch | (download)

data/mupen64plus.cht | 20 0 + 20 - 0 !
data/mupencheat.txt | 33 0 + 33 - 0 !
2 files changed, 53 deletions(-)

 remove duplicate cheatfile entry (nfl quarterback club 2000).
turok2_duplicates_cheatdb.patch | (download)

data/mupen64plus.cht | 7 0 + 7 - 0 !
data/mupencheat.txt | 2 0 + 2 - 0 !
2 files changed, 9 deletions(-)

 remove duplicate cheatfile entry (turok 2 - seeds of evil (fgd)).