SDLPoP v1.17 release

Open-source port of PoP that runs natively on Windows, Linux, etc.

Moderator: English Moderator Team

David
The Prince of Persia
The Prince of Persia
Posts: 1340
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

SDLPoP v1.17 release

Postby David » January 21st, 2017, 7:50 pm

I think there should be a separate thread for releases, so here it is...

And here is the Release Candidate of SDLPoP v1.17. (Windows binaries+source, as usual.)
Attachments
SDLPoP_v1.17RC.zip
(4.71 MiB) Downloaded 36 times

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP releases

Postby Norbert » January 22nd, 2017, 12:05 am

David wrote:I think there should be a separate thread for releases, so here it is...


Why not one thread per release.
Then the last release isn't on page 10 and comments in the thread are related to a particular release.
The last release was more than a year ago, and a dozen extra threads shouldn't be a problem either.

David wrote:And here is the Release Candidate of SDLPoP v1.17. (Windows binaries+source, as usual.)


Falcury, replay recording should probably auto-end when the prince enters the princess room.

Also, in doc/Readme.txt it says "* Ctrl-J: joystick mode (implemented by segrax) / gamepad mode (implemented by Norbert)".
These "implemented by" texts can be removed. Similar text is already included elsewhere in the file.

Falcury
Wise Scribe
Wise Scribe
Posts: 292
Joined: June 25th, 2009, 10:01 pm

Re: SDLPoP releases

Postby Falcury » January 22nd, 2017, 1:10 pm

Norbert wrote:Falcury, replay recording should probably auto-end when the prince enters the princess room.

OK, on it!

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP releases

Postby Norbert » January 22nd, 2017, 3:07 pm

By the way, what is the princess room is something that various mods customize.
It is something both CusPop and apoplexy can modify. Both the level and the room.
I didn't check, but it may be the only thing apoplexy can modify but SDLPoP can not.

Falcury
Wise Scribe
Wise Scribe
Posts: 292
Joined: June 25th, 2009, 10:01 pm

Re: SDLPoP releases

Postby Falcury » January 22nd, 2017, 5:58 pm

Norbert wrote:By the way, what is the princess room is something that various mods customize.
It is something both CusPop and apoplexy can modify. Both the level and the room.
I didn't check, but it may be the only thing apoplexy can modify but SDLPoP can not.

In fact, SDLPoP can't modify most special events (yet)... the level 3 checkpoint and skeleton wake-up event, the level 4 mirror appearance (etc.) are other examples.
Well, you could change the hard-coded values in the source code and recompile, of course... But I think you meant being able to modify the behavior without recompiling, right?

Norbert wrote:Falcury, replay recording should probably auto-end when the prince enters the princess room.

Done, among other things:
viewtopic.php?f=126&t=3925&p=20578#p20578

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP releases

Postby Norbert » January 22nd, 2017, 6:07 pm

Falcury wrote:But I think you meant being able to modify the behavior without recompiling, right?



David
The Prince of Persia
The Prince of Persia
Posts: 1340
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: SDLPoP releases

Postby David » January 28th, 2017, 4:36 pm

Norbert wrote:Why not one thread per release.
Then the last release isn't on page 10 and comments in the thread are related to a particular release.
The last release was more than a year ago, and a dozen extra threads shouldn't be a problem either.

Renamed the topic from "SDLPoP releases" to "SDLPoP v1.17 release".

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP v1.17 release

Postby Norbert » January 29th, 2017, 11:24 pm

Falcury, if David doesn't get to it this weekend, maybe you could publish RC2?

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP v1.17 release

Postby Norbert » January 31st, 2017, 12:56 pm

Norbert wrote:Falcury, if David doesn't get to it this weekend, maybe you could publish RC2?


I would do it myself, but I'm on GNU/Linux and don't have everything properly set up to compile and link an SDLPoP executable for Windows. I'd have to look into cross-compiling it or configure Dev-C++ or something similar via Wine. Since you are actively developing SDLPoP on a Windows platform, it's probably almost no work for you at all. We could wait for David, but he's only here around Saturday evening/Sunday morning, which is almost a week away from now. Then we'd have RC2 available for testing; testing takes time. Yet another week would pass, and then 1.17 would be released... maybe. There are 121 entries for 1.17 in the changelog, and the previous release was 13 months ago. I don't think 1.17 needs to be flawless. If there's a bug, 1.18(*) can be released the next day with a bug fix. Currently, end users are no longer in the loop (RERO context). At least not the non-developers, unless they happen to have found this thread. SDLPoP 1.16 is one of the packages that's being downloaded the most from popot.org. Probably a big chunk of those downloads are from me/us, but still. What I'm trying to convey is my belief that end users are on social media and general websites, not on this forum or on GitHub. There are billions of potential users out there. I think with more frequent releases, users may be more inclined to check back for news and test/use new features. More releases could mean more 'press', more Tweets, more opportunities to reach people. I also think the more time between releases, the more 'afraid' developers may become to release anything, because missing a bug becomes a much bigger deal. The polishing may never end. How about a monthly release cycle: simply check the changelog and if there were any changes, release a new version. I have always created and included a GNU/Linux executable in the packages, and I don't mind adding them to popot.org once a month. Just some thoughts.

(*) Yes, 1.17.1 would make more sense, but I'm trying to make a point. ;)

Falcury
Wise Scribe
Wise Scribe
Posts: 292
Joined: June 25th, 2009, 10:01 pm

Re: SDLPoP v1.17 release

Postby Falcury » February 1st, 2017, 1:28 pm

Norbert wrote:Falcury, if David doesn't get to it this weekend, maybe you could publish RC2?

OK, here is a new release candidate for version 1.17.

The updated changelist:
Spoiler: show
2017 February ??
=================
(version 1.17)

General changes:
CHANGE: Moved source to src/. (That is, merged the with-folders branch into master.)
DONE: Moved OSX documentation to Readme.txt. Upgraded information there. Removed TODO text for the SDL2 port.
DONE: Added sources and fake tiles to Readme.
DONE: Added Markus installation method with brew install for OSX to the readme.
CHANGE: Updated OSX make command in Readme.
DONE: Updated forum link in Readme.
DONE: Added some contributors and thanks to the Readme.
DONE: Removed some old unneeded files.
DONE: Added comments to explain the available options in SDLPoP.ini
DONE: Add info on the "mod" command line option to doc/Readme.txt
DONE: Allow opening DAT files from the data/ directory as well; Moved DAT files to data/ to clean up the main folder.
CHANGE: Folders in the data/ directory no longer have the .DAT extension, so they can coexist with .DAT files.
FIXED: Removed Dev-C++ note from Linux Makefile.
FIXED: Use Mix_Music instead of Mix_Chunk to play music files. This reduces loading time. (contributed by @usineur)
FIXED: Fixed Dávid's name in the header comments.
DONE: Added an icon.

Miscellaneous game additions, changes, bug fixes:
CHANGE: Let time just run when quickloading immediately after quicksave
FIXED: Changed the RGB/BGR hack: check whether SDL2 bug occurs before applying RGB24 workaround.
FIXED: Fixed fake tiles randomly appeared in place of the disappearing sword.
FIXED: Fixed crashing on certain custom DAT files.
FIXED: Don't crash if some (or all) data files are missing.
CHANGE: Increased sound buffer size to remove noise.
CHANGE: Increased sound output settings to CD quality. (That is: 44100 Hz, 16-bit, Stereo.)
FIXED: Audio: Changed 16-bit to signed. (@vanfanel wrote this is needed on the Raspberry PI.)
FIXED: Fixed bug (and compiler warning) in redraw_at_cur_mob(). (Reported by @petervas.)
CHANGE: Change default of use_fixes_and_enhancements to false
FIXED: Don't repeat Alt+Enter.
FIXED: Alt+Enter should not un-pause the game.
CHANGE: Debug timer: display in top left corner, toggle with T
FIXED: Added a way to enable debug cheats: use command-line parameter "debug"
FIXED: Do not accept filenames as valid command-line parameters in check_param()
FIXED: Reduced flickering when text is drawn.
DONE: Added info screen shown at startup, with some explanation about SDLPoP.
FIXED: Fixed quickload penalty being applied even after time has stopped (after Jaffar has been killed)
FIXED: Fixed guards sometimes turning around immediately after quickloading (because is_guard_notice is not set to zero)
FIXED: Silenced warnings being printed about image 255, after entering an exit door.
FIXED: Fixed graphics bug with SDL 2.0.5 (contributed by @zaps166)
DONE: Added command-line parameter --version, -v: Display SDLPoP version and quit.
DONE: Added command-line parameter --help, -h: Display help and quit (points to the Readme).
DONE: Added command-line parameter seed=number: Set initial random seed, for testing.

Improved controller support:
DONE: Improved controller support; migrated to SDL_GameController API (reported by @EndeavourAccuracy).
DONE: Implemented two settings for joystick control: horizontal-only (default; idea and original implementation by @EndeavourAccuracy) and all-directional.
CHANGE: Controller: Remapped Quit to Start (was B).
DONE: Added haptic feedback (when the kid is hurt) for controllers with a rumble motor.

Support for playing mods/custom levelsets:
DONE: Added ability to organise mods into their own directories
DONE: Use a custom configuration file (mod.ini) for each mod
DONE: Allow choosing a levelset from the command line; usage: prince mod "Mod Name"
CHANGE: Use a separate Hall of Fame file when playing a custom levelset
CHANGE: Use a separate QUICKSAVE.SAV / PRINCE.SAV when playing a custom levelset

New customization/modding features:
DONE: CusPop option: start upside down
DONE: CusPop option: start in blind mode (slightly buggy)
DONE: CusPop option: set level before which the copy protection level appears
DONE: CusPop option: set up edges of the level
DONE: CusPop option: enable dungeon WDA in palace environment
DONE: Allow disabling the time limit completely (by setting 'start_minutes_left' to -1 in SDLPoP.ini)
DONE: When time is unlimited, show how much time has passed instead of how much time is remaining
DONE: CusPop option: change the hard-coded color palette
DONE: CusPop option: change the first level (starting level)
DONE: CusPop option: skip title sequence
DONE: CusPop option: set up effect of Shift+L in non-cheat mode
DONE: CusPop option: set up cutscenes

Replay improvements:
CHANGE: Replays get saved to the replays/ directory, have more recognizable names, and are played back in reverse creation order.
DONE: Allow changing the folder where replays are kept.
CHANGE: The replay format was changed -- older replays will no longer work!
CHANGE: Replay format: added magic number 0x50 0x31 0x52 ("P1R")
CHANGE: Replay format: replaced version strings with class, version and deprecation numbers that can be used to determine whether a replay is compatible.
CHANGE: Replay format: added the time of the recording (Unix time) to the replay format.
CHANGE: Replay format: added the name of the program that created the replay to the replay format.
CHANGE: Replay format: stored replay options are now split up into several sections.
CHANGE: Replay format: use 32-bit sizes independent of platform (32 or 64 bits).
CHANGE: Gameplay options are now stored differently in replays.
FIXED: Incompatible replays will be skipped in the cycle order.
FIXED: Added more informative error messages if a replay is incompatible.
FIXED: Fixed being unable to unpause while replaying.
FIXED: Fixed replays running out of sync when the end of a temporary effect is triggered by the music stopping (level 1 start, feather fall).
FIXED: Fixed several bugs that could cause crashes when a replay file is loaded.
DONE: Replay: show error message in a dialog box if replay loading failed.
DONE: Replay: stop the replay upon reaching the Princess room.
CHANGE: Don't play end level music while recording or replaying. (Reduces waiting time and improves reproducibility.)
DONE: Added a save dialog for replays. This replaces the automatically generated filenames for replays. Pressing Escape discards a replay.
DONE: Replay: start recording immediately if Ctrl+Tab pressed on the title screen.
DONE: When trying to quickload while recording, show the 'save replay' dialog.
FIXED: Fixed replay reproducibility across multiple levels. (Preserve the random seed to prevent going out-of-sync.)
DONE: Press F or Shift+F to skip forward through replays (F: skip to next room, Shift+F: skip to next level).
DONE: Added command-line option for validating replays, usage: prince validate "replays/replay.p1r"

Fixes for gameplay and drawing bugs, that are also present in the original Prince of Persia for DOS:
DONE: Added remembering guard hitpoints. (optional fix/enhancement)
FIXED: Fixed the kid being able to glide sideways through the top sections of walls/tapestries while in freefall.
FIXED: Fixed the kid dropping through tiles when dropping down from a tapestry.
FIXED: Fixed the landing animation aborting when landing against a gate or tapestry+floor instead of a wall.
FIXED: Fixed crashing from guards on level 14.
FIXED: Improved fix for "standing on thin air" bug.
FIXED: Fixed new falling bug caused by "glide through wall" fix, as well as a second wall glitch.
FIXED: Fixed unintended sword strike immediately after drawing sword.
FIXED: Fixed retreating out of a room without the room actually changing.
FIXED: Fixed running jump through tapestry.
DONE: Added test level for jumping through tapestry.
FIXED: Fixed guards being pushed into walls.
FIXED: Fixed jumping through a wall above a closed gate.
FIXED: Alternate fix for drawing bug when gates are stacked on top of each other.
FIXED: Alternate fix for drawing bug when climbing up to a floot with a big pillar top behind.
FIXED: Fixed chompers not starting when grabbing a ledge.
FIXED: Fixed offscreen guards not reappearing in adjacent rooms.
FIXED: Fixed feather fall effect being interrupted by a level door opening.
FIXED: Removed audible 'click' after the swinging sword sound. (contributed by @zaps166)
FIXED: Fixed unintended movement after putting the sword away (because controls do not get released properly).

Build changes, source code, refactoring:
DONE: OSX port upgraded from SDL to SDL2. Mixer library added in makefile and documentation. Tested.
DONE: Merged both makefiles. Now make is fully portable.
CHANGE: Updated CMakeLists.txt
FIXED: Removed duplicate const to avoid warnings in default gcc settings on OSX. Commented an always-true if.
DONE: Removed unneeded libraries from Dev-C++ projects.
DONE: Add OSX build configuration for CMake
FIXED: config: compile with USE_MIXER undefined
FIXED: Added extern to all variables in data.h.
FIXED: Removed duplicate definition of timer_stopped.
DONE: Also changed 0 to timer_0 where appropriate.
DONE: Visual C++ (NMake) support
CHANGE: Changed COUNT to sizeof in memset.
DONE: Added missing color ids, using the color names of the default EGA palette
CHANGE: Set minimum CMake version required to 2.8
DONE: Added some comments in land().
FIXED: Added range checks in load_frame().
FIXED: Added newline at the end of error messages that didn't already have one.
FIXED: Make NMakefile and unistd_win.h non-executable
DONE: Add optimization level (O2) to Makefile, silence uninitialized warning
DONE: Remove CMakeLists.txt in root directory
DONE: Added optimization (-O2) to Dev-C++ release project as well.
DONE: Add .editorconfig
DONE: Added maximum path length macro POP_MAX_PATH set to 256
CHANGE: Refactor so that HOF path is obtained from get_hof_path()
CHANGE: Refactor: removed options_type (replacement: options are stored using SDL_RWops streams).
DONE: Added new exceptions to .gitignore.
FIXED: Ignore replay options in SDLPoP.ini if USE_REPLAY is not defined
DONE: Added -std=gnu99 to the Dev-C++ project files.

Because David hasn't yet closed or merged the alternate icon PR, I created separate versions for each of the icons.
The first one has the gears icon, the other one (with "_alticon" added to the filename) has the alternate icon.

We could handle the remaining pull request by segrax (providing MSVC compatibility for the replay code) after the 1.17 release, I think.
Attachments
SDLPoP_v1.17RC2.zip
(4.64 MiB) Downloaded 20 times
SDLPoP_v1.17RC2_alticon.zip
(4.64 MiB) Downloaded 10 times

User avatar
Norbert
The Prince of Persia
The Prince of Persia
Posts: 2954
Joined: April 9th, 2009, 10:58 pm
Contact:

Re: SDLPoP v1.17 release

Postby Norbert » February 1st, 2017, 2:48 pm

Falcury wrote:OK, here is a new release candidate for version 1.17.


The following doesn't need to be in 1.17, just some suggestions.

fread() is currently used without checking the return value.
This is not necessarily a problem, but gcc complains about it.
A workaround is to replace fread calls with a custom function:

Code: Select all

int cfread (void *ptr, size_t size, size_t nmemb, FILE *stream)
{
  return (fread (ptr, size * nmemb, 1, stream));
}

This both: a) makes the gcc warnings disappear, and b) should make checking the return value easier, if anyone ever wanted to.

chdir() is currently used without checking the return value.
Something like this could be used...

Code: Select all

if (chdir(exe_dir) == -1)
{
  fprintf (stderr, "chdir failed: %s\n", strerror(errno));
}

...if "#include <errno.h>" is moved from seg009.c to common.h.

fprintf(stderr, error_message);
Gives a warning that disappears when this is used instead:
fprintf(stderr, "%s", error_message);

I noticed my level 1 replay of David's mod plays without adding the mod.
This surprised me. The savestate includes the whole level, or?

Falcury
Wise Scribe
Wise Scribe
Posts: 292
Joined: June 25th, 2009, 10:01 pm

Re: SDLPoP v1.17 release

Postby Falcury » February 1st, 2017, 6:00 pm

Norbert wrote:The following doesn't need to be in 1.17, just some suggestions.

All right, noted!

Norbert wrote:I noticed my level 1 replay of David's mod plays without adding the mod.
This surprised me. The savestate includes the whole level, or?

Yes, the savestate includes the level. Only the level that is loaded at the start of the replay, though.
It would of course be possible to embed more levels for multi-level replays (as needed). Perhaps we should add that to the format at some point.
Or, maybe there should just be some kind of warning, if a custom asset was expected but could not be found.

David
The Prince of Persia
The Prince of Persia
Posts: 1340
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: SDLPoP v1.17 release

Postby David » February 4th, 2017, 12:19 pm

So, after merging the new changelog (and replacing "February ??" with the actual date), can I now make a final release?

Norbert wrote:I also think the more time between releases, the more 'afraid' developers may become to release anything, because missing a bug becomes a much bigger deal. The polishing may never end.

So true...

Falcury wrote:While viewing a replay, you can press F to skip forward to the next room, or Shift+F to skip to the next level.

That's interesting!
Might be useful if someone wants to see the solution of a particular level/room.
(Or to skip slow/boring parts... :) )

Norbert wrote:(*) Yes, 1.17.1 would make more sense, but I'm trying to make a point. ;)

Did you too notice that SDLPoP version numbers became in-sync with year numbers? :)

Falcury
Wise Scribe
Wise Scribe
Posts: 292
Joined: June 25th, 2009, 10:01 pm

Re: SDLPoP v1.17 release

Postby Falcury » February 4th, 2017, 12:49 pm

David wrote:So, after merging the new changelog (and replacing "February ??" with the actual date), can I now make a final release?

Yeah, go for it! :)

David wrote:Added the gears icon: https://github.com/NagyD/SDLPoP/commit/ ... 49d4b5450d
I'm not fully sure if this will be the final icon, though...

Then, if you want to keep using the gears icon, could you close the alternative icon pull request?
The decision seems to be 'in limbo'... ;)

David
The Prince of Persia
The Prince of Persia
Posts: 1340
Joined: December 11th, 2008, 9:48 pm
Location: Hungary

Re: SDLPoP v1.17 release

Postby David » February 5th, 2017, 9:45 am

Falcury wrote:Yeah, go for it! :)

Okay, here it is.
Attachments
SDLPoP_v1.17_release.zip
(4.72 MiB) Downloaded 29 times


Return to “SDLPoP”

Who is online

Users browsing this forum: No registered users and 1 guest