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