MININIM 0.10

A free software implementation of Prince of Persia 1.
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

MININIM 0.10

Post by oitofelix »

MININIM 0.10 (March 01, 2016)
*****************************

_Menininho_ is the Brazilian Portuguese word for _male kid_, and
_mininim_ is how it’s informally pronounced throughout the country.
_Kid_ is the term used by _Jordan Mechner_(1) when referring to the main
character of his most famous game — *Prince of Persia* — in its source
code and documentation, because the character’s movements were derived
from rotoscoping footage of Mechner’s little brother. *MININIM* is the
_Advanced Prince of Persia Engine_, written from scratch by computer
programmer and free software activist _Bruno Félix Rezende Ribeiro_
(‘oitofelix’). Bruno had a childhood dream of deciphering the secrets
of his favorite game that introduced him to computing — a dream dreamt
when he was just a kid, a dream realized now that he’s still a _mininim_
deep in his heart.(2)

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’).
_MININIM is free software_; you can redistribute it and/or modify it
under the terms of the GNU GPL (http://www.gnu.org/licenses/gpl.html)
(General Public Licence) as published by the FSF (Free Software
Foundation); either version 3, or (at your option) any later version.

In addition to being already a complete replacement for the original
game with several improvements, MININIM aims to have detailed
documentation on all matters concerning the original Prince of Persia
world, ranging from its design concepts to the engine’s practical use
and development. _MININIM documentation is free_; you can redistribute
it and/or modify it under the terms of the GNU FDL
(http://www.gnu.org/licenses/fdl.html) (Free Documentation Licence) as
published by the FSF — with no Invariant Sections; either version 1.3,
or (at your option) any later version.

MININIM features various improvements over the original game, too
many to make an exhaustive list here. Some of its noteworthy
advantages are:

• Portable to modern operating systems.
• Video, environment, hue and guard modes may be selected on-the-fly.
• Mirror mode (inverts screen and gamepad axis horizontally).
• Joystick mapping and threshold configuration.
• Improved battle system based on upgradable skills, arbitrary number
of simultaneous fighters and smarter enemy AI.
• Real-time responsiveness, higher world interaction accuracy and
more stable animations.
• New useful movements.
• Volume of sounds based on distance from the source.
• Integrated configuration system using multiple back-ends.
• Capability of loading level files in multiple formats.

News
====

*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.

Links
=====

Homepage
<http://oitofelix.github.io/mininim/>
Atom feed
<http://oitofelix.github.io/feed.xml>
Forum
<viewtopic.php?f=69&t=3783>
IRC channel
<irc://irc.freenode.net/mininim>
Bug reporting
<https://github.com/oitofelix/mininim/issues>
VCS
<https://github.com/oitofelix/mininim>

Download
========

User’s Manual
-------------

If you just want to have a look in the latest release documentation,
you can download the manual in PDF format separately.

<https://github.com/oitofelix/mininim/re ... m-0.10.pdf>

Windows
-------

If you are under Microsoft Windows a MinGW build is readily
available. No installation is required, just extract the zip archive
and run ‘mininim.exe’. The PDF manual is bundled as well.

<https://github.com/oitofelix/mininim/re ... -win32.zip>

GNU/Linux
---------

If you use GNU/Linux, you have to build from source. This should be
quite straightforward, provided you install the Allegro 5 development
libraries using your distribution’s package manager. If you use an apt
based distribution (Debian, Ubuntu, ...) you can do this by invoking
the command:

sudo apt-get install '^liballegro.*5-dev$'

When building the sources, the usual incantation ‘./configure &&
make’ is often enough. The installation step (‘make install’) is
optional as MININIM is able to run directly from its source directory
(provided you don’t make a ‘VPATH’ build, in which case you need to
specify the _data path_. See the ‘--data-path’ option).

Here are the compressed sources and a GPG detached signature:


<https://github.com/oitofelix/mininim/re ... .10.tar.gz>

<https://github.com/oitofelix/mininim/re ... tar.gz.sig>

Use the ‘.sig’ file to verify that the corresponding file (without
the ‘.sig’ suffix) is intact. First, be sure to download both the
‘.sig’ file and the corresponding tarball. Then, run this command:

gpg --verify mininim-0.10.tar.gz.sig

If that command fails because you don’t have the required public key,
then run this command to import it:

gpg --recv-keys 0x28D618AF --keyserver hkp://keys.gnupg.net

and rerun the ‘gpg --verify’ command.

This release is signed by _Bruno Félix Rezende Ribeiro_. His key
fingerprint is ‘7CB1 208C 7336 56B7 5962 2500 27B9 C6FD 28D6 18AF’.

This release was bootstrapped with the following tools:
• GNU Autoconf 2.69
• GNU Automake 1.14.1
• GNU Texinfo 5.2

To do
=====

The following additional features are planned to be implemented
eventually.

• Native level format
• Level editor
• Level generator module
• Guile scripting
• Network play

Please, support MININIM development!
====================================

*MININIM* development is voluntary. If you like this game and want
to thank the author for the work he has done so far, or want to enable
him to spend more time improving it, please make a donation! For values
equal or greater than 50 US$ or 0.12 BTC your name will be acknowledged
in the manual section “Donors” and in the donors page at the author’s
website (<http://oitofelix.github.io/funding.html#donors>). If you
decide to make recurrent donations, the total amount of your donations
will be updated every month for all records. Please, donate at
<http://oitofelix.github.io/funding.html>.
*Thank you for your support!*

---------- Footnotes ----------

(1) Jordan Mechner (born June 4, 1964) is an American video game
designer, author, screenwriter, and filmmaker, best known for creating
the Prince of Persia video game franchise and the 8-bit computer game
Karateka.

(2) Of course, none of this is reason enough to name a game engine
“MININIM”, if not by the fact that it’s a really cool palindrome!
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
User avatar
R3
Vizier
Vizier
Posts: 99
Joined: June 19th, 2015, 8:17 am

Re: MININIM 0.10

Post by R3 »

oitofelix wrote:
Andrew wrote:Seems to work very well although I can't say I liked the move to make sword drawing manual. I can understand the thought process behind the change, but would it be possible to make it optional?
You are the third person to ask me for this. I think you, and the others, haven't played enough to realize the real benefit of the current battle system the way it is. As you said, you just played it a little bit. I kindly ask you (and the others wanting for this legacy unfit behavior), to abandon their original game preconceptions and play MININIM for dozen hours as if its game mechanics were designed to be that way in the first place (because it really was, by myself). After this, if you (and the others wanting for that change) don't have changed your minds, I think we can discuss the situation in a better position, and then if there are enough requests I'll implement it. However, I won't make it the default, because I think it's unsuitable for the battle system I've designed. It's simply not a sane default. Those who disagree with me, as they are entitled to, could use the option --auto-draw-sword to use the legacy (insane? ;)) behavior then.
how do i implement this 'auto-draw-sword' feature?
i'm using Windows 10, and what i did was i created a shortcut and modified the target to

..\..\minimim.exe --auto-draw-sword

but when i double-click the shortcut, the Minimim window flashes and then it closes.
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

R3 wrote:i'm using Windows 10, and what i did was i created a shortcut and modified the target to

..\..\minimim.exe --auto-draw-sword

but when i double-click the shortcut, the Minimim window flashes and then it closes.
That's because it's not implemented.
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
salvadorc17
Calif
Calif
Posts: 553
Joined: August 27th, 2011, 2:04 am

Re: MININIM 0.10

Post by salvadorc17 »

Tested it with Windows 8 64 bits, and no problem for runnin, good work.

Some in game things seeems different from original:
-Guard life points are also red, should not be blue?
-Guard see you from different room?
-Prince speed cause to automatically fail jump after falling and getting floor border.

Will do further test and comment..
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

salvadorc17 wrote:good work
Thank you. :)
salvadorc17 wrote:Guard life points are also red, should not be blue?
You are the second person to ask me about this. Like in the original game, guard life point colors are based on the guard's palette. See the first guard of the second level.
salvadorc17 wrote:Guard see you from different room?
That's intended and is considered a feature. That allows for more exciting battles.
salvadorc17 wrote:Prince speed cause to automatically fail jump after falling and getting floor border.
I'm not sure I understand your description. Could you expand on that?
salvadorc17 wrote:Will do further test and comment..
Thank you for testing. It's highly appreciated. :D
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
salvadorc17
Calif
Calif
Posts: 553
Joined: August 27th, 2011, 2:04 am

Re: MININIM 0.10

Post by salvadorc17 »

oitofelix wrote: You are the second person to ask me about this. Like in the original game, guard life point colors are based on the guard's palette. See the first guard of the second level.

I'm not sure I understand your description. Could you expand on that?
Ok i will try reach second or later levels, also what i was talking about that, after doing the jump the prince is not able to stop before reaching the border, so the aceleration makes him do not avoid fall.

There are cheats for your game version?
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

salvadorc17 wrote:Ok i will try reach second or later levels
Try SHIFT+L.
salvadorc17 wrote:after doing the jump the prince is not able to stop before reaching the border, so the aceleration makes him do not avoid fall.
Stop before reaching the border? I can't see the situation you are describing. Sorry. Can't you record a video demonstrating it?
salvadorc17 wrote:There are cheats for your game version?
Yes, quite a few. MININIM's manual describes all of them.
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
salvadorc17
Calif
Calif
Posts: 553
Joined: August 27th, 2011, 2:04 am

Re: MININIM 0.10

Post by salvadorc17 »

Nevermind, there was an apretiation mistake made by me, there is no problem. Your port is using original level files format, no support for custom levels or mods??
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

salvadorc17 wrote:Your port is using original level files format, no support for custom levels or mods??
Version 0.10 supports DAT, PLV and RAW legacy level formats. This means you should be able to play any custom level or mod --- or even create your own using apoplexy integration, for instance. This uses a subset of MININIM's capabilities.

MININIM uses a modular approach when it comes to handling level formats. In addition to the aforementioned formats version 0.10 (and 0.9.2) supports the CONSISTENCY module, that generates semi-chaotic levels aimed at testing the engine under unusual level design circumstances.

The upcoming version 0.11 has a NATIVE level module which implements MININIM's native level format, that is way more expressive than the legacy formats and can make use of all features offered by the engine. For instance, it allows for arbitrary combinations of constructions foreground and background, arbitrary number of guards per room, arbitrary total lives, skills, type and style per guard and arbitrary hue and environment per level.

MININIM 0.11 has a complete built-in level editor that enables you to easily construct and modify levels on-the-fly, using a uniform and non-intrusive bottom-line menu interface. It gives you quick and convenient access to the full engine's and native level format's potential. All these are already implemented in the VCS, but I haven't started documenting it yet. The 0.11 release should come out in a few days. The release after that should add support to an arbitrary number of events, rooms and guards per level. The release after that should add support to arbitrary number of levels and programmable special events using the powerful Scheme language for scripting. And finally the release after that should add network support. That's my plan.

Ps: I don't like to call it a "port", because it's really a free software implementation written from scratch.
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

oitofelix wrote:The 0.11 release should come out in a few days.
The documentation needs more work than I first expected. I'm working on it. After finishing that I have a batch of bugs to address and some additional level editor/native format features I've decided to implement before the release.

Thus this will take no less than one week of work from now (probably more).
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
lvcabral
Vizier
Vizier
Posts: 116
Joined: March 11th, 2016, 10:34 pm

Re: MININIM 0.10

Post by lvcabral »

Hey oitofelix,

Great job, you are doing!

I'm also porting PoP1, in my case is for the Roku streaming box (very popular in USA) check the thread:
viewtopic.php?f=69&t=3803

And for a happy coincidence, I'm from Brazil as well :)

Grande abraço!

Marcelo
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

lvcabral wrote:Hey oitofelix
Hello lvcabral!
lvcabral wrote:Great job, you are doing!
Thank you. :)
lvcabral wrote:I'm also porting PoP1, in my case is for the Roku streaming box (very popular in USA) check the thread:
viewtopic.php?f=69&t=3803
You are doing a great job as well! Congratulations. :) That multi-room feature is quite impressive.
lvcabral wrote:And for a happy coincidence, I'm from Brazil as well :)
Indeed, that's a fortunate coincidence. Very nice to hear that a compatriot of mine shares the same passion for Prince of Persia and programming and is making a major contribution to our community.

Um abraço, cara!
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

Update:
oitofelix wrote:The documentation needs more work than I first expected. I'm working on it.
The bulk of the documentation is finished. Now, only minor work on it is needed when a new feature gets added. At this point I keep it up to date with the implemented features.
oitofelix wrote:After finishing that I have a batch of bugs to address and some additional level editor/native format features I've decided to implement before the release.
I've decided to implement a robust super-set of apoplexy, SDLPoP level editor and cuspop features. That's another reason why it's taking longer than originally planned. I already got very far in this, remaining only a few features to address.

I have to sort out the batch of bugs, yet. (they are not level editor related)
oitofelix wrote:Thus this will take no less than one week of work from now (probably more).
This will take, again, no less than one week of work from now. I believe MININIM's level editor to be already quite robust and well documented. Please feel free to fetch it from VCS, build and test it. It certainly will benefit from more testing, because I don't have the manpower to test it extensively as I'm too busy implementing and documenting new features, and fixing bugs.
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
User avatar
oitofelix
Wise Scribe
Wise Scribe
Posts: 227
Joined: February 17th, 2016, 1:59 pm
Location: Brazil
Contact:

Re: MININIM 0.10

Post by oitofelix »

I've implemented unlimited undo/redo feature for level playing and editing. It's available in the VCS. It's complete and working for any level editor command or playing action that changes anything in a level. Use CTRL+Z for undo and CTRL+Y for redo, anytime. Level editing is much more pleasurable, now. The documentation is up to date. Please, test and report.

It took me long (2 weeks or so), because I've had to experiment with different algorithms and adapt the most appropriate one to work best with the engine (not to mention some setbacks). It's a relatively hard task to get unlimited anytime-invokable undo/redo working seamlessly with live level editing and playing, but it's done now. That was the most complex remaining feature for the next version of MININIM, that I've decided to give the 1.0 version number instead of 0.11.

Have fun!
Bruno Félix Rezende Ribeiro (oitofelix)
MININIM author
User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 5743
Joined: April 9th, 2009, 10:58 pm

Re: MININIM 0.10

Post by Norbert »

oitofelix wrote:The documentation is up to date.
If I'm not mistaken during this beta testing phase, we should convert the input Texinfo file(s) to PDF ourselves, correct?
I'm trying to use texi2pdf but run into this error:

Code: Select all

./mininim.texi:74: Undefined control sequence.
@SETpackage ->@PACKAGE 
                       _NAME @set tarName @PACKAGE _TARNAME @set version @PA...

@expandablevalue ...@else @csname SET#1@endcsname 
                                                  @fi 
@valuexxx #1->@expandablevalue {#1}
                                   @endgroup 
<argument> @value {package}
                            @value {version}
@\title ...ox {@titlefonts @raggedtitlesettings #1
                                                  @par }@finishedtitlepagefa...
l.74 @title @value{package} @value{version}
I haven't looked into how to fix this error, because it's 1:40am here and I need to go to bed. :)

Perhaps you could provide us with a basic textual overview in a forum post of the most relevant commands and key combinations that will allow us to access and test the new features.
Post Reply