pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/games/py-renpy
Module Name: pkgsrc
Committed By: ryoon
Date: Thu Jul 23 14:03:50 UTC 2026
Modified Files:
pkgsrc/games/py-renpy: Makefile PLIST distinfo
Added Files:
pkgsrc/games/py-renpy/patches: patch-src_renpybidicore.c
patch-src_tinyfiledialogs_tinyfiledialogs.c
Removed Files:
pkgsrc/games/py-renpy/patches: patch-launcher_game_gui7_code.py
patch-module_renpybidicore.c patch-module_setup.py
patch-module_tinyfiledialogs_tinyfiledialogs.c
patch-renpy_gl_glenviron__shader.pyx
Log Message:
games/py-renpy: Update to 8.5.3
Changelog:
8.5.3
Dependency Updates
Ren'Py now supports and requires Live2D 5.3. You may need to update Live2D to
continue to use it in Ren'Py 8.5.3 or later.
Ren'Py Stores as Python Packages
Ren'Py now treats Ren'Py stores as Python packages, as was documented but not
implemented. This means imports can work from other stores. For example:
init python in store.substore1:
A = 42
init python in store.substore2:
B = 37
init python:
from store.substore1 import A
from store.substore2 import B
Note that such imports assign names, but do not create aliases. Updating A in
the main store will not change its value in substore1, and vice versa.
Parse Error Improvements
Parse errors are now reported at the end of each priority level (libs, then the
game, then mods). Within a priority level, parse errors in filenames that begin
with a number (like 01statement.rpy or 01lib/statement.rpy) are reported before
parse errors in files that begin with letters.
This change is meant to allow parse errors in files defining creator-defined
statements to be reported before parse errors in the game script caused by the
use of a statement that is not properly defined. This allows creators to more
easily identify and fix problems with their creator-defined statements.
Fixes and Changes
renpy.pause() now always pauses for at least one frame. Previously, it could
avoid pausing after rollback.
There have been several improvements to dragging viewports that cure situations
where the viewport could be dragged without the mouse button being held down.
Automatic detection of language on macOS should work in more situations.
The new config.mesh_oversample variable can be configured to control how much a
mesh texture can be oversampled by, preventing additional blurriness when
scaled up. This defaults to 1.0 (disabled) in this version, but this will
change in Ren'Py 8.6.
The new config.say_menu_text_filters list of functions supplements the existing
config.say_menu_text_filter function.
An issue that could cause Ren'Py to corrupt data in a very specific case has
been fixed. The issue would occur when a Python finally or except block would
run as the stack was unwound after a load, and it would restore old data
inappropriately. This is an unlikely error, but could happen in Python-heavy
games.
Several low-probability crashes and memory leaks have been fixed.
Anisotropy is now disabled when nearest_neighbor sampling is used, preventing
blurriness.
The default value of the synchro_start parameter to
renpy.audio.register_channel(), which controls if music waits for queued music
on other channels to be played, is now the default loop value of the channel,
in all cases.
The value of mouse_visible is now properly restored when exiting the game menu.
The say behavior (used by dialogue) no longer lets you dismiss dialogue if the
screen is grabbed by another displayable, such as a viewport being dragged.
The camera statement is now documented to propagate transform state. (This was
always true, but was not documented.)
The nestled and nestled-close click-to-continue indicators now detect and
respect RTL languages.
Nestled and nestled-close click-to-continue indicators are now rendered at 0
width in all circumstances. This prevents a class of issues that could occur
with NVL-mode, retained bubbles, and other configurations. This is equivalent
to rendering the text without a click-to-continue indicator, and then placing
the CTC indicator next to the end of the rendered text. (This is similar to how
{w}, {p}, and extend were already handled.)
Translations
A Portuguese translation of the Ren'Py tutorial has been added.
An Italian translation of the Ren'Py tutorial has been added.
The Persian translation of the Ren'Py tutorial has been updated.
Features
When defining styles used by ruby text or style text tags, more style
properties can be set to None to use the value from the parent text. As of this
version, the following properties may be set to None: antialias, axis,
black_color, bold, color, font , font_features, hinting, instance, italic, size
, and textshader.
Due to that change, When using ruby text, you may now set font None, and the
font will be inherited. For example:
style ruby_style is default:
size 12
yoffset -20
color None # Use the same color as the parent text.
font None # Use the same font as the parent text.
The mouse_visible variable now has a new "always" value, which makes the mouse
always visible. This is useful for games that need to force the mouse to be
shown for minigame purposes.
Support has been added for a system-installed copy of the VSCodium text editor.
This is a libre build of the same source code that makes Visual Studio Code.
The Transform.unique() method has been added, which marks a transform as
unique. This prevents the transform from being copied when added to a
displayable, which allows the transform to maintain state across multiple uses,
or be referenced from outside its function argument.
8.5.2
Fixes
Fixes an issue where each time Ren'Py checked to see if rollback is possible,
one level of rollback would be consumed.
8.5.1
Fixes
Ren'Py will now properly compute the auto-forward time for text ending with the
no-wait ({nw}) text tag, followed by extend, as in:
e "This is {nw}"
extend "more text."
Ren'Py now unwinds the call stack before performing a rollback or load. This
prevents issues with caused except and finally blocks being executed after a
rollback, which could lead to the rolled-back data being changed.
Ren'Py now skips files and directories beginning with a dot (e.g. .hidden.rpy)
when scanning the filesystem. These files often have special meaning on unix
and mac platforms.
Speech bubble dialogue is only retained at the end of a sequence of pauses, not
every time.
Mouse Changes/Fixes
Ren'Py now cycles through a set of possible mouse cursor names when determining
which cursor to use. This includes the cursor based on the displayable (eg.
button), the screen type (eg. gamemenu), and the default.
MouseDisplayable now allows a mouse cursor to be None, to use the system
cursor.
Ren'Py now merges MOUSEMOTION events that occur in rapid succession at a lower
level, making the game more responsive when faced with mice that produce many
events per frame.
Other Changes
There is now a text safe mode that will display text with text-tag errors, when
the config.safe_text is set. This variable defaults to True in released games,
and False in developer mode.
Ren'Py now includes a cut-down version of the brotli python module. This
version supports the decompress method and Decompressor object, but leaves out
the Compressor object. It's intended to allow requests to handle
brotli-compressed responses.
Playing a voice line now stops ongoing self-voicing playback.
The new config.tlid_only_considers_say variable prevents non-say statements,
such as the voice statement, from contributing to translation identifiers.
(Translation identifiers are used for other things as well, like tracking
speech bubbles.) This variable defaults to False, but will become True in
Ren'Py 8.6. Setting this to true has the potential to change Translation
identifier if your game uses voice statements.
The bubble.area_property variable has become documented. This controls how the
area of a speech bubble is supplied to dialogue. It's now documented how to
supply the area as an argument to the bubble screen for further control.
There is a new "interact_done" character callback, which is called after each
interaction ends.
8.5.0
Live2D Web
Ren'Py now supports Live2D models on the web platform. This support includes
both launcher support for installing the Cubism SDK for Web, and support in
Ren'Py for loading Live2D models in the web environment.
Automated Testing
Ren'Py now includes a testing framework that makes it possible to define and
run automate tests of games and of Ren'Py itself. The testing framework is
designed to perform automated functional testing - for example, clicking
through a predefined sequence of dialogue and choice, and making sure the game
reaches the end without crashing, even when the game or engine is changed.
The testing framework is intended to be run in an environment with working GUI
support - most notably, working OpenGL is required, as the testing framework
exercises the full engine, including the portions of the engine that render the
game.
Testing can be run from the launcher, or from the command line using the test
command. The 'Run testcases' command is only present if at least one testcase
exists in the game. The Tutorial is a good project to use to see automated
testing in action.
Local Labels
Local labels have been relaxed so that they can be declared with any global
label. It's now possible to have in chapter_1_part_1.rpy:
label chapter_1:
label chapter_1.part_1:
# ...
And then in chapter_1_part_2.rpy:
label chapter_1.part_2:
# ...
Steam Support
Ren'Py now uses and requires Steamworks SDK 1.62.
When config.automatic_steam_timeline is set, Ren'Py will now use save_name to
set the game phase. (It's best to consider save_name to be a chapter name).
Previously, it would annotate timeline states instead of game phases.
Font and Unicode Support
Ren'Py now supports the WOFF2 font format, a modern and highly-compressed font
format. Support for the older WOFF format has been made official. The
config.font_name_map and config.font_replacement_map variables may be useful to
creators that wish to replace TrueType fonts with WOFF2 fonts.
Ren'Py's unicode support has been updated to include support for Unicode 17
characters.
The emoji font used by Ren'Py has been updated to include 435 more glyphs, with
other glyphs having been updated. (This includes most Unicode 16 emoji, but not
unicode 17 emoji.)
Gui Default Changes
There have been multiple changes to how the gui namespace interacts with the
default statement, designed to make how Ren'Py behaves match how it was
documented to behave. As of this release, gui variables set with default...
* ... are set when the game starts or restarts.
* ... can be changed in python blocks.
* ... retain the last set value when the language changes.
* ... are saved and loaded like other variables.
These changes only apply to variables that are initially set with default. All
variables in the gui namespace should be set with one of default or define.
Pygame_SDL2 Removal
Ren'Py no longer depends on the pygame_sdl2 project. To support future
development, such as a port to SDL3, most of pygame_sdl2 has been merged into
Ren'Py as the renpy.pygame package. For compatibility's sake, renpy.pygame is
importable as pygame or pygame_sdl2, though:
import renpy.pygame as pygame
is now the recommended way to import pygame-like functionality.
This change simplifies the Ren'Py build process. On Linux, it's now possible to
create a build of Ren'Py for development purposes using the uv tool.
Other Changes
Ren'Py's support for 32-bit ARM platforms is now built using 16 KB pages, which
prevents the Play Console from producing a warning.
Multiline input displayables now support the use of the up arrow and down arrow
keys to move the cursor to the next and previous line. As this works using the
character offset, it will work best with monospaced fonts.
The thumb_align property is now a style property rather than a keywork
property, and is supported in styles.
When exporting dialogue, Ren'Py will detect the special extend character and
include the prior character's name in the exported dialogue line.
The xmaximum and ymaximum properties can now increase the size offered to a
displayable beyond what is offered by its container.
The screen statement now requires a block. It always was documented as
requiring a block, but this was not enforced.
Setting config.tracesave_screenshot makes it possible to control if a
screenshot is taken when a traceback save is made.
The new before_load special label and config.before_load_callbacks make it
possible to change what is displayed and what sounds are played as a load
happens.
The new config.locale_to_language_map variable is a dictionary mapping locale
strings to language names, allowing config.enable_language_autodetect to be
customized more easily.
Movie() displayables now allocate channels dynamically when the movie is
playing. Previously, each Movie would allocate a channel when the movie was
created, which could lead to large amounts of memory in use to store the
channels and associated buffers.
The init_priority argument to the renpy.register_statement() function can now
be a function that returns the init priority, rather than an integer.
Ren'Py will no longer attempt to load .rpy files beginning with a dot (e.g.
.hidden.rpy), as these are hidden files on unix-like platforms.
When running the execute_init or execute_default functions in a creator-defined
statement, renpy.get_filename_line() will return the statements's filename and
line number.
The renpy.filename_line_override() context manager makes it possible to
override the filename and line number returned by renpy.get_filename_line().
The config.images_directory variable has been superseded by
config.image_directories, which is a list of directories that Ren'Py searches
for images.
The new config.context_callbacks variable makes it possible to define multiple
callbacks that are called when a new context is entered.
The game.zip file produced by the web platform no longer contains .py files.
Ren'Py will now prompt you to close other Ren'Py games before an upgrade. This
addresses problems on Windows that could be caused by launcher files in use by
games that are running during the upgra
Support for RTL languages is now enabled by default, so it is no longer
necessary to set config.rtl.
The new config.adjust_audio_amplitude allows a global adjustment of the
amplitude of all audio played through Ren'Py.
Fixes
A crash caused by improperly stored video textures has been fixed.
Alpha premultiplication is now properly performed on image-based fonts,
allowing proper alpha blending of these fonts.
Several problems editing the script (manifesting in in the interactive director
and the add from to calls command) hav been fixed.
An issue with the scaling of oversampled videos has been fixed.
8.4.1
Fixes
Ren'Py will no longer report "Leaking texture: 0" warnings, which could be
spurious in some cases.
On the web platform, textures are reloaded when the browser window is resized,
preventing the textures from appearing transparent or black.
Playing a movie on the web platform no longer causes Ren'Py to produce a stream
of warnings.
The gui.SetPreference() action once again rebuilds the styles after the
preference is set.
The config.dissolve_shrinks option, which provides backwards compatibility for
AlphaDissolve transitions and AlphaBlend() displayables with mismatched child
sizes, now works as intended.
Copying translations between games now works correctly. This is especially
important for transferring translations from the launcher to newly-created
games, ensuring new non-English games are set up properly.
Diagnostic print statements that could appear when playing movies on the web
platform have been eliminated.
The pixellate transition now functions as expected.
Features
Ren'Py now scans for templates in subdirectories of the projects directory.
Ren'Py now supports Python's importlib.resources module. This provides a way to
load the resources in a Python package, even if that Python package is stored
in an RPA archive or an Android APK or asset pack.
Other Changes
The lint check for when translation functions are called with the wrong number
of arguments was too slow, to be included in lint, and so this check has been
removed for the time being.
Support for right-to-left languages is now enabled by default.
When loading a Python module or package from disk, Ren'Py will now set the
__file__ attribute to the absolute path of the module or package. This reverts
a change made in Ren'Py 8.4.0, which set the __file__ attribute to the path
relative to the game directory. When loading a module from an RPA archive or
Android APK, this changes to a relative path starting with $game. This change
is meant to help more pure Python packages work with Ren'Py, but we recommend
that you do not rely on the __file__ attribute in your code, and use
importlib.resources instead.
It's now possible to revert the audio volume drop caused by the constant power
panning change in Ren'Py 8.1. (This can also be worked around by adjusting
mixer volumes.)
8.4.0
Requirement and Dependency Changes
Ren'Py now requires Windows 10 or later to run. This means that it will no
longer run on Windows 7, 8, or 8.1.
Ren'Py now targets Ubuntu 20.04. This also means it targets the "soldier"
version of the Steam Linux Runtime.
Ren'Py is no longer built for 32-bit ARM Linux. This drops support for the
Raspberry Pi 3, and very old Chromebooks. Ren'Py is still being built for
32-bit ARM Android. Ren'Py will now prefer the gles2 renderer on ARM Linux
devices, such as the Raspberry Pi.
The Android version of Ren'Py is now being built with 16KB pages, for future
Android devices that will require 16 KB page support.
Python 3.12
Ren'Py now uses Python 3.12 on all platforms. This makes avilable several years
of Python improvements. To finds all of them, please see:
* What's New in Python 3.10
* What's New in Python 3.11
* What's New in Python 3.12
One of the most visible changes caused by this is that Ren'Py will now report
the location of Python errors at sub-line granularity, rather than at line
granularity. In tracebacks, the portions of a line that contribute to an error
will be colored or underlined.
Performance Improvements
Script Loading The internal respresentation of the game script has been changed
to reduce the amount of memory used and to improve loading time, by only
representing data that varies from the default. For a large game where initial
startup is dominated by script loading, this improved the time it takes to load
the script by 50%.
Persistent Data The persistent data format has been changed to use numeric
hashes of visited script locations, rather than the full script location. These
hashes can be saved and loaded much more quickly, which improves game
performance when the persistent data is large.
OpenGL Drawing Ren'Py's OpenGL drawing code has been changed to remove
allocations of matrix objects, and to reduce the amount of math that needs to
be done in many cases. This can improve performance when drawing scenes with
large numbers of drawing operations, as those scenes can be CPU-bound.
Similarly, the OpenGL drawing code has been changed to avoid the repeated
allocation of dictionaries that contain shader variables.
Live2D When rendering Live2D models, Ren'Py will avoid doing unproductive work
to create Renders for layers that are not visible, and masks that are not used.
This can improve performance when using Live2D models with many layers.
Shaders
Ren'Py's GLSL shader support now allows uniforms of types int, bool, ivec2,
ivec3, ivec4, and bvec2, bvec3, bvec4, in addition to the support for float,
vec2, vec3, vec4, mat2, mat3, mat4 and sampler2D that Ren'Py has always had.
Ren'Py's GLSL shader support now allows one-dimensions arrays of uniforms of
scalar and vector types, but not arrays of matrices or samplers.
Ren'Py now can supply separate model to world (u_model), world to camera view
(u_view), and camera view to viewport (u_projection) matrices to shaders. These
matrices are supplied as uniforms. There are also a u_projectionview matrix
that combines u_projection and u_view, and the existing u_transform matrix is
all three. Breaking these out allows OpenGL shaders to support lighting.
Ren'Py's GLSL shader support now supports performing operations on the
underlying data before passing it to a uniform. For example, if u_color is an
RGBA uniform, u_color__premul is that color, premultiplied by its alpha
channel. Other suffixes get the resolution of a texture, and can perform
inverse, transpose, and inverse transpose operations on matrices.
Inside Transforms, Ren'Py now supports uniforms of type sampler2D. These are
textures that are set up to sample textures. These transforms can be supplied a
displayable or a string that becomes a displayable.
GLTF Model Loading
Ren'Py now has a minimal ability to load 3D models defined in the GLTF format,
using the Open Asset Importer library. Models can be loaded using the GLTFModel
displayable.
Right now, the GLTFModel loading only supports loading the mesh and textures of
a model. There's no support for animation or other features of GLTF. What's
more, the default Ren'Py shaders only show the base colors, and a custom shader
is required to handle the other portions of physical-based rendering (PBR) that
GLTF supports.
The current GLTFModel support is is likely useful for people who want to use 3D
backgrounds in their games, but may require a skilled developer to position the
model in 3D space. It's also intended for developers that want to experiment
and contribute insights and development back to Ren'Py. A future release will
include more tools for working with objects in three dimensions.
Optional Mipmaps
Mipmaps are smaller versions of an image that are used when Ren'Py scales an
image down. Using mipmaps prevents the image from becoming jagged when scaled
down, but generating mipmaps takes time and can cause the game to use more
memory.
Ren'Py now leaves the decision of if to create mipmaps to the developer, who
knows if the game will scale down an image. By default, Ren'Py will create
mipmaps for all images it loas. A new mode will only only create mipmaps when
the display is scaled down to less than 75% of the virtual window size. This is
suitable for games that do not scale down images, but for which the window size
may be smaller than the virtual window size.
To enable this new mode, set config.mipmap to "auto".
Mipmaps will automatically be created for images loaded for the purpose of
Live2D or GLTFModel, as these are likely to be scaled down. Mipmaps can be
created for specific images by providing True to the mipmap parameter of Image
().
Libs and Mods
Ren'Py now includes support for two more special directories, game/libs and
game/mods. These directories are intended to receive third-party libraries and
mods, respectively.
When the file game/libs/libs.txt exists, script files inside game/libs have the
first directory removed, if any, and are loaded in unicode order by the path
not including that directory. Similarly, when the file game/mods/mods.txt
exists, script files inside it are loaded in unicode order by the path, not
including that directory.
Note that load order is relatively unimportant in Ren'Py - it's mostly used
with Creator-Defined Statements. Init priorities levels have been changed to
recommend that games use init priorities of -99 to 99, and libraries and mods
use from -999 to -100 and 100 to 999.
When present, the libs and mods directories are showing in the launcher. The
libs directory is created automatically when the game is created. The mods
directory can be created manually if a creator wants to support mods.
The goal of this change is to make it easier to distribute third-party
libraries and mods. Instead of needing to be merged with the player's script, a
library can be placed under game/libs, and will provide full functionality
there.
.rpe and .rpe.py files are also searched in the libs directory.
Layered Images
The variant and prefix properties, which accepted any value but evaluated it
(as a string) only at init time, now accept an unquoted image name component
(digits, letters and underscores, no space or dash, may start with a digit).
In places where the syntax allowed the at keyword, it now allows an at
transform: block.
In places where a displayable is expected, it is now possible to use an image:
block, and to define an ATL image, like an anonymous Image Statement with ATL
Block.
The new when property introduces a more straightforward boolean condition
syntax, replacing the if_any, if_all and if_not properties which remain
supported for backwards compatibility. The new syntax removes the need for
lists and quoting. To convert to the new syntax, you can replace:
if_any ["a", "b"]
if_all ["c", "d"]
if_not ["e", "f"]
with the more concise:
when (a or b) and c and d and not (e or f).
The multiple groups may now be anonymous, and should from now on be defined
with the multiple keyword placed in lieu of the group name. This makes their
behavior more consistent and easier to understand. The behavior of named
multiple groups is unchanged, but they should not be used going forward.
The attribute statement now takes the variant property, unless it is inside a
group with a variant, or it is directly assigned a displayable. This allows
native support for cases which previously required a multiple group with a
variant, or an attribute_function manipulation.
Automatic Oversampling
Ren'Py will now automatically look for oversampled version of images, and use
those if the game is scaled up.
As an example, take loading "eileen happy.png". When the game is scaled to more
than 100% of it's virtual size, when loading "eileen happy.png", Ren'Py will
also look for "eileen happy%2.png@localhost", and load that if it exists. When scaled to
more than 200%, it will look for "eileen happy%4.png@localhost", "eileen happy%3.png@localhost",
and "eileen happy%2.png@localhost". If none of these exist, it will use "eileen
happy.png".
Ren'Py also supports oversampling and automatic oversampling for movies played
using Movie and renpy.movie_cutscene(). This works similarly to images, with
respect to filenames.
Accessibility
The shift+A accessibility menu has been redesigned. It's now smaller, so that
the bottom of the game (usually including dialogue) is visible, allowing the
effects of the menu to be seen more immediately. It also has been broken up
into multiple pages, to allow for new options to be added.
Ren'Py can now force audio to mono, allowing sounds contain information on only
the left or right channel to become audible on both. This can be enabled
through the shift+A accessibility menu, the "force mono" Preference(), or the
preferences.force_mono variable.
Ren'Py now includes a preference to allow the user to adjust font kerning. This
is exposed through the accessibility menu, the "font kerning" Preference(), and
the preferences.font_kerning variable.
Launcher
The launcher now supports games being placed into folders, which can be
collapsed and expanded. To put a game in a folder, create a directory
underneath the projects directory, and move the game into that directory.
The launcher's "Console output" option now works on the Macintosh platform.
Building an update will now produce a public_key.pem file, containing key
material that can be shared with the world. When building a downloader game,
this file should be copied to the base directory of the downloader game. This
is the public key that will be used to verify the download.
When creating a new game, Ren'Py will now include a .gitignore file that
contains a default set of files to ignore.
It's possible to customize the Ren'Py launcher to select the files and
directories that are available to click on.
Text
Ren'Py now supports OpenType font layout features, which can control things
like ligaturization and other settings. These features are controlled by the
font_features style property, and the features text tag.
A problem with mark positions on ligatures has been fixed. This mainly affected
Arabic, but applies to all text. Note that this fix is only available when
using the Harfbuzz shaper.
The reading_order style property has been added so that a preference for the
directionality of text may be expressed when config.rtl is True. Setting it to
"wrtl" (weak right-to-left) will cause directionally neutral lines to be
displayed right-to-left (previously they would always be displayed
left-to-right). This is mostly to support punctuation-only dialogue lines in
RTL language games and translations.
Finally, a regression in how bidirectional text embedding was handled when
using the Harfbuzz text shaper introduced in 8.3.7 has been fixed. Text
containing runs of both LTR and RTL characters will now render with the correct
directionality for the individual runs again.
Traceback Saves
If possible, Ren'Py now creates saves when an uncaught exception occurs,
containing both the game state and the traceback. These saves are stored in
slots with the name _tracesave-1 to _tracesave-10. and have the traceback
accessible through the json metadata.
The new renpy.get_save_data() function allows you to retrieve the data for a
particular save slot, without loading the save. This can be used with a
traceback save to retrieve the game data without loading into an error state.
Features
The nearest transform property now works as documented, allowing nearest
neighbor texture interpolation to be disabled when set to False.
The new HasSideImage() function returns the presence or absence of a side image
before the side image itself is determined, making it useable in the say screen
for layout.
The new config.web_unload_music variable controls whether music is unloaded
when downloaded as part of progressive downloading.
The new config.clear_history_on_language_change variable controls whether
history is cleared when the language is changed.
MixerValue() now suports the step and force_step parameters.
The lint report can be configured to expand character aliases to names by
setting config.lint_show_names to True.
config.voice_callbacks allows you to define callbacks that are called when
voice lines are played or stop.
Grids now support right_to_left and bottom_to_top properties, which control the
order in which the grid is filled.
Character's ctc_position argument now takes a new value screen-variable. This
places the click-to-continue indicator in a screen variable, which allows it to
be positioned inside the screen. This is intended for use with speech bubbles,
to allow the click-to-continue indicator to be positioned inside the speech
bubble.
The new renpy.lex_string() function makes it possible to create a Lexer for an
arbitrary string.
The SpriteManager and SnowBlossom() displayables now support the animation
parameter, which can be used to prevent resetting when the displayable is
reshown.
The SnowBlossom() displayable now supports the distribution parameter, which
controls the distribution of how the particles are created, allowing the
particles to be created in the center or sides of the screen.
The Gallery class now supports separate transitions when entering a sequence of
images, going between images, and exiting the sequence of images.
Screens now support python-style docstrings, which are used when a string is
included as the first line of the block. Ren'Py does not do anything directly
with dosctrings, but the raw string can be accessed using
renpy.get_screen_docstring().
The Confirm action and renpy.confirm() function now pass additional keyword
arguments (not beginning with _) to the confirm screen.
The screen language use statement now takes an as clause, which can be used to
capture a variable named main from the screen. This is intended to be used like
the as clause of screen language displayables, which captures the displayable
into a variable.
Custom screen language statement also support the as clause.
The reset transform now resets all properties of a Transform.
Transform now takes a reset property, which controls whether the transform is
reset when it is used, as opposed to being given properties by other transforms
that share a tag.
The new renpy.seen_translation(), renpy.mark_translation_seen(), and
renpy.mark_translation_unseen() functions make it possible to determine if a
translation has been seen.
Audio filesname can now include a volume clase, like "<volume 0.5>
sunflower-slow-drag.ogg". This sets the relative amplitude of the track,
similar to the volume clause of the play and queue statements.
The new config.keep_screenshot_entering_menu variable determines if a
screenshot taken with FileTakeScreenshot is kept when entering a menu context.
The thumb_offset style property now can take a tuple giving different offsets
for the two sides of a bar. The new thumb_align style property controls how a
thumb is aligned with the bar.
The input displayable now takes an arrowkeys property, which controls whether
the arrow keys can be used to move the cursor in the input, or are used to move
the focus between displayables.
The config.translate_additional_strings_callbacks callbacks make it possible
for a game to offer additional to be added to translation files. (For example,
strings from third-party libraries or data files.)
The ___() (triple underscore) function makes it possible translate a string,
and then apply text interpolation to the result. Interpolations occur in the
scope of that the function is called from. The triple underscore function also
marks the string contained inside for translation.
The config.persistent_callback callback makes it possible to update persistent
data when it is loaded. Starting from this release persistent._version will
also be set to the current version of the game in any newly created persistent
data. This can be used with the callback to migrate persistent save data.
Changes
The renpy.get_renderer_info() function now returns a dictionary containing
information about user's GPU and graphics driver, when available.
Lint now reports when the translation functions (_(), __(), ___(), and _p())
are called with the wrong number of arguments.
When Ren'Py loads a Python module from the game/ directory, __file__ is set to
the relative path of the module.
Ren'Py now support showing the same Live2D displayable on multiple layers, with
multiple tags, or both.
Transform now has an attribute, original_child, that gives the child of the
transform before the function was called.
The behavior of mesh_pad has been changed when left or top padding is present.
Previously, this would offset the child by the padding amount. Now, the child
remains in the same place, with the padding added to the left and top of the
child.
>From the Python typing module, the names Callable, Any, Self, Literal, cast,
overload, final, and override are imported into namespaces. These become
reserved names in Ren'Py, and should not be used as names in newly-developed
projects.
A regression that kept "Add From to Calls" from working has been fixed.
On the web platform, Ren'Py will now preload automatic voice lines, ensuring
the files can play immediately, even if not fully cached on the player's
device.
Text inputs (renpy.input() and the input displayable) disable non-required text
ligatures, so that ligaturization doesn't change when the caret moves.
Ren'Py will disable the screensaver (and hence, the system going to sleep) when
auto-forward mode is active.
A creator-defined statement that defines a label will now call
config.label_callbacks when run.
The "Click to play the video." screen used on some web platforms is now
translatable.
CTC indicators inside retained speech bubbles will now be cleared when the
player clicks past the dialogue.
In some circumstances, Ren'Py will reuse tuples containing immutable values
(float, int, bool, complex, str, bytes, and other immutable tuples), which can
reduce memory usage and improve performance. This may lead to these immutable
tuples having the same object identity when previously they would not have.
By default, Ren'Py now only creates mipmaps for textures if the display is
scaled down to less than .75 of virtual window size. This is suitable for games
that do not scale down images. To enable mipmapping again, set config.mipmap to
True.
Ren'Py no longer triggers and autoreload when a file that had not existed comes
into existence. This behavior had been inconsistent, working in some places but
not others, required Ren'Py to spent time scanning for files that do not exist.
Ren'Py now considers a dialogue statement to have been seen if a statement with
the same translation identifier has been seen.
For size reasons, the lists of seen dialogue and translations now store a
64-bit integer hash of the statement name or translation id.
The show expression statement has changed so that show expression "bg
washington" is equivalent to show bg washington. Previously, the expression
would be used as a tag, which would rarely be correct. If a displayable is
given instead of a string, a tag will be generated.
One the web platform, renpy.emscripten is the emscripten module, making it
available without needing to import it. You should still check that
renpy.emscripten is true before using it.
When config.nearest_neighbor is true, image fonts are scaled using nearest
neighbor scaling, rather than the default bilinear scaling.
The "Image Attributes" screen also indicates if transforms are applied to a
layer, as it can be hard to determine otherwise.
Ren'Py now also searches for .rpe and .rpe.py files in the new libs directory.
renpy.get_renderer_info() now also include GPU vendor and device name as well
as driver version.
To generate a diff of this commit:
cvs rdiff -u -r1.47 -r1.48 pkgsrc/games/py-renpy/Makefile
cvs rdiff -u -r1.10 -r1.11 pkgsrc/games/py-renpy/PLIST
cvs rdiff -u -r1.9 -r1.10 pkgsrc/games/py-renpy/distinfo
cvs rdiff -u -r1.1 -r0 \
pkgsrc/games/py-renpy/patches/patch-launcher_game_gui7_code.py \
pkgsrc/games/py-renpy/patches/patch-module_tinyfiledialogs_tinyfiledialogs.c \
pkgsrc/games/py-renpy/patches/patch-renpy_gl_glenviron__shader.pyx
cvs rdiff -u -r1.2 -r0 \
pkgsrc/games/py-renpy/patches/patch-module_renpybidicore.c
cvs rdiff -u -r1.5 -r0 pkgsrc/games/py-renpy/patches/patch-module_setup.py
cvs rdiff -u -r0 -r1.1 \
pkgsrc/games/py-renpy/patches/patch-src_renpybidicore.c \
pkgsrc/games/py-renpy/patches/patch-src_tinyfiledialogs_tinyfiledialogs.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/games/py-renpy/Makefile
diff -u pkgsrc/games/py-renpy/Makefile:1.47 pkgsrc/games/py-renpy/Makefile:1.48
--- pkgsrc/games/py-renpy/Makefile:1.47 Mon Jul 13 04:35:56 2026
+++ pkgsrc/games/py-renpy/Makefile Thu Jul 23 14:03:50 2026
@@ -1,8 +1,7 @@
-# $NetBSD: Makefile,v 1.47 2026/07/13 04:35:56 wiz Exp $
+# $NetBSD: Makefile,v 1.48 2026/07/23 14:03:50 ryoon Exp $
-DISTNAME= renpy-8.3.7-source
+DISTNAME= renpy-8.5.3-source
PKGNAME= ${PYPKGPREFIX}-${DISTNAME:S/-source//}
-PKGREVISION= 3
CATEGORIES= games
MASTER_SITES= https://www.renpy.org/dl/${PKGVERSION_NOREV}/
EXTRACT_SUFX= .tar.bz2
@@ -12,9 +11,9 @@ HOMEPAGE= https://www.renpy.org/
COMMENT= Visual Novel Engine written in Python
LICENSE= mit
-PYTHON_VERSIONS_INCOMPATIBLE= 310 311 314
+PYTHON_VERSIONS_INCOMPATIBLE= 310
-USE_LANGUAGES+= gnu99
+USE_LANGUAGES+= gnu99 c++
DEPENDS+= ${PYPKGPREFIX}-future>=1.0.0:../../devel/py-future
DEPENDS+= ${PYPKGPREFIX}-six-[0-9]*:../../lang/py-six
@@ -29,17 +28,12 @@ DEPENDS+= ${PYPKGPREFIX}-legacy-cgi-[0-9
.endif
USE_TOOLS+= pax
-PYSETUPSUBDIR= module
EGG_NAME= Ren_Py-${PKGVERSION_NOREV}.23091805
-PLIST_SUBST+= PYTHON_VERSION=${PYTHON_VERSION}
+PYSETUPBUILDTARGET= build_ext --inplace
-RENPY_DEPS_INSTALL+= ${BUILDLINK_PREFIX.SDL2}
-RENPY_DEPS_INSTALL+= ${BUILDLINK_PREFIX.freetype2}
-RENPY_DEPS_INSTALL+= ${BUILDLINK_PREFIX.zlib}
-RENPY_DEPS_INSTALL+= ${BUILDLINK_PREFIX.ffmpeg6}/${BUILDLINK_LIBDIRS.ffmpeg6}
+PLIST_SUBST+= PYTHON_VERSION=${PYTHON_VERSION}
-MAKE_ENV+= RENPY_DEPS_INSTALL=${RENPY_DEPS_INSTALL:ts;:S,;,::,g:Q}
MAKE_ENV+= RENPY_CYTHON=cython-${PYVERSSUFFIX}
INSTALLATION_DIRS= bin ${RENPY_DIR}
@@ -49,7 +43,7 @@ REPLACE_PYTHON= renpy.py launcher/game/
RENPY_DIR= share/renpy
UNAME_M!= uname -m
-RPYC_DIRS= . the_question tutorial
+RPYC_DIRS= the_question tutorial launcher
pre-configure:
cd ${WRKSRC} && find . -name '*.py[co]' -print -delete
@@ -58,12 +52,13 @@ post-install:
# For runtime permission denied errors.
.for m in ${RPYC_DIRS}
cd ${WRKSRC} && \
- PYTHONPATH=module/build/lib.${LOWER_OPSYS}-${OS_VERSION}-${UNAME_M}-cpython-${PYPKGPREFIX:S/^py//} \
+ PYTHONPATH=build/lib.${LOWER_OPSYS}-${OS_VERSION}-${UNAME_M}-cpython-${PYTHON_VERSION} \
${PYTHONBIN} ./renpy.py ${m} compile
.endfor
- cd ${WRKSRC}; ${FIND} doc gui launcher renpy sdk-fonts the_question \
- tutorial \
- -type f \! -name '*.orig' -print | \
+ cd ${WRKSRC}; \
+ ${FIND} doc gui launcher renpy sdk-fonts the_question \
+ tutorial \
+ -type f \! -name '*.orig' -print | \
pax -rw ${DESTDIR}${PREFIX}/${RENPY_DIR}
${INSTALL_SCRIPT} ${WRKSRC}/renpy.py ${DESTDIR}${PREFIX}/${RENPY_DIR}
cd ${DESTDIR}${PREFIX}/bin && \
@@ -72,12 +67,19 @@ post-install:
${CHMOD} 755 renpy
.include "../../converters/fribidi/buildlink3.mk"
+.include "../../devel/SDL2/buildlink3.mk"
.include "../../devel/py-cython/buildlink3.mk"
-.include "../../devel/py-game_sdl2/buildlink3.mk"
+# The following is not essential and not recommended.
+#.include "../../devel/py-game_sdl2/buildlink3.mk"
.include "../../devel/zlib/buildlink3.mk"
+.include "../../fonts/harfbuzz/buildlink3.mk"
+.include "../../graphics/SDL2_gfx/buildlink3.mk"
+.include "../../graphics/SDL2_image/buildlink3.mk"
.include "../../graphics/glew/buildlink3.mk"
+.include "../../mk/jpeg.buildlink3.mk"
.include "../../graphics/png/buildlink3.mk"
.include "../../lang/python/application.mk"
.include "../../lang/python/egg.mk"
-.include "../../multimedia/ffmpeg6/buildlink3.mk"
+.include "../../multimedia/assimp/buildlink3.mk"
+.include "../../multimedia/ffmpeg8/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"
Index: pkgsrc/games/py-renpy/PLIST
diff -u pkgsrc/games/py-renpy/PLIST:1.10 pkgsrc/games/py-renpy/PLIST:1.11
--- pkgsrc/games/py-renpy/PLIST:1.10 Thu Jun 12 06:47:04 2025
+++ pkgsrc/games/py-renpy/PLIST Thu Jul 23 14:03:50 2026
@@ -1,25 +1,21 @@
-@comment $NetBSD: PLIST,v 1.10 2025/06/12 06:47:04 wiz Exp $
+@comment $NetBSD: PLIST,v 1.11 2026/07/23 14:03:50 ryoon Exp $
bin/renpy
-${PYSITELIB}/Ren_Py-${PKGVERSION}.25031702-py${PYVERSSUFFIX}.egg-info/PKG-INFO
-${PYSITELIB}/Ren_Py-${PKGVERSION}.25031702-py${PYVERSSUFFIX}.egg-info/SOURCES.txt
-${PYSITELIB}/Ren_Py-${PKGVERSION}.25031702-py${PYVERSSUFFIX}.egg-info/dependency_links.txt
-${PYSITELIB}/Ren_Py-${PKGVERSION}.25031702-py${PYVERSSUFFIX}.egg-info/not-zip-safe
-${PYSITELIB}/Ren_Py-${PKGVERSION}.25031702-py${PYVERSSUFFIX}.egg-info/top_level.txt
${PYSITELIB}/_renpy.so
-${PYSITELIB}/_renpybidi.so
-${PYSITELIB}/_renpytfd.so
+${PYSITELIB}/renpy-8.99.99-py${PYVERSSUFFIX}.egg-info/PKG-INFO
+${PYSITELIB}/renpy-8.99.99-py${PYVERSSUFFIX}.egg-info/SOURCES.txt
+${PYSITELIB}/renpy-8.99.99-py${PYVERSSUFFIX}.egg-info/dependency_links.txt
+${PYSITELIB}/renpy-8.99.99-py${PYVERSSUFFIX}.egg-info/not-zip-safe
+${PYSITELIB}/renpy-8.99.99-py${PYVERSSUFFIX}.egg-info/top_level.txt
+${PYSITELIB}/renpy/astsupport.so
${PYSITELIB}/renpy/audio/filter.so
${PYSITELIB}/renpy/audio/renpysound.so
+${PYSITELIB}/renpy/cslots.so
${PYSITELIB}/renpy/display/accelerator.so
${PYSITELIB}/renpy/display/matrix.so
${PYSITELIB}/renpy/display/quaternion.so
${PYSITELIB}/renpy/display/render.so
${PYSITELIB}/renpy/encryption.so
-${PYSITELIB}/renpy/gl/gldraw.so
-${PYSITELIB}/renpy/gl/glenviron_shader.so
-${PYSITELIB}/renpy/gl/glrtt_copy.so
-${PYSITELIB}/renpy/gl/glrtt_fbo.so
-${PYSITELIB}/renpy/gl/gltexture.so
+${PYSITELIB}/renpy/gl2/assimp.so
${PYSITELIB}/renpy/gl2/gl2draw.so
${PYSITELIB}/renpy/gl2/gl2mesh.so
${PYSITELIB}/renpy/gl2/gl2mesh2.so
@@ -28,8 +24,28 @@ ${PYSITELIB}/renpy/gl2/gl2model.so
${PYSITELIB}/renpy/gl2/gl2polygon.so
${PYSITELIB}/renpy/gl2/gl2shader.so
${PYSITELIB}/renpy/gl2/gl2texture.so
+${PYSITELIB}/renpy/gl2/gl2uniform.so
${PYSITELIB}/renpy/lexersupport.so
${PYSITELIB}/renpy/pydict.so
+${PYSITELIB}/renpy/pygame/color.so
+${PYSITELIB}/renpy/pygame/controller.so
+${PYSITELIB}/renpy/pygame/display.so
+${PYSITELIB}/renpy/pygame/draw.so
+${PYSITELIB}/renpy/pygame/error.so
+${PYSITELIB}/renpy/pygame/event.so
+${PYSITELIB}/renpy/pygame/gfxdraw.so
+${PYSITELIB}/renpy/pygame/image.so
+${PYSITELIB}/renpy/pygame/joystick.so
+${PYSITELIB}/renpy/pygame/key.so
+${PYSITELIB}/renpy/pygame/locals.so
+${PYSITELIB}/renpy/pygame/mouse.so
+${PYSITELIB}/renpy/pygame/power.so
+${PYSITELIB}/renpy/pygame/pygame_time.so
+${PYSITELIB}/renpy/pygame/rect.so
+${PYSITELIB}/renpy/pygame/rwobject.so
+${PYSITELIB}/renpy/pygame/scrap.so
+${PYSITELIB}/renpy/pygame/surface.so
+${PYSITELIB}/renpy/pygame/transform.so
${PYSITELIB}/renpy/style.so
${PYSITELIB}/renpy/styledata/style_activate_functions.so
${PYSITELIB}/renpy/styledata/style_functions.so
@@ -43,10 +59,12 @@ ${PYSITELIB}/renpy/styledata/style_selec
${PYSITELIB}/renpy/styledata/style_selected_insensitive_functions.so
${PYSITELIB}/renpy/styledata/styleclass.so
${PYSITELIB}/renpy/styledata/stylesets.so
+${PYSITELIB}/renpy/text/bidi.so
${PYSITELIB}/renpy/text/ftfont.so
${PYSITELIB}/renpy/text/hbfont.so
${PYSITELIB}/renpy/text/textsupport.so
${PYSITELIB}/renpy/text/texwrap.so
+${PYSITELIB}/renpy/tfd.so
${PYSITELIB}/renpy/uguu/gl.so
${PYSITELIB}/renpy/uguu/uguu.so
share/renpy/doc/3dstage.html
@@ -58,8 +76,10 @@ share/renpy/doc/_images/borders1.png
share/renpy/doc/_images/borders2.png
share/renpy/doc/_images/borders3.png
share/renpy/doc/_images/frame_example.png
+share/renpy/doc/_images/testcases_the_question.png
share/renpy/doc/_static/_sphinx_javascript_frameworks_compat.js
share/renpy/doc/_static/ajax-loader.gif
+share/renpy/doc/_static/base-stemmer.js
share/renpy/doc/_static/basic.css
share/renpy/doc/_static/bootstrap-2.3.2/css/bootstrap-responsive.css
share/renpy/doc/_static/bootstrap-2.3.2/css/bootstrap-responsive.min.css
@@ -194,8 +214,33 @@ share/renpy/doc/_static/doctools.js
share/renpy/doc/_static/documentation_options.js
share/renpy/doc/_static/down-pressed.png
share/renpy/doc/_static/down.png
+share/renpy/doc/_static/english-stemmer.js
share/renpy/doc/_static/environment.txt
share/renpy/doc/_static/file.png
+share/renpy/doc/_static/fonts/Lato/lato-bold.eot
+share/renpy/doc/_static/fonts/Lato/lato-bold.ttf
+share/renpy/doc/_static/fonts/Lato/lato-bold.woff
+share/renpy/doc/_static/fonts/Lato/lato-bold.woff2
+share/renpy/doc/_static/fonts/Lato/lato-bolditalic.eot
+share/renpy/doc/_static/fonts/Lato/lato-bolditalic.ttf
+share/renpy/doc/_static/fonts/Lato/lato-bolditalic.woff
+share/renpy/doc/_static/fonts/Lato/lato-bolditalic.woff2
+share/renpy/doc/_static/fonts/Lato/lato-italic.eot
+share/renpy/doc/_static/fonts/Lato/lato-italic.ttf
+share/renpy/doc/_static/fonts/Lato/lato-italic.woff
+share/renpy/doc/_static/fonts/Lato/lato-italic.woff2
+share/renpy/doc/_static/fonts/Lato/lato-regular.eot
+share/renpy/doc/_static/fonts/Lato/lato-regular.ttf
+share/renpy/doc/_static/fonts/Lato/lato-regular.woff
+share/renpy/doc/_static/fonts/Lato/lato-regular.woff2
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff
+share/renpy/doc/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2
share/renpy/doc/_static/jquery-1.11.1.js
share/renpy/doc/_static/jquery-3.1.0.js
share/renpy/doc/_static/jquery-3.2.1.js
@@ -209,6 +254,7 @@ share/renpy/doc/_static/js/jquery-1.11.0
share/renpy/doc/_static/js/jquery-1.12.4.min.js
share/renpy/doc/_static/js/jquery-fix.js
share/renpy/doc/_static/js/theme.js
+share/renpy/doc/_static/js/versions.js
share/renpy/doc/_static/language_data.js
share/renpy/doc/_static/minus.png
share/renpy/doc/_static/navbar-logo.png
@@ -217,6 +263,8 @@ share/renpy/doc/_static/pygments.css
share/renpy/doc/_static/renpydoc.css
share/renpy/doc/_static/searchtools.js
share/renpy/doc/_static/sphinx_highlight.js
+share/renpy/doc/_static/tabs.css
+share/renpy/doc/_static/tabs.js
share/renpy/doc/_static/underscore-1.13.1.js
share/renpy/doc/_static/underscore-1.3.1.js
share/renpy/doc/_static/underscore.js
@@ -294,7 +342,6 @@ share/renpy/doc/py-function-class-index.
share/renpy/doc/python.html
share/renpy/doc/quickstart.html
share/renpy/doc/raspi.html
-share/renpy/doc/raspy.html
share/renpy/doc/ren_py.html
share/renpy/doc/reserved.html
share/renpy/doc/rooms.html
@@ -323,6 +370,7 @@ share/renpy/doc/store_variables.html
share/renpy/doc/style.html
share/renpy/doc/style_properties.html
share/renpy/doc/template_projects.html
+share/renpy/doc/testcases.html
share/renpy/doc/text.html
share/renpy/doc/textshaders.html
share/renpy/doc/thequestion.html
@@ -341,14 +389,17 @@ share/renpy/gui/game/gui.rpy
share/renpy/gui/game/gui/bubble.png
share/renpy/gui/game/gui/thoughtbubble.png
share/renpy/gui/game/guisupport.rpy
+share/renpy/gui/game/libs/libs.txt
share/renpy/gui/game/options.rpy
share/renpy/gui/game/screens.rpy
share/renpy/gui/game/script.rpy
share/renpy/gui/game/testcases.rpy
+share/renpy/gui/gitignore.txt
share/renpy/gui/project.json
share/renpy/launcher/Atom.edit.py
share/renpy/launcher/None.edit.py
share/renpy/launcher/System Editor.edit.py
+share/renpy/launcher/VSCodium (System).edit.py
share/renpy/launcher/Visual Studio Code (System).edit.py
share/renpy/launcher/Visual Studio Code.edit.py
share/renpy/launcher/game/ability.rpy
@@ -363,7 +414,7 @@ share/renpy/launcher/game/androidstrings
share/renpy/launcher/game/androidstrings.rpyc
share/renpy/launcher/game/archiver.rpy
share/renpy/launcher/game/archiver.rpyc
-share/renpy/launcher/game/cache/bytecode-${PYTHON_VERSION}.rpyb
+share/renpy/launcher/game/cache/bytecode-314.rpyb
share/renpy/launcher/game/cache/py3analysis.rpyb
share/renpy/launcher/game/cache/screens.rpyb
share/renpy/launcher/game/change_icon.py
@@ -396,6 +447,7 @@ share/renpy/launcher/game/gui7/icon.png
share/renpy/launcher/game/gui7/images.py
share/renpy/launcher/game/gui7/parameters.py
share/renpy/launcher/game/images/background.png
+share/renpy/launcher/game/images/folder.svg
share/renpy/launcher/game/images/logo.png
share/renpy/launcher/game/images/logo32.png
share/renpy/launcher/game/images/pattern.png
@@ -639,6 +691,25 @@ share/renpy/launcher/game/tl/malay/scree
share/renpy/launcher/game/tl/malay/script.rpym
share/renpy/launcher/game/tl/malay/style.rpy
share/renpy/launcher/game/tl/malay/style.rpyc
+share/renpy/launcher/game/tl/persian/common.rpy
+share/renpy/launcher/game/tl/persian/common.rpyc
+share/renpy/launcher/game/tl/persian/developer.rpy
+share/renpy/launcher/game/tl/persian/developer.rpyc
+share/renpy/launcher/game/tl/persian/error.rpy
+share/renpy/launcher/game/tl/persian/error.rpyc
+share/renpy/launcher/game/tl/persian/gui.rpy
+share/renpy/launcher/game/tl/persian/gui.rpyc
+share/renpy/launcher/game/tl/persian/launcher.rpy
+share/renpy/launcher/game/tl/persian/launcher.rpyc
+share/renpy/launcher/game/tl/persian/obsolete.rpy
+share/renpy/launcher/game/tl/persian/obsolete.rpyc
+share/renpy/launcher/game/tl/persian/options.rpy
+share/renpy/launcher/game/tl/persian/options.rpyc
+share/renpy/launcher/game/tl/persian/screens.rpy
+share/renpy/launcher/game/tl/persian/screens.rpyc
+share/renpy/launcher/game/tl/persian/script.rpym
+share/renpy/launcher/game/tl/persian/style.rpy
+share/renpy/launcher/game/tl/persian/style.rpyc
share/renpy/launcher/game/tl/piglatin/common.rpy
share/renpy/launcher/game/tl/piglatin/common.rpyc
share/renpy/launcher/game/tl/piglatin/developer.rpy
@@ -814,6 +885,8 @@ share/renpy/launcher/game/tl/ukrainian/g
share/renpy/launcher/game/tl/ukrainian/gui.rpyc
share/renpy/launcher/game/tl/ukrainian/launcher.rpy
share/renpy/launcher/game/tl/ukrainian/launcher.rpyc
+share/renpy/launcher/game/tl/ukrainian/obsolete.rpy
+share/renpy/launcher/game/tl/ukrainian/obsolete.rpyc
share/renpy/launcher/game/tl/ukrainian/options.rpy
share/renpy/launcher/game/tl/ukrainian/options.rpyc
share/renpy/launcher/game/tl/ukrainian/screens.rpy
@@ -845,6 +918,7 @@ share/renpy/launcher/game/web.rpy
share/renpy/launcher/game/web.rpyc
share/renpy/launcher/game/webserver.py
share/renpy/launcher/icon.icns
+share/renpy/launcher/log.txt
share/renpy/launcher/project.json
share/renpy/launcher/skin/skin.rpy
share/renpy/launcher/skin/skin_background.jpg
@@ -857,6 +931,9 @@ share/renpy/renpy/arguments.py
share/renpy/renpy/arguments.pyc
share/renpy/renpy/ast.py
share/renpy/renpy/ast.pyc
+share/renpy/renpy/astsupport.pyi
+share/renpy/renpy/astsupport.pyx
+share/renpy/renpy/astsupport.so
share/renpy/renpy/atl.py
share/renpy/renpy/atl.pyc
share/renpy/renpy/audio/__init__.py
@@ -864,10 +941,14 @@ share/renpy/renpy/audio/__init__.pyc
share/renpy/renpy/audio/audio.py
share/renpy/renpy/audio/audio.pyc
share/renpy/renpy/audio/filter.pxd
+share/renpy/renpy/audio/filter.pyi
share/renpy/renpy/audio/filter.pyx
+share/renpy/renpy/audio/filter.so
share/renpy/renpy/audio/music.py
share/renpy/renpy/audio/music.pyc
+share/renpy/renpy/audio/renpysound.pyi
share/renpy/renpy/audio/renpysound.pyx
+share/renpy/renpy/audio/renpysound.so
share/renpy/renpy/audio/sound.py
share/renpy/renpy/audio/sound.pyc
share/renpy/renpy/audio/webaudio.py
@@ -941,8 +1022,8 @@ share/renpy/renpy/common/00inputvalues.r
share/renpy/renpy/common/00inputvalues.rpyc
share/renpy/renpy/common/00keymap.rpy
share/renpy/renpy/common/00keymap.rpyc
-share/renpy/renpy/common/00layeredimage.rpy
share/renpy/renpy/common/00layeredimage.rpyc
+share/renpy/renpy/common/00layeredimage_ren.py
share/renpy/renpy/common/00layout.rpy
share/renpy/renpy/common/00layout.rpyc
share/renpy/renpy/common/00library.rpy
@@ -1230,13 +1311,15 @@ share/renpy/renpy/common/gamecontrollerd
share/renpy/renpy/common/squarestile.png
share/renpy/renpy/compat/__init__.py
share/renpy/renpy/compat/__init__.pyc
-share/renpy/renpy/compat/dictviews.pyx
share/renpy/renpy/compat/fixes.py
share/renpy/renpy/compat/fixes.pyc
share/renpy/renpy/compat/pickle.py
share/renpy/renpy/compat/pickle.pyc
share/renpy/renpy/config.py
share/renpy/renpy/config.pyc
+share/renpy/renpy/cslots.pyi
+share/renpy/renpy/cslots.pyx
+share/renpy/renpy/cslots.so
share/renpy/renpy/curry.py
share/renpy/renpy/curry.pyc
share/renpy/renpy/debug.py
@@ -1245,7 +1328,9 @@ share/renpy/renpy/defaultstore.py
share/renpy/renpy/defaultstore.pyc
share/renpy/renpy/display/__init__.py
share/renpy/renpy/display/__init__.pyc
+share/renpy/renpy/display/accelerator.pyi
share/renpy/renpy/display/accelerator.pyx
+share/renpy/renpy/display/accelerator.so
share/renpy/renpy/display/anim.py
share/renpy/renpy/display/anim.pyc
share/renpy/renpy/display/behavior.py
@@ -1279,7 +1364,9 @@ share/renpy/renpy/display/joystick.pyc
share/renpy/renpy/display/layout.py
share/renpy/renpy/display/layout.pyc
share/renpy/renpy/display/matrix.pxd
+share/renpy/renpy/display/matrix.pyi
share/renpy/renpy/display/matrix.pyx
+share/renpy/renpy/display/matrix.so
share/renpy/renpy/display/matrix_functions.pxi
share/renpy/renpy/display/minigame.py
share/renpy/renpy/display/minigame.pyc
@@ -1295,13 +1382,19 @@ share/renpy/renpy/display/particle.py
share/renpy/renpy/display/particle.pyc
share/renpy/renpy/display/pgrender.py
share/renpy/renpy/display/pgrender.pyc
+share/renpy/renpy/display/position.py
+share/renpy/renpy/display/position.pyc
share/renpy/renpy/display/predict.py
share/renpy/renpy/display/predict.pyc
share/renpy/renpy/display/presplash.py
share/renpy/renpy/display/presplash.pyc
+share/renpy/renpy/display/quaternion.pyi
share/renpy/renpy/display/quaternion.pyx
+share/renpy/renpy/display/quaternion.so
share/renpy/renpy/display/render.pxd
+share/renpy/renpy/display/render.pyi
share/renpy/renpy/display/render.pyx
+share/renpy/renpy/display/render.so
share/renpy/renpy/display/scale.py
share/renpy/renpy/display/scale.pyc
share/renpy/renpy/display/scenelists.py
@@ -1326,7 +1419,9 @@ share/renpy/renpy/easy.py
share/renpy/renpy/easy.pyc
share/renpy/renpy/editor.py
share/renpy/renpy/editor.pyc
+share/renpy/renpy/encryption.pyi
share/renpy/renpy/encryption.pyx
+share/renpy/renpy/encryption.so
share/renpy/renpy/error.py
share/renpy/renpy/error.pyc
share/renpy/renpy/execution.py
@@ -1371,48 +1466,66 @@ share/renpy/renpy/exports/statementexpor
share/renpy/renpy/exports/statementexports.pyc
share/renpy/renpy/game.py
share/renpy/renpy/game.pyc
-share/renpy/renpy/gl/__init__.py
-share/renpy/renpy/gl/__init__.pyc
-share/renpy/renpy/gl/gldraw.pxd
-share/renpy/renpy/gl/gldraw.pyx
-share/renpy/renpy/gl/glenviron_shader.pyx
-share/renpy/renpy/gl/glfunctions.py
-share/renpy/renpy/gl/glrtt_copy.pyx
-share/renpy/renpy/gl/glrtt_fbo.pyx
-share/renpy/renpy/gl/gltexture.pxd
-share/renpy/renpy/gl/gltexture.pyx
share/renpy/renpy/gl2/__init__.py
share/renpy/renpy/gl2/__init__.pyc
+share/renpy/renpy/gl2/assimp.pyi
+share/renpy/renpy/gl2/assimp.pyx
+share/renpy/renpy/gl2/assimp.so
share/renpy/renpy/gl2/gl2debug.py
share/renpy/renpy/gl2/gl2draw.pxd
+share/renpy/renpy/gl2/gl2draw.pyi
share/renpy/renpy/gl2/gl2draw.pyx
+share/renpy/renpy/gl2/gl2draw.so
share/renpy/renpy/gl2/gl2functions.py
share/renpy/renpy/gl2/gl2functions.pyc
share/renpy/renpy/gl2/gl2mesh.pxd
+share/renpy/renpy/gl2/gl2mesh.pyi
share/renpy/renpy/gl2/gl2mesh.pyx
+share/renpy/renpy/gl2/gl2mesh.so
share/renpy/renpy/gl2/gl2mesh2.pxd
+share/renpy/renpy/gl2/gl2mesh2.pyi
share/renpy/renpy/gl2/gl2mesh2.pyx
+share/renpy/renpy/gl2/gl2mesh2.so
share/renpy/renpy/gl2/gl2mesh3.pxd
+share/renpy/renpy/gl2/gl2mesh3.pyi
share/renpy/renpy/gl2/gl2mesh3.pyx
+share/renpy/renpy/gl2/gl2mesh3.so
share/renpy/renpy/gl2/gl2model.pxd
+share/renpy/renpy/gl2/gl2model.pyi
share/renpy/renpy/gl2/gl2model.pyx
+share/renpy/renpy/gl2/gl2model.so
share/renpy/renpy/gl2/gl2polygon.pxd
+share/renpy/renpy/gl2/gl2polygon.pyi
share/renpy/renpy/gl2/gl2polygon.pyx
+share/renpy/renpy/gl2/gl2polygon.so
share/renpy/renpy/gl2/gl2shader.pxd
+share/renpy/renpy/gl2/gl2shader.pyi
share/renpy/renpy/gl2/gl2shader.pyx
+share/renpy/renpy/gl2/gl2shader.so
share/renpy/renpy/gl2/gl2shadercache.py
share/renpy/renpy/gl2/gl2shadercache.pyc
share/renpy/renpy/gl2/gl2texture.pxd
+share/renpy/renpy/gl2/gl2texture.pyi
share/renpy/renpy/gl2/gl2texture.pyx
+share/renpy/renpy/gl2/gl2texture.so
+share/renpy/renpy/gl2/gl2uniform.pxd
+share/renpy/renpy/gl2/gl2uniform.pyi
+share/renpy/renpy/gl2/gl2uniform.pyx
+share/renpy/renpy/gl2/gl2uniform.so
share/renpy/renpy/gl2/live2d.py
share/renpy/renpy/gl2/live2d.pyc
share/renpy/renpy/gl2/live2dcsm.pxi
+share/renpy/renpy/gl2/live2dmodel.pyi
share/renpy/renpy/gl2/live2dmodel.pyx
share/renpy/renpy/gl2/live2dmotion.py
share/renpy/renpy/gl2/live2dmotion.pyc
+share/renpy/renpy/importer.py
+share/renpy/renpy/importer.pyc
share/renpy/renpy/lexer.py
share/renpy/renpy/lexer.pyc
+share/renpy/renpy/lexersupport.pyi
share/renpy/renpy/lexersupport.pyx
+share/renpy/renpy/lexersupport.so
share/renpy/renpy/lint.py
share/renpy/renpy/lint.pyc
share/renpy/renpy/loader.py
@@ -1439,12 +1552,64 @@ share/renpy/renpy/persistent.py
share/renpy/renpy/persistent.pyc
share/renpy/renpy/preferences.py
share/renpy/renpy/preferences.pyc
-share/renpy/renpy/py2analysis.py
-share/renpy/renpy/py3analysis.py
-share/renpy/renpy/py3analysis.pyc
share/renpy/renpy/pyanalysis.py
share/renpy/renpy/pyanalysis.pyc
+share/renpy/renpy/pydict.pyi
share/renpy/renpy/pydict.pyx
+share/renpy/renpy/pydict.so
+share/renpy/renpy/pygame/__init__.py
+share/renpy/renpy/pygame/__init__.pyc
+share/renpy/renpy/pygame/color.pxd
+share/renpy/renpy/pygame/color.pyx
+share/renpy/renpy/pygame/color.so
+share/renpy/renpy/pygame/compat.py
+share/renpy/renpy/pygame/compat.pyc
+share/renpy/renpy/pygame/controller.pyx
+share/renpy/renpy/pygame/controller.so
+share/renpy/renpy/pygame/display.pxd
+share/renpy/renpy/pygame/display.pyx
+share/renpy/renpy/pygame/display.so
+share/renpy/renpy/pygame/draw.pyx
+share/renpy/renpy/pygame/draw.so
+share/renpy/renpy/pygame/error.pyx
+share/renpy/renpy/pygame/error.so
+share/renpy/renpy/pygame/event.pyx
+share/renpy/renpy/pygame/event.so
+share/renpy/renpy/pygame/gfxdraw.pyx
+share/renpy/renpy/pygame/gfxdraw.so
+share/renpy/renpy/pygame/image.pyx
+share/renpy/renpy/pygame/image.so
+share/renpy/renpy/pygame/joystick.pyx
+share/renpy/renpy/pygame/joystick.so
+share/renpy/renpy/pygame/key.pyx
+share/renpy/renpy/pygame/key.so
+share/renpy/renpy/pygame/locals.pyx
+share/renpy/renpy/pygame/locals.so
+share/renpy/renpy/pygame/mouse.pyx
+share/renpy/renpy/pygame/mouse.so
+share/renpy/renpy/pygame/power.pyx
+share/renpy/renpy/pygame/power.so
+share/renpy/renpy/pygame/pygame_time.pyx
+share/renpy/renpy/pygame/pygame_time.so
+share/renpy/renpy/pygame/rect.pxd
+share/renpy/renpy/pygame/rect.pyx
+share/renpy/renpy/pygame/rect.so
+share/renpy/renpy/pygame/rwobject.pxd
+share/renpy/renpy/pygame/rwobject.pyx
+share/renpy/renpy/pygame/rwobject.so
+share/renpy/renpy/pygame/scrap.pyx
+share/renpy/renpy/pygame/scrap.so
+share/renpy/renpy/pygame/surface.pxd
+share/renpy/renpy/pygame/surface.pyx
+share/renpy/renpy/pygame/surface.so
+share/renpy/renpy/pygame/sysfont.py
+share/renpy/renpy/pygame/sysfont.pyc
+share/renpy/renpy/pygame/time.py
+share/renpy/renpy/pygame/time.pyc
+share/renpy/renpy/pygame/transform.pyx
+share/renpy/renpy/pygame/transform.so
+share/renpy/renpy/pygame/version.py
+share/renpy/renpy/pygame/version.pyc
share/renpy/renpy/python.py
share/renpy/renpy/python.pyc
share/renpy/renpy/revertable.py
@@ -1474,11 +1639,37 @@ share/renpy/renpy/sl2/slproperties.pyc
share/renpy/renpy/statements.py
share/renpy/renpy/statements.pyc
share/renpy/renpy/style.pxd
+share/renpy/renpy/style.pyi
share/renpy/renpy/style.pyx
+share/renpy/renpy/style.so
share/renpy/renpy/styledata/__init__.py
share/renpy/renpy/styledata/__init__.pyc
+share/renpy/renpy/styledata/style_activate_functions.pyi
+share/renpy/renpy/styledata/style_activate_functions.so
+share/renpy/renpy/styledata/style_functions.pyi
+share/renpy/renpy/styledata/style_functions.so
+share/renpy/renpy/styledata/style_hover_functions.pyi
+share/renpy/renpy/styledata/style_hover_functions.so
+share/renpy/renpy/styledata/style_idle_functions.pyi
+share/renpy/renpy/styledata/style_idle_functions.so
+share/renpy/renpy/styledata/style_insensitive_functions.pyi
+share/renpy/renpy/styledata/style_insensitive_functions.so
+share/renpy/renpy/styledata/style_selected_activate_functions.pyi
+share/renpy/renpy/styledata/style_selected_activate_functions.so
+share/renpy/renpy/styledata/style_selected_functions.pyi
+share/renpy/renpy/styledata/style_selected_functions.so
+share/renpy/renpy/styledata/style_selected_hover_functions.pyi
+share/renpy/renpy/styledata/style_selected_hover_functions.so
+share/renpy/renpy/styledata/style_selected_idle_functions.pyi
+share/renpy/renpy/styledata/style_selected_idle_functions.so
+share/renpy/renpy/styledata/style_selected_insensitive_functions.pyi
+share/renpy/renpy/styledata/style_selected_insensitive_functions.so
+share/renpy/renpy/styledata/styleclass.pyi
share/renpy/renpy/styledata/styleclass.pyx
+share/renpy/renpy/styledata/styleclass.so
+share/renpy/renpy/styledata/stylesets.pyi
share/renpy/renpy/styledata/stylesets.pyx
+share/renpy/renpy/styledata/stylesets.so
share/renpy/renpy/styledata/styleutil.py
share/renpy/renpy/styledata/styleutil.pyc
share/renpy/renpy/substitutions.py
@@ -1497,24 +1688,44 @@ share/renpy/renpy/test/testmouse.py
share/renpy/renpy/test/testmouse.pyc
share/renpy/renpy/test/testparser.py
share/renpy/renpy/test/testparser.pyc
+share/renpy/renpy/test/testreporter.py
+share/renpy/renpy/test/testreporter.pyc
+share/renpy/renpy/test/testsettings.py
+share/renpy/renpy/test/testsettings.pyc
+share/renpy/renpy/test/types.py
+share/renpy/renpy/test/types.pyc
share/renpy/renpy/text/__init__.py
share/renpy/renpy/text/__init__.pyc
+share/renpy/renpy/text/bidi.pyi
+share/renpy/renpy/text/bidi.pyx
+share/renpy/renpy/text/bidi.so
share/renpy/renpy/text/emoji_trie.py
share/renpy/renpy/text/emoji_trie.pyc
share/renpy/renpy/text/extras.py
share/renpy/renpy/text/extras.pyc
share/renpy/renpy/text/font.py
share/renpy/renpy/text/font.pyc
+share/renpy/renpy/text/ftfont.pyi
share/renpy/renpy/text/ftfont.pyx
+share/renpy/renpy/text/ftfont.so
+share/renpy/renpy/text/hbfont.pyi
share/renpy/renpy/text/hbfont.pyx
+share/renpy/renpy/text/hbfont.so
share/renpy/renpy/text/linebreak.pxi
share/renpy/renpy/text/shader.py
share/renpy/renpy/text/shader.pyc
share/renpy/renpy/text/text.py
share/renpy/renpy/text/text.pyc
share/renpy/renpy/text/textsupport.pxd
+share/renpy/renpy/text/textsupport.pyi
share/renpy/renpy/text/textsupport.pyx
+share/renpy/renpy/text/textsupport.so
+share/renpy/renpy/text/texwrap.pyi
share/renpy/renpy/text/texwrap.pyx
+share/renpy/renpy/text/texwrap.so
+share/renpy/renpy/tfd.pyi
+share/renpy/renpy/tfd.pyx
+share/renpy/renpy/tfd.so
share/renpy/renpy/translation/__init__.py
share/renpy/renpy/translation/__init__.pyc
share/renpy/renpy/translation/dialogue.py
@@ -1527,15 +1738,24 @@ share/renpy/renpy/translation/merge.py
share/renpy/renpy/translation/merge.pyc
share/renpy/renpy/translation/scanstrings.py
share/renpy/renpy/translation/scanstrings.pyc
+share/renpy/renpy/types.py
+share/renpy/renpy/types.pyc
share/renpy/renpy/uguu/__init__.py
share/renpy/renpy/uguu/__init__.pyc
share/renpy/renpy/uguu/gl.pxd
+share/renpy/renpy/uguu/gl.pyi
share/renpy/renpy/uguu/gl.pyx
+share/renpy/renpy/uguu/gl.so
+share/renpy/renpy/uguu/uguu.pyi
share/renpy/renpy/uguu/uguu.pyx
+share/renpy/renpy/uguu/uguu.so
share/renpy/renpy/ui.py
share/renpy/renpy/ui.pyc
share/renpy/renpy/update/__init__.py
+share/renpy/renpy/update/__init__.pyc
share/renpy/renpy/update/common.py
+share/renpy/renpy/update/deferred.py
+share/renpy/renpy/update/deferred.pyc
share/renpy/renpy/update/download.py
share/renpy/renpy/update/generate.py
share/renpy/renpy/update/update.py
@@ -1550,10 +1770,11 @@ share/renpy/renpy/warp.pyc
share/renpy/renpy/webloader.py
share/renpy/renpy/webloader.pyc
share/renpy/sdk-fonts/SourceHanSansLite.ttf
+share/renpy/sdk-fonts/Vazirmatn-RD-UI-Light.ttf
share/renpy/the_question/android-icon_background.png
share/renpy/the_question/android-icon_foreground.png
share/renpy/the_question/android.json
-share/renpy/the_question/game/cache/bytecode-${PYTHON_VERSION}.rpyb
+share/renpy/the_question/game/cache/bytecode-314.rpyb
share/renpy/the_question/game/cache/py3analysis.rpyb
share/renpy/the_question/game/cache/screens.rpyb
share/renpy/the_question/game/gui.rpy
@@ -1626,6 +1847,8 @@ share/renpy/the_question/game/screens.rp
share/renpy/the_question/game/screens.rpyc
share/renpy/the_question/game/script.rpy
share/renpy/the_question/game/script.rpyc
+share/renpy/the_question/game/testcases.rpy
+share/renpy/the_question/game/testcases.rpyc
share/renpy/the_question/game/tl/None/common.rpym
share/renpy/the_question/game/tl/None/common.rpymc
share/renpy/the_question/game/tl/czech/common.rpy
@@ -1733,7 +1956,7 @@ share/renpy/tutorial/game/01director_sup
share/renpy/tutorial/game/01director_support.rpyc
share/renpy/tutorial/game/01example.rpy
share/renpy/tutorial/game/01example.rpyc
-share/renpy/tutorial/game/cache/bytecode-${PYTHON_VERSION}.rpyb
+share/renpy/tutorial/game/cache/bytecode-314.rpyb
share/renpy/tutorial/game/cache/py3analysis.rpyb
share/renpy/tutorial/game/cache/screens.rpyb
share/renpy/tutorial/game/examples.rpy
@@ -1921,6 +2144,48 @@ share/renpy/tutorial/game/tl/french/tuto
share/renpy/tutorial/game/tl/french/tutorial_screens.rpyc
share/renpy/tutorial/game/tl/french/tutorial_video.rpy
share/renpy/tutorial/game/tl/french/tutorial_video.rpyc
+share/renpy/tutorial/game/tl/italian/01example.rpy
+share/renpy/tutorial/game/tl/italian/01example.rpyc
+share/renpy/tutorial/game/tl/italian/common.rpy
+share/renpy/tutorial/game/tl/italian/common.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_character.rpy
+share/renpy/tutorial/game/tl/italian/indepth_character.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_displayables.rpy
+share/renpy/tutorial/game/tl/italian/indepth_displayables.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_minigame.rpy
+share/renpy/tutorial/game/tl/italian/indepth_minigame.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_style.rpy
+share/renpy/tutorial/game/tl/italian/indepth_style.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_text.rpy
+share/renpy/tutorial/game/tl/italian/indepth_text.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_transitions.rpy
+share/renpy/tutorial/game/tl/italian/indepth_transitions.rpyc
+share/renpy/tutorial/game/tl/italian/indepth_translations.rpy
+share/renpy/tutorial/game/tl/italian/indepth_translations.rpyc
+share/renpy/tutorial/game/tl/italian/options.rpy
+share/renpy/tutorial/game/tl/italian/options.rpyc
+share/renpy/tutorial/game/tl/italian/screens.rpy
+share/renpy/tutorial/game/tl/italian/screens.rpyc
+share/renpy/tutorial/game/tl/italian/script.rpy
+share/renpy/tutorial/game/tl/italian/script.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_atl.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_atl.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_director.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_director.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_distribute.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_distribute.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_nvlmode.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_nvlmode.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_playing.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_playing.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_quickstart.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_quickstart.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_screen_displayables.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_screen_displayables.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_screens.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_screens.rpyc
+share/renpy/tutorial/game/tl/italian/tutorial_video.rpy
+share/renpy/tutorial/game/tl/italian/tutorial_video.rpyc
share/renpy/tutorial/game/tl/japanese/01example.rpy
share/renpy/tutorial/game/tl/japanese/01example.rpyc
share/renpy/tutorial/game/tl/japanese/common.rpy
@@ -2049,6 +2314,48 @@ share/renpy/tutorial/game/tl/piglatin/tu
share/renpy/tutorial/game/tl/piglatin/tutorial_screens.rpyc
share/renpy/tutorial/game/tl/piglatin/tutorial_video.rpy
share/renpy/tutorial/game/tl/piglatin/tutorial_video.rpyc
+share/renpy/tutorial/game/tl/portuguese/01example.rpy
+share/renpy/tutorial/game/tl/portuguese/01example.rpyc
+share/renpy/tutorial/game/tl/portuguese/common.rpy
+share/renpy/tutorial/game/tl/portuguese/common.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_character.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_character.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_displayables.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_displayables.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_minigame.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_minigame.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_style.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_style.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_text.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_text.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_transitions.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_transitions.rpyc
+share/renpy/tutorial/game/tl/portuguese/indepth_translations.rpy
+share/renpy/tutorial/game/tl/portuguese/indepth_translations.rpyc
+share/renpy/tutorial/game/tl/portuguese/options.rpy
+share/renpy/tutorial/game/tl/portuguese/options.rpyc
+share/renpy/tutorial/game/tl/portuguese/screens.rpy
+share/renpy/tutorial/game/tl/portuguese/screens.rpyc
+share/renpy/tutorial/game/tl/portuguese/script.rpy
+share/renpy/tutorial/game/tl/portuguese/script.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_atl.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_atl.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_director.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_director.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_distribute.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_distribute.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_nvlmode.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_nvlmode.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_playing.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_playing.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_quickstart.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_quickstart.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_screen_displayables.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_screen_displayables.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_screens.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_screens.rpyc
+share/renpy/tutorial/game/tl/portuguese/tutorial_video.rpy
+share/renpy/tutorial/game/tl/portuguese/tutorial_video.rpyc
share/renpy/tutorial/game/tl/russian/01example.rpy
share/renpy/tutorial/game/tl/russian/01example.rpyc
share/renpy/tutorial/game/tl/russian/common.rpy
Index: pkgsrc/games/py-renpy/distinfo
diff -u pkgsrc/games/py-renpy/distinfo:1.9 pkgsrc/games/py-renpy/distinfo:1.10
--- pkgsrc/games/py-renpy/distinfo:1.9 Sun May 11 14:08:33 2025
+++ pkgsrc/games/py-renpy/distinfo Thu Jul 23 14:03:50 2026
@@ -1,12 +1,9 @@
-$NetBSD: distinfo,v 1.9 2025/05/11 14:08:33 ryoon Exp $
+$NetBSD: distinfo,v 1.10 2026/07/23 14:03:50 ryoon Exp $
-BLAKE2s (renpy-8.3.7-source.tar.bz2) = 109b06aa2cee51cf0aaf2b2b380e2bd73552c8c4c13a3f34c2c349a0b29ce665
-SHA512 (renpy-8.3.7-source.tar.bz2) = 204005e3caaf1e75f6b2d5a509a87980e8c9fc3b7b2bafba36535c2faaa6b527ee97ed09d4731cdd2bf1e084a013bfdff16aeccdaf11d8da8c6df723aa779bec
-Size (renpy-8.3.7-source.tar.bz2) = 71575076 bytes
-SHA1 (patch-launcher_game_gui7_code.py) = da58df02611db214e8aebf53f6929fad5cbc4207
+BLAKE2s (renpy-8.5.3-source.tar.bz2) = 66eb7222eef6139192c25a430eab2d82391cd69cc9cd9d95ec9ca8dabe781669
+SHA512 (renpy-8.5.3-source.tar.bz2) = 29a3bc2ce6a2d1c06ab1c30874574360d66c292adf6349daef8c8a6f69a979afa8ad3e657fa7706063699e5f32fb11cfd649d11b2aa45e556c04d3794a0f6374
+Size (renpy-8.5.3-source.tar.bz2) = 77069263 bytes
SHA1 (patch-launcher_game_translations.rpy) = 4ac93764ddfed2eccc64a10f127cace2117d0208
-SHA1 (patch-module_renpybidicore.c) = 1aceeb4388c8386721e6ee9422952167c5a35add
-SHA1 (patch-module_setup.py) = 86bd582d20ee6d96a596e4efdc124cd87ea088c3
-SHA1 (patch-module_tinyfiledialogs_tinyfiledialogs.c) = c1e5f0507c5145028337e608775937309667c688
SHA1 (patch-renpy_____init____.py) = 52aa676ac6eb82d8367151422415557ec4ba08f8
-SHA1 (patch-renpy_gl_glenviron__shader.pyx) = 40374d2ff3c5f941d968295a4c7b9938aa456d1a
+SHA1 (patch-src_renpybidicore.c) = 3be1fdf8c3aa56d6106a6dc28a6fecc9f02fb9f8
+SHA1 (patch-src_tinyfiledialogs_tinyfiledialogs.c) = bd5567434634a8e8fafd1ac3950fb177e51f5167
Added files:
Index: pkgsrc/games/py-renpy/patches/patch-src_renpybidicore.c
diff -u /dev/null pkgsrc/games/py-renpy/patches/patch-src_renpybidicore.c:1.1
--- /dev/null Thu Jul 23 14:03:50 2026
+++ pkgsrc/games/py-renpy/patches/patch-src_renpybidicore.c Thu Jul 23 14:03:50 2026
@@ -0,0 +1,18 @@
+$NetBSD: patch-src_renpybidicore.c,v 1.1 2026/07/23 14:03:50 ryoon Exp $
+
+* NetBSD has no alloca.h.
+
+--- src/renpybidicore.c.orig 2023-06-13 02:11:15.133920000 +0000
++++ src/renpybidicore.c
+@@ -4,9 +4,11 @@
+
+ #include <stdlib.h>
+
++#if !defined(__NetBSD__)
+ #ifndef alloca
+ #include <alloca.h>
+ #endif
++#endif
+
+ #if PY_VERSION_HEX > 0x030300f0
+
Index: pkgsrc/games/py-renpy/patches/patch-src_tinyfiledialogs_tinyfiledialogs.c
diff -u /dev/null pkgsrc/games/py-renpy/patches/patch-src_tinyfiledialogs_tinyfiledialogs.c:1.1
--- /dev/null Thu Jul 23 14:03:50 2026
+++ pkgsrc/games/py-renpy/patches/patch-src_tinyfiledialogs_tinyfiledialogs.c Thu Jul 23 14:03:50 2026
@@ -0,0 +1,15 @@
+$NetBSD: patch-src_tinyfiledialogs_tinyfiledialogs.c,v 1.1 2026/07/23 14:03:50 ryoon Exp $
+
+* Do not segfault under NetBSD.
+
+--- src/tinyfiledialogs/tinyfiledialogs.c.orig 2023-11-23 13:03:29.419445256 +0000
++++ src/tinyfiledialogs/tinyfiledialogs.c
+@@ -56,7 +56,7 @@ Thanks for contributions, bug correction
+
+ #if !defined(_WIN32) && ( defined(__GNUC__) || defined(__clang__) )
+ #if !defined(_GNU_SOURCE)
+- #define _GNU_SOURCE /* used only to resolve symbolic links. Can be commented out */
++// #define _GNU_SOURCE /* used only to resolve symbolic links. Can be commented out */
+ #endif
+ #endif
+
Home |
Main Index |
Thread Index |
Old Index