MININIM is the Advanced Prince of Persia Engine — a childhood dream, the
free software implementation of Jordan Mechner’s masterpiece game,
developed from scratch by Bruno Félix Rezende Ribeiro (‘oitofelix’).

This is the NEWS file for MININIM version 202505220946.

   Copyright © 2016 Bruno Félix Rezende Ribeiro

     Permission is granted to copy, distribute and/or modify this
     document under the terms of the GNU Free Documentation License,
     Version 1.3 or any later version published by the Free Software
     Foundation; with no Invariant Sections.  A copy of the license is
     included in the file ‘GNU-FREE-DOCUMENTATION-LICENSE’.

News
****

   This document contains a list of user-visible changes worth
mentioning.  The changes are split and ordered by version in reverse
chronological order.

202505220946

     *Features:*

        • Complete on-the-fly level editor.
        • Uniform and non-intrusive bottom-line menu interface.
        • Unlimited undo/redo capability for level playing and editing
          modifications.
        • Native level format.
        • Add 7 styles for skeleton and shadow for symmetry with guards.
        • Add option ‘--convert-levels’ to batch convert legacy formats
          to the native format.
        • Guards can back off in refraction periods.
        • Add ‘SHIFT+M’ previous level command key binding.

     *Behavior changes:*

        • New default value for ‘--level-module’ option: ‘NATIVE’.
        • Data files looked for first in the user data directory, where
          native levels are saved by the level editor in order to make
          it easier to work with.
        • LEVELS.DAT loading path changed from resources directory to
          working directory, to make this legacy mechanism compatible
          with symbolic links.
        • ‘SHIFT+L’ doesn’t play level cut-scenes anymore, for faster
          progression.

     *Bug fixes:*

        • Chopper doesn’t handle step extension correctly.
        • Drawing of rooms with broken links is ill-behaved.  There are
          glitches in room drawing for rooms with more than one link to
          the same room, and kid drawing glitches for rooms linked to
          themselves, as well as several other minor glitches.
        • Foreground drawing glitches when ‘ARCH_BOTTOM’ is below an
          ordinary floor.
        • Spurious collisions happen when the kid is climbing at the
          limits of a room linked to itself.
        • The kid can’t hang turn properly in a hangable place with a
          closed door in the opposite direction he’s facing.
        • Spikes kill kid in the last few frames of landing after a
          normal jump.
        • ‘BIG_LIFE_POTION’ doesn’t fill all life points, if the kid has
          the maximum amount of life point containers.
        • Legacy level module ignore guards with invalid palette.
        • Skeleton doesn’t hold his sword when falling.
        • Interrupting a video effect before its end results in normal
          draw cycles being skipped.
        • Sometimes the crossing mirror sound is played more than once.
        • Shadow’s sword isn’t white.
        • Mirror is not fully opaque.
        • Approximately 25% of the time balcony stars don’t respect the
          paused game state.
        • Not all pillar types are rigid.
        • The game crashes when the option ‘--start-time’ receives a
          value larger than the option ‘--time-limit’.
0.10
     *Features:*

        • Joystick support.  To use a joystick just plug it in and press
          ‘CTRL+J’ to enable and auto-calibrate it on the fly.  See the
          manual for the default mapping.  If the default mapping
          doesn’t suit you or your joystick, you can use the options
          ‘--joystick-axis’, ‘-joystick-button’ and ‘--joystick-info’ to
          define a new mapping.  In case your joystick is ill-behaved
          the ‘--joystick-axis-threshold’ and
          ‘--joystick-button-threshold’ options may help.  Using a
          joystick doesn’t disable the keyboard — you can use both
          interchangeably.
        • Classic numeric keypad control.  This is always enabled, and
          can be used along the two other input methods (arrow keys and
          joystick).  The original game manual used to refer to this as
          the standard input method.
        • Apoplexy level editor integration.  Just copy MININIM’s
          executable along with any dlls (if under _Windows_) and its
          ‘data’ directory to apoplexy’s ‘prince/’ directory, rename the
          executable to ‘prince.exe’ (‘prince’ if under _GNU/Linux_) and
          make sure there is a ‘LEVELS.DAT’ file there, and you are
          ready to go.  Apoplexy will invoke MININIM as a drop-in
          replacement for the original engine.
        • Hue coloring support.  This makes the engine able to render
          VGA color schemes like the 1.3 and 1.4 versions of the
          original game.  That’s the default.  You can force particular
          hue modes by using the ‘--hue-mode’ option or the ‘F9’ key
          binding.  To revert to the previous and classic behavior use
          ‘--hue-mode=NONE’.
        • Support for reading legacy PoP 1 ‘LEVELS.DAT’ file using the
          option ‘--legacy-level=DAT’.  Put the ‘LEVELS.DAT’ file inside
          ‘data/dat-levels/’ directory and use that option.
        • Support for reading legacy PoP 1 PLV extended level files
          using the option ‘--legacy-level=PLV’.  Put the
          ‘00.plv’..‘15.plv’ PLV files inside ‘data/plv-levels/’ and use
          that option.
        • Command line legacy compatibility for the sake of applications
          which use it.  Used by apoplexy.
        • ‘LEVELS.DAT’ legacy loading behavior compatibility for the
          sake of applications that rely on it.  Used by apoplexy.  Just
          put the ‘LEVELS.DAT’ file in the same directory as the
          ‘mininim’ executable and preference will be given to it, over
          the legacy level files under the ‘dat/legacy-levels/’
          directory.
        • Kid start position can be specified using the ‘--start-pos’
          option.  Very useful for placing the kid in a specific place
          for tests.  To start with the kid in level 12, room 15, floor
          0 and place 7, invoke MININIM with the options
          ‘--start-level=12 --start-pos=15,0,7’.
        • Disable screensaver by default.
        • Guards have infallible defense in refraction periods, for
          longer and more dramatic battles.
        • Shadow in legacy level 12 has the same total/current life
          points as the kid, and life points are taken off one at a
          time, for a longer and more dramatic battle.
        • ‘--keyboard-flip-mode’ option renamed to
          ‘--gamepad-flip-mode’, since now it applies to joysticks as
          well.

     *Bug fixes:*

     All the bugs the author knew about at the time of this release have
     been fixed.  If you’ve found a bug or annoyance in the previous
     version, chances are it has been fixed, as well.  ;-)

        • Spurious wall collision occurs in kid’s stabilization
          movement.
        • Kid can’t hang on a ledge after a long floating fall.
        • Kid’s _run_ movement after a _running turn_ starts one frame
          off.
        • In some circumstances the kid is unable to reach the other end
          after a jump, as if a force field prevented him from landing
          there.
        • Kid dies after just touching guards.
        • Guards spuriously attack thin air while trying to prevent the
          kid from bypassing them.
        • While in counter attack and counter defense mode kid defends
          even if too far from the guard, when he could otherwise let
          the guard strike only thin air.
        • Restarting the game while it’s paused causes it to get stuck
          in a paused state after the title screen.
        • It’s hard to perform 3-tile running jumps because MININIM is
          lacking platform edge detection.
        • Kid doesn’t stumble on guards, in case he manages to pass
          through them without being hit.
        • Guards continue to advance towards the kid, even when he is
          running towards them.
        • Guard mode changing doesn’t work for guards that died falling,
          spiked or chopped.
        • Kid can’t battle properly against more than one guard at once.
        • Shadow death music in level 12 plays in a row if reviving kid
          with R repeatedly in a short period of time.
        • Legacy level rooms above room 0 may have traversable
          constructions at bottom over room 0’s walls.
        • In legacy level 12 shadow appears sooner than expected if the
          kid manages to enter room 15 from below after exiting room 18
          to the right.
        • Guards turn too quickly when their attention is grabbed from
          opposite directions in a short period of time.
        • Drawing glitches occur in several situations involving two
          characters near each other.
        • Fight mode collision detection is ill-behaved for kid and
          guards.
        • Game doesn’t pause while saving.
        • In some cases of death after fight, the normal death tune is
          played along the fight one.
        • Falling close to door makes kid collide and stabilize
          standing, instead of crouching.
        • Guard chasing logic has flaws and corner cases that result in
          counter-intuitive guard behavior in certain situations.
        • If the kid is exactly 27 pixels from falling, walking to the
          very edge and then from there again doesn’t trigger a misstep.
        • Turning close to door at its left causes a spurious collision.
        • Game saves should store the remaining time of when kid first
          enters the level, not of when the game is saved.
        • Simple jump might fall earlier than expected.

0.9.2
        • First release

