This archive has been exported from a Fossil repository at local date 2022-08-06T22:22:49+03:00 Repository information ====================== project-name: Petra Engine repository: /home/badsector/Code/fossils/petra.fossil local-root: /home/badsector/Code/PetraEngine/ config-db: /home/badsector/.config/fossil.db project-code: bbedd26f2dab4c6d1c5e00a6d4816830df291bbb checkout: 545d6e72514526b9379593a2e137d3fabdc1b6eb 2022-08-06 19:18:42 UTC parent: 685fc0bdaa1cabfc9f022eca4660c17bf14d66d9 2022-08-06 19:15:01 UTC tags: engine-0.2, trunk comment: Update readme (user: badsector) check-ins: 61 Full timeline ============= === 2022-08-06 === 19:22:09 [a2940fb727] Edit [545d6e72514526b9|545d6e7251]: Add tag "engine-0.2". (user: badsector) 19:18:42 [545d6e7251] *CURRENT* Update readme (user: badsector tags: engine- 0.2, trunk) 19:15:01 [685fc0bdaa] Add a "utils" target for build.sh that builds the MakePAK, MakeRAW and PalConv utilities under the Build directory. (user: badsector tags: trunk) 19:10:19 [0a774812b5] Add two utilities, MakeRAW that can be used to convert image files understood by FCL-Image to 8bit RAW files used by the engine and PalConv that can be used to convert between JASC and GIMP palette files. Also make makepak a regular Free Pascal program as it doesn't really need to be a Lazarus project. (user: badsector tags: trunk) 19:05:04 [d88a96d3e5] Remove now unnecessary PaletteNeedsUpdate flag in renderer. (user: badsector tags: trunk) 19:04:45 [bec3250982] When applying the palette in FBRaster make sure the untinted low 0..15 indices are also applied. (user: badsector tags: trunk) 18:53:44 [1de7b40d51] A bunch of changes: 1. Provide functionality in UEdBoot for entering play mode in editor boot with specific map (can be used to quickly test new gameplay code by running the editor from Lazarus without going through the load file, pick file in dialog, enter Play mode, etc procedure). This is done via the RunEditorAndPlayMap procedure. 2. Allow registering custom editor tools in menus using either callbacks or a form class to be shown for the tool. The TMain class (main form) now exposes a few methods that can be used by tools to manipulate the edited world. 3. Add a new entity class, TPieceModelEntity, which uses PMF models and can play 3D animations. 4. Allow previewing animations in the editor. 5. When playing the game in the editor ensure the game is initialized and shut down properly. 6. Add a new option in grids to use "smooth floors", treating the floor height in cells as heights in a heightmap - thus allowing the creation of simple terrain. This also affects the floor height reported by the engine so that it follows the smooth surface. 7. Add cell texture rotation and flipping for floor, ceiling and lower/upper walls. 8. Add an OuterWalls property in grids that can be used to generate outer walls for a grid side - can be used to generate additional geometry for connecting grids with heights of different sizes that would otherwise create gaps. 9. Add a coBlocker cell option which can be used by games to treat cells as impassable. With this option set, the ceiling and floor height are always reported as 0 regardless of their actual heights. 10. Add methods for obtaining the grid index and coordinates from a position in TGridMap. 11. For color tinting modify the palette ranges 16..255 instead of trying to find closest colors. 3D accelerated backends use tint color in triangle vertices for 3D content. 12. With palette-based color tinting allow grids to provide their own tinting values which are used when the camera is inside a grid. Also a way to smoothly transition between grid tints is provided. 13. Allow marking any mesh node as an occluder - this can be used to mark the mesh's triangles as occluders for later occlusion checks in the software renderer. 14. Add an Initialize method in TEntity that is called during world initialization. 15. Add a GetCollisionBox in TEntity that can be used to provide a different box than the visibility box for collision (mainly used by TPieceModelEntity to avoid changing the collision box all the time during animations). By default it returns the same value as GetAABox. 16. Add an OcclusionBehavior in TStaticMeshEntity that can be one of smobOcclusionCheck (default, check for occlusion against the previous frame), smobIgnoreOcclusion (always render the mesh) or smobOccluder (always render and generate occlusion data for later occlusion checks). 17. Add a DrawHUDImage method in TRaster and TRenderer, meant to draw parts of a texture (or the entire texture) on screen during gameplay (i.e. outside of screens which need to be shadowed in hardware accelerated backends, something that is slow in retro 3D hardware). Note that while all xxRaster units have been updated, only the FBRaster (software rendering) and GLRaster (OpenGL rendering) have been tested - the rest have untested empty methods. 18. Add a BackgroundColor property in TWorld to override the color used to clear the background when rendering (by default uses the fog color) 19. DrawTexturePart has been removed as it provided a similar functionality to DrawHUDImage but by going through the shadow textures. This means that Post Apocalyptic Petra's dialog screens will need to be updated when the game is updated to use the Petra Engine instead of its own. 20. Implement texture transparency support for OpenGL 21. Provide a setting to cap the FPS to a some value (note that this is somewhat limited by the fact that timing uses milliseconds as integers, so any FPS value will be truncated to whatever its closest in milliseconds is - the default is 500 fps which should fit fine), mainly for avoiding coil whine noises in modern GPUs running the engine at thousands of FPS. 22. Add a GameData IntPtr property in TGrid, 23. Minor cosmetic changes and fixes in the editor (user: badsector tags: trunk) 18:21:02 [9c4b3d968b] Add transparency checking (index 255 is treated as transparent) in textures. (user: badsector tags: trunk) 18:19:08 [672020e13b] Fix texture directory location when loading PMF files (user: badsector tags: trunk) 18:18:08 [33082a5d41] Remove unnecessary warning due to FPC var-vs-out stupidity (user: badsector tags: trunk) 18:17:08 [57888003c0] Remove unnecessary warning due to FPC var-vs-out stupidity (user: badsector tags: trunk) 18:15:30 [138ec64965] Add previously missing fallback resource files (user: badsector tags: trunk) 18:14:36 [406cfe2533] Update editor project file to ignore some pointless messages (user: badsector tags: trunk) 18:06:27 [1e81ae82d4] Make data table editor resizable. (user: badsector tags: trunk) 17:15:25 [5533809dd0] Add SubAndScale in TVector and IsValid in TAABox (user: badsector tags: trunk) === 2022-07-25 === 22:34:45 [e57d989787] Edit [aac6aec68a5524eb|aac6aec68a]: Add tag "engine-0.1". (user: badsector) 22:34:42 [ad9c6d3eab] Edit [aac6aec68a5524eb|aac6aec68a]: Cancel tag "engine- 0.1". (user: badsector) 22:34:22 [aac6aec68a] DOS DMA for SB16 fix (originally fixed ages ago in the Post Apocalyptic Petra code but didn't commit it to Fossil). (user: badsector tags: engine-0.1, trunk) 22:30:30 [70324cbb20] Edit to wiki page "Petra Engine" (user: badsector) 22:30:24 [2c13e2d235] Edit to wiki page "Petra Engine" (user: badsector) 22:30:15 [f489a777ad] Edit to wiki page "Petra Engine" (user: badsector) 22:30:08 [c86d300fca] Add wiki page "Petra Engine" (user: badsector) 22:29:27 [50f0070e1f] Edit to wiki page "Post Apocalyptic Petra" (user: badsector) 22:28:27 [ba65e41c5c] Edit [5783a5ee9174a050|5783a5ee91]: Add tag "engine-0.1". (user: badsector) 22:27:31 [5783a5ee91] Removed all code and data assets that had to do with Post Apocalyptic Petra so that the engine ("Petra Engine") is now a standalone project independent from the game itself. A simple "template" game has been added (in GameSrc and GameData) as well as GNU Bash-based scripts for making new games and building them, which should help with using the engine in various projects. Currently the tools (config, wincfg, installer, etc) are not part of the build process and not all platforms originally supported by Post Apocalyptic Petra are supported by build.sh - the code is there, just not hooked up yet. (user: badsector tags: engine-0.1, trunk) === 2022-06-02 === 19:43:26 [a55f89e68e] Edit [59f83fb41763f881|59f83fb417]: Add tag "version- 0.99o". (user: badsector) 19:43:09 [59f83fb417] Minor cosmetic code change. (user: badsector tags: trunk, version-0.99o) 19:42:37 [882c289a97] Update version to 0.99o (user: badsector tags: trunk) 19:00:23 [06f277342e] Adjust sound buffers for Windows. (user: badsector tags: trunk) 18:45:59 [aff5a61737] Fix building the editor under Windows. (user: badsector tags: trunk) 18:45:24 [51ec2518ff] Use FPC 3.2.0 for DOS builds (user: badsector tags: trunk) === 2022-01-17 === 22:29:05 [47e4cecaf8] Add a progress bar during loading, make editor stop the game when selecting Quit from inside the game and ignore Tab when in play mode. (user: badsector tags: trunk) 21:35:37 [9da2478ef5] Fix off-by-one error and pitch use (user: badsector tags: trunk) 20:49:35 [7f44533a8c] Replace StretchDraw in TEditorGraphicsDriver with manual stretching that is both faster and crisper. (user: badsector tags: trunk) 20:47:19 [c2f0cd41d1] Add a GGameTitle global for the game's title. Make SDL backend use it. (user: badsector tags: trunk) === 2022-01-16 === 13:40:08 [29f1b12cd3] Fixing line endings to be DOS/Windows instead of Unix (user: badsector tags: trunk) === 2022-01-14 === 22:17:25 [872ad9dfae] Fix SB16 buffer initialization. (user: badsector tags: trunk) 22:17:02 [5b19e6163c] Add a SHOWFPS define in Engine.pas to show FPS (assumes SW rendering) (user: badsector tags: trunk) 22:16:26 [d75b4c650b] Add FORCEWIRE define in FBRaster to force wireframe rendering outside of the editor. (user: badsector tags: trunk) 22:15:55 [181c077c7c] Move CalcQuadsAABox in its own method (user: badsector tags: trunk) 22:15:31 [52fd20105c] Optimize SDL output scaling (user: badsector tags: trunk) 22:15:09 [e7ad186b3b] Add MoveBy in TAABox to move a box by a delta vector (user: badsector tags: trunk) 15:49:45 [19c02067f7] Remove unused debugging variable from WasRectOccluded and also bring back the LastMaxSpanZ test that was commented out during some debugging check that i forgot to uncomment. (user: badsector tags: trunk) 15:44:09 [c772072833] Add occlusion tests against span data recorded from the last frame to avoid rendering meshes and portals that are occluded by triangles explicitly marked as occluders (currently gridmap walls and floor/ceiling). (user: badsector tags: trunk) === 2022-01-12 === 21:16:26 [a65bb60245] Remove any editor rects when showing portals is disabled. (user: badsector tags: trunk) 20:55:50 [869726d6dd] Split and move the IsBoxVisible check from TWorld to TScene (for sector checks) and TRenderer (for camera checks) since these have nothing to do with the world. (user: badsector tags: trunk) 15:41:01 [3c7ea665fe] Replace PVS with portals that should provide better occlusion culling. Also add debug quads and screen-space rects for editor builds that can be used to visualize and debug issues. (user: badsector tags: trunk) === 2022-01-10 === 16:09:06 [a915a2fc85] Do double buffering in CPU instead of using HW backbuffer in DirectDraw. (user: badsector tags: trunk) 14:54:13 [af40f057bb] Minor cleanup (user: badsector tags: trunk) 14:29:57 [88f6cc5f98] 1. Add PVS locking, triline disabling and stats in editor 2. Make IsBoxVisible treat boxes beyond the camera's far clip plane as invisible (user: badsector tags: trunk) 13:35:11 [6b9ec20244] 1. Port editor to Linux, use LCL for graphics and OpenAL for audio. 2. Fix Alt, Ctrl, etc masking in editor 3. Show Flush- without-draw metric in SPEEDSTATS 4. Store RenderTris as individual objects for faster sorting (for preparation for non-triangle sortables like sprites) 5. Adjust audio buffers and buffer size yet another time... 6. Add audio lock/unlock calls when modifying samples to avoid threading issues 7. Add support for 8bit textures in Direct3D (can be disabled from config) 8. Mess around a bit with S3D backend (not working still) 9. Disable vsync for DirectDraw backend to match DOS behavior (user: badsector tags: trunk) === 2022-01-04 === 01:48:40 [2f00ce156a] Add the ability to load data from PAK files and a utility to create them. Optionally the game can be built with the PAK file embedded in the executable. (user: badsector tags: trunk) === 2021-12-02 === 16:10:23 [c8c697fab0] Add wiki page "Post Apocalyptic Petra" (user: badsector) 15:57:51 [6d85fa4965] Add unfinished Dungeon Crawler files. (user: badsector tags: trunk) 15:54:38 [1e637cd405] Post Apocalyptic Petra WIP import from unversioned code. (user: badsector tags: trunk) 15:40:15 [9edf837222] Edit [5339b821213ea56b|5339b82121]: Add tag "version- 0.99n". (user: badsector) 15:35:46 [de00945ab1] Edit [7f4c0f093f247768|7f4c0f093f]: Add tag "version- 0.99m". (user: badsector) 15:32:02 [294a49cb26] Edit [34e497501336fbbf|34e4975013]: Add tag "version- 0.99l". (user: badsector) 15:31:42 [0231f742b4] Edit [34e497501336fbbf|34e4975013]: Edit check-in comment. (user: badsector) 15:22:27 [8c765fb1fb] Edit [905d8643da66235b|905d8643da]: Add tag "version- 0.99k". (user: badsector) 15:18:04 [c923d12a20] Edit [6bc55a1477468fdb|6bc55a1477]: Add tag "version- 0.99j-gcw0". (user: badsector) 15:15:53 [98ec36cf34] Edit [46aa7497d54582c7|46aa7497d5]: Add tag "version- 0.99j". (user: badsector) 15:15:42 [9a992ffb84] Edit [78de945dcd53654b|78de945dcd]: Add tag "version- 0.99i". (user: badsector) 15:08:57 [9f745d5fdb] Edit [41976895fbc26578|41976895fb]: Edit check-in comment. (user: badsector) 15:04:51 [3e802044ed] Edit [2707fa3640eea965|2707fa3640]: Add tag "version- 0.99h". (user: badsector) 14:59:49 [2f652844af] Edit [41976895fbc26578|41976895fb]: Add tag "version- 0.99g". (user: badsector) 14:57:28 [579b735601] Edit [6ab41c95de68fdf2|6ab41c95de]: Add tag "version- 0.99f". (user: badsector) 14:55:19 [4be5ac6de0] Edit [7819c48f16f8c713|7819c48f16]: Edit check-in comment. (user: badsector) 14:54:41 [20196e8e81] Edit [fdfd3a7c6ef1911c|fdfd3a7c6e]: Edit check-in comment. (user: badsector) 14:50:14 [cb6b017067] Edit [fdfd3a7c6ef1911c|fdfd3a7c6e]: Add tag "version- 0.99e". (user: badsector) 14:46:44 [38f07416c9] Edit [0dbd4235b397f90a|0dbd4235b3]: Add tag "version- 0.99d-editorupdate". (user: badsector) 14:44:59 [443bf48a0b] Edit [7819c48f16f8c713|7819c48f16]: Add tag "version- 0.99d". (user: badsector) 14:35:06 [11e0242d8b] Edit [da5828b317859ce3|da5828b317]: Add tag "version- 0.99c". (user: badsector) 14:26:56 [4ec9d63c8e] Edit [fc7622069e508325|fc7622069e]: Edit check-in comment. (user: badsector) 14:26:48 [3426069a64] Edit [fc7622069e508325|fc7622069e]: Edit check-in comment. (user: badsector) 14:26:40 [a405fec04d] Edit [fc7622069e508325|fc7622069e]: Edit check-in comment. (user: badsector) 14:26:13 [67469b758a] Edit [fc7622069e508325|fc7622069e]: Edit check-in comment. (user: badsector) 14:11:17 [91fcd66d16] Edit [fc7622069e508325|fc7622069e]: Add tag "version- 0.99b". (user: badsector) 14:07:58 [2c7143cf61] Edit [7f751d43880afb96|7f751d4388]: Add tag "version- 0.99". (user: badsector) 13:59:52 [a2f6c44841] initial empty check-in (user: badsector tags: trunk) === 2021-06-12 === 19:07:00 [5339b82121] Post Apocalyptic Petra 0.99n This improves the sound backends to fix (most) glitches, especially for the DOS and Windows versions. The Windows version may still have some issues with slow CPUs under Windows 95/98, though (NT-based Windows should be fine even on slower CPUs) - this will probably need a rewrite of the sound backend to use DirectSound. Also adds a color palette cache which improves map loading times significantly with the game's own maps already precached (user maps will still need to calculate their color palette the first time they are loaded) and fixes some texture format issue with Direct3D. Full changelog: * Fixed Direct3D backend's texture format creation to support RGB555 textures which should make the game playable on S3 Virge * Reworked the sound code for all backends to improve its quality, especially for DOS and Windows under slower CPUs. It still has some glitches under Windows though, i might need to just bite the bullet and rewrite it using DirectSound. * The renderer now updates the color palette only when needed, thus avoiding unnecessary palette changes that can slow down rendering (especially under DirectDraw and DOS) * Added a palette cache to avoid recalculating the palette for each maps, improves load times considerably. The game now has a palcache.dat file which contains the cached palettes for the five maps in it (custom maps will do a recalculation the first time they are loaded and update palcache.dat) * Added a floppy disk-based installer * Separated DOS UI code from Config.pas to CrtUtils.pas to be shared with the floppy disk-based installer * Added missing shell and batch file for building the Mac OS X and SDL (under Windows) versions This release does not include a new editor because the previous one should work fine, there haven't been any relevant changes. Also no Mac OS X version because my iMac is in storage and i need to reconnect it just to make a new build - since the last version worked fine and the changes are largely about performance for older machines, i decided to avoid the hassle for now. (user: badsector tags: trunk, version-0.99n) === 2021-03-15 === 15:02:00 [7f4c0f093f] Post Apocalyptic Petra 0.99m Version 0.99m of Post Apocalyptic Petra adds a new platform: macOS. I have only tested this on macOS 10.13 (High Sierra) which is the latest version that my aging iMac (late 2009 model) supports, but it should work on any 64bit macOS from 10.8 and up. It may even work on the new M1 macs but i have no idea. It does use SDL 1.2 though and it all depends on how nice that library plays with the recent macOS versions. Here is the full changelog: * Added macOS version * Added gamma/brightness adjustment in the software rendering versions with F2/F3 * Added -window parameter for the windows version (meant to be used with the GDI version) * Optimized triangle batch search for the hardware accelerated versions (should make Direct3D versions work on even older PCs) * The editor can paste a texture from the clipboard (only for previewing) * Source changes to make possible using a different data directory (this is preparation for another game i might make with the engine) (user: badsector tags: trunk, version-0.99m) === 2020-12-05 === 11:54:00 [34e4975013] Post Apocalyptic Petra 0.99l The two big changes in version 0.99l is adding support for Android devices, including some rudimentary touch support (see below) and a big performance improvement in the 3D hardware accelerated versions. In addition a small performance improvement for the SDL software rendering versions was made to avoid unnecessary palette updates. The Android version is mainly designed with gamepad support in mind (and really mostly tested with the OUYA microconsole though i also tested it a bit with Nvidia Shield) but i decided to try and add some rudimentary touch controls. There is not any sort of visual feedback for the controls (which would clutter the screen anyway) but the control scheme is rather simple:
+--------------------+-----------------------+ | Touch anywhere
| Open/Exit Inventory | | on the left side | Cancel Code Input
| | to turn and move +-----------------------+ |
| Pick Up Item on Floor | | ^ | Confirm Code Input
| | | +-----------------------+ | (---+---)
| Perform Action (push | | | | button, activate
term,| | v | grab ledge, jump, etc)| |
| | | Also used to enter
+-----------------------+ | codes by swiping | Jump Up or Forward
| | up/down/left/right | (if running forward) |
+--------------------+-----------------------+ Important to
note that at the moment (and probably not any time soon) there is no
support for resuming the game if it loses focus: if you switch away
from the game (e.g. press the back button), the game will exit and
you'll have to start from scratch. The 3D hardware acceleration
improvement was done by batching the triangles to render per texture.
Previously the 3D hardware accelerated backends were drawing each
triangle one by one like the software rendering version but this had
overhead in slower hardware... and AMD's Windows OpenGL driver which
now is about 17 times faster than previously (for comparison Mesa
under Linux on the same GPU barely saw any difference). The Direct3D
version should now be playable even on something like a Pentium 133MHz
with a 3DFX Voodoo 1 accelerator. (user: badsector tags: trunk,
version-0.99l)
=== 2020-12-03 ===
20:30:00 [905d8643da] Post Apocalyptic Petra 0.99k Version 0.99k fixes a few
bugs and improves improves performance a bit for the hardware
accelerated backends. It also improves compatibility with OpenDingux
devices that use more recent community-made firmware. Also since the
source code for all versions is uploaded with this update and the full
manual is part of the OPK and accessible from the console itself, the
OpenDingux-specific code is not part of the archive and the game can
be distributed as an OPK file instead of a ZIP file. Here is the list
of changes: * [All] Fix duplicate inventory entries bug * [All]
Adjust the sound effect for the step sound with a low pass filter
(normally i wouldn't do that since i want to keep the game itself as
close to the jam version as possible, but the step sound effect
specifically can be a bit grating after a while) * [Direct 3D] Show
dialog to run wincfg for d3d * [Hardware 3D] Optimized animated
textures in 3D hardware accelerated versions (OpenGL, D3D) to avoid
sending the new frame data and instead use multiple hardware textures
* [GCW0] Use hardware surface and palette for the GCW Zero version to
make it more compatible with other gaming handhelds that use
OpenDingux * [GCW0] Added Y+Right shoulder button "killswitch" in
inventory screen similar to F7 for PC * [GCW0] Added proper GCW
Zero manual as part of the OPK file that is readable through the
console's interface * [Linux] Add 32bit binaries * [All] Minor
source cleanup (user: badsector tags: trunk, version-0.99k)
=== 2020-12-01 ===
20:00:00 [6bc55a1477] This is a tiny update, it doesn't affect the other
versions so i didn't change the version number. I just ported Post
Apocalyptic Petra to the open source handheld GCW Zero which is
running a Linux distribution called OpenDingux (originally made for
the Dingoo handheld but nowadays works in several other MIPS-based
gaming handhelds). This was... interesting since the official SDK is a
bit old and doesn't support Free Pascal so i had to build a cross
compiler inside a i386 Linux VM (the SDK runs on 32bit Linux, at least
officially) and *smash* it together with the SDK :-P. And modify Free
Pascal's SDL bindings to not assume there is an X11 library around.
Also i spent way too much time trying to figure out how to properly
make the binary actually run with proper dynamic dependencies and GCW
Zero's uClibc+busybox userland displaying the most helpful message
"not found" without any further info. Anyway, the Petra099jGCW0.zip
archive contains both the modified source code and the Petra099j.opk
file that can be copied to GCW Zero's /apps directory. I haven't
tried it since i do not own those, but this might also work with more
recent JZ4770-based OpenDingux handhelds like those by Anbernic.
(user: badsector tags: trunk, version-0.99j-gcw0)
=== 2020-11-29 ===
00:50:00 [46aa7497d5] Post Apocalyptic Petra 0.99j Post Apocalyptic Petra
version 0.99j is now available. This version completes the SDL
support to add audio and fixes wall texture loading under Linux. Also
adds two additional Windows executables that use SDL. The sdlpetra.exe
executabe might be the smoothest version for modern Windows that
cannot run winpetra.exe due to lack of 8bit DirectDraw support. Since
the Linux binaries need a special archive for the executable bit, i
have uploaded a separate version of the game as the
Petra099jLinux.tar.xz file. This contains the same data files as the
other version so if you just want to try the game under Linux you can
use that. Note that your distribution must have SDL 1.2 installed
since the archive does not include that (distributions may make minor
modifications to the library to better work under their environment).
If you are using Debian or a Debian-based distribution, like Ubuntu,
Mint, elementaryOS, etc, you need to install the sdl1.2debian package.
Sadly this is the first version that the release zip doesn't fit in a
floppy disk because of the three extra files (sdlpetra.exe,
sglpetra.exe and sdl.dll) :-/. Though if the archive is converted to
RAR or 7z it does fit, but then it isn't easy to open it from a DOS
machine. (user: badsector tags: trunk, version-0.99j)
=== 2020-10-04 ===
21:38:00 [78de945dcd] Post Apocalyptic Petra 0.99i The version 0.99i of Post
Apocalyptic Petra is now available. This versions adds several
performance improvements, especially in the software rendering version
- the DOS version is about +40% faster, making it playable even on a
200MHz CPU. Still not as fast as something like, say, Tomb Raider 1
(which probably wont ever happen because of the more generic 3D
engine), but at least playable in retro PCs. And on the topic of
retro PCs, this version also adds support for DirectDraw and Direct3D
7, the latter making the game playable on original 3dfx voodoo cards.
Here is the full changelog: * (Win) Added DirectDraw and Direct3D
7 backends (can now run natively in Voodoo 1!) * (Win) Added
wincfg.exe Windows-based configuration utility * (Win) Fix crash at
startup when the sound was disabled * (DOS) Added readme.bat and
readme view mode for the configuration utility * (DOS) Added
dirinfo file for Norton Commander * (SDL) Fixed SDL 1.2
compilation, the game builds. No binaries though since sound is not
implemented yet. * (All) Optimized the software renderer and
rewrote the inner loop in assembly * (All) Added frustum culling
for mesh scene nodes * (All) Added a not-so-quick-yet-still-very-
dirty PVS which is used for occlusion culling * (All) Fixed grid
geometry generator to not generate geometry for occluded faces - in
addition to improving performance, this produces a cleaner output when
the camera clip through the world geometry * (All) Rendering
optimizations give a ~+40% performance increase for the DOS version,
making it playable on a 200MHz DOS PC (though still far from smooth)
* (All) Added descript.ion file for file managers that support it
(e.g. Total Commander) (user: badsector tags: trunk, version-0.99i)
=== 2020-08-25 ===
11:55:00 [2707fa3640] Post Apocalyptic Petra 0.99h This is a large-ish
version, i had this under wraps for a while (though i wasn't really
doing anything... 99.9% of the work was done last month, i just wanted
to fix a couple of minor glitches). Version 0.99h adds hardware
acceleration support for the Windows version with an OpenGL 1.1
backend which can be used pretty much anywhere there is a 3D chip (you
can even -try to- use it with 3dfx Voodoo using the MesaFX OpenGL
wrapper... though it'll probably be a bit slow). Also there is
support for mouse controls (for both the Windows and the DOS versions)
so now you can use the mouse to turn around and WASD to move. Left and
right buttons can be used to interact and jump respectively, middle
mouse (where it exists) can be used to pick up stuff. Under Windows
the wheel can also be used to select items in the GUI screens or cycle
the numbers in the slightly reworked code entering GUI screen. In
addition to mouse controls there is also joystick/gamepad controls,
with the current mapping being made for Xbox 360/One gamepads. This
really translates buttons (and stick motion) to keyboard events so it
is far from perfect but it works good enough to sit back and relax
while playing with a gamepad. Also there is an unfinished Android
port in the source code. This compiles fine (you'll need Free Pascal's
Android cross compiler, the Android SDK and the NDK) but the game
isn't really playable. I might try to finish it at some point later.
Also note that it is only for Android devices with a gamepad (be it
something like JXD/GPD's gaming tablets, something like Nvidia Shield
TV or a phone with a bluetooth gamepad) - there is no support for
touch controls. Finally there are a couple of very minor fixes,
including fixing the animated texture for the rods in the last map
that were broken a couple of fixes ago when i changed the animated
texture naming convention and forgot to rename the rod texture's
second frame :-P. (user: badsector tags: trunk, version-0.99h)
=== 2020-06-20 ===
17:39:00 [41976895fb] Post Apocalyptic Petra 0.99g Version 0.99g is a minor
bugfix release that fixes two bugs: * A potential crash (via
unhandled exception) when accessing a computer. This was caused when
you had a selected message in a computer at an earlier level that was
at a greater index than the number of items in the computer in a later
level (e.g. if in level 2 you read the fourth disk note before
changing the map and then tried to use the computer in level 3, the
game would crash) * Windows only: exiting the game could leave the
gdipetra.exe process running, this was fixed I was planning this
version to be the one that introduces a hardware accelerated version,
but i was busy with other things and i wanted to fix these two bugs
(especially the first one that can cause someone to restart the game).
I didn't update the editor for this version since it wasn't really
affected by any of those. (user: badsector tags: trunk, version-0.99g)
=== 2020-05-18 ===
02:55:00 [6ab41c95de] Post Apocalyptic Petra 0.99f Last update fixed a timing
bug but introduced a much bigger bug itself - entity motion slowed
down. Version 0.99f fixes this. Also fixes right click camera panning
in free camera mode in the editor. (user: badsector tags: trunk,
version-0.99f)
=== 2020-05-17 ===
20:40:00 [fdfd3a7c6e] Post Apocalyptic Petra 0.99e This update adds a slightly
better Windows version that allows selecting a custom resolution. The
game still uses GDI and scales to the desktop resolution, just now it
isn't locked to 320x200 nor uses a hardcoded aspect ratio. Also the
code has been modified to compile with Free Pascal 2.2.4 which is the
last version that could create Windows 9x compatible executables,
meaning that it will now work on retro PCs - at least retro PCs
powerful enough to run the game in GDI anyway (meaning that you most
likely wont get any decent framerate unless you both the game and the
desktop is at 640x480 and you have something like a Pentium 3).
Perhaps in the future i might add a DirectDraw graphics driver. Note
that even though you can select something like a 4K resolution,
chances are that even on a modern PC the software renderer will be too
slow to run smoothly. In general i do not recommend anything above
960x540 or so. The configuration dialog that appears when you start
the game provides two automatically calculated resolutions based on
the current desktop resolution, one that is always at 200 pixels high
(so that in-game screens appear at their full size) and another that
is the closest integer scale to 320x200. In addition to the above,
this update fixes some timing issues when the game was running at low
framerate - previously the animation was using the current system time
but because the current frame was also used for some events and state
changes, these frames could be skipped, causing the events and state
changes to not happen. Now the animation time is updated at a fixed
rate synchronized with the overall engine update rate, meaning that no
events should be missed due to skipped frames. The full changelog is
this: * The Windows version of the game (gdipetra.exe) will now
display a configuration dialog before starting, allowing for custom
resolutions (an appropriate resolution for the current aspect ratio is
automatically chosen). * The Windows version also works under
earlier versions of Windows, like Windows 95 and Windows 98 (note that
this is only valid for the game, the editor still requires Windows
2000). * Game screens are now centered depending on the game
resolution (this is not ideal since at very high resolution everything
appears tiny, but fixing this would require changing how screens are
drawn - perhaps in a future update). * The aspect ratio is now
calculated properly from the resolution. * Animation time is now
updated in sync with the overall update time, fixing some issues when
running at lower framerates and using animation frames as events
(running at lower framerates skipped frames which caused events to not
be fired) and state changes (e.g. jumping forward could cause the game
to "softlock" for a few seconds). * The game code now compiles with
Free Pascal 2.2.4 which is the last version to support Windows 95.
(user: badsector tags: trunk, version-0.99e)
=== 2020-05-11 ===
04:31:00 [0dbd4235b3] I also uploaded the editor. I modified it a bit to
include a list of entities that can be useful when looking at the
existing maps and trying to figure out what is what. The new
Petra099dEditor.zip file includes the two modified source code files
but you can ignore those if you do not plan on building the editor.
(user: badsector tags: trunk, version-0.99d-editorupdate)
02:09:00 [7819c48f16] Post Apocalyptic Petra 0.99d This is a minor fix build
for pure DOS compatibility. Animated textures were defined using a
foo+n naming scheme in the filenames but pure DOS doesn't accept that.
It works under Win9x (where i was testing the code) so i didn't notice
it. The naming scheme changed to foo_n instead, which is DOS
compatible. If you are playing Post Apocalyptic Petra under Win9x
(while the GUI is running) or DOSBox this shouldn't affect you. If you
are playing under a real DOS machine without Win9x running, then you
need this fix for animated textures to work. This does affect the
editor, though only in a minor way (the editor wont have animated
textures). I will upload a new editor build later. (user: badsector
tags: trunk, version-0.99d)
=== 2020-05-10 ===
09:09:00 [da5828b317] Post Apocalyptic Petra 0.99c This version fixes an
important bug with the keyboard input handler that caused Petra to
walk slowly when the numlock key was on and the player used the arrow
keys from the arrow pad instead of the numpad. The keyboard handler
was mostly rewritten and tested with several PCs, so it should now
work properly. Also new functionality was added, including a
configuration utility and launcher for custom maps. The changelog is:
* Added CONFIG utility for configuring settings and launching user
maps * Added the ability to configure the Sound Blaster 16 port,
DMA and IRQ * Added a setting to disable sound completely (can make
the game somewhat bearable in slower systems) * Added notifications
when the game is loading a map (previously it could appear as if the
game crashed, but it was just taking a long time) * Made sound to
stop between load maps (previously the sound buffer looped, again
giving the impression that the game crashed - especially on slower
systems) * Maps are now first checked under the 'User' directory
before the 'Data' directory, allowing for user maps to be placed there
(the CONFIG utility will also display maps and text files under the
User directory) * Added a very simple example 'pool' map * Added
a "failsafe" key in the inventory screen in case the user gets stuck:
pressing F7 while the inventory screen is open will kill Petra,
causing her to teleport back to the map start * Fixed keyboard
handler bug with arrows and numlock which caused Petra to walk instead
of running when numlock was on and the arrow pad was used instead of
the numpad arrows Again, i didn't update the editor since none of the
changes above really affect it. (user: badsector tags: trunk, version-
0.99c)
=== 2020-05-09 ===
09:16:00 [fc7622069e] Post Apocalyptic Petra 0.99b Day #1 patch :-P *
Fixed a bug with the camera at the last puzzle * Fixed a collision
bug in map 4 The editor is still at 0.99 version since the camera bug
didn't manifest itself in the editor, so no need for an update. (user:
badsector tags: trunk, version-0.99b)
06:42:00 [7f751d4388] Post Apocalyptic Petra 0.99 files (user: badsector tags:
trunk, version-0.99)
+++ end of timeline (96) +++
End of export notice