profile
viewpoint
If you are wondering where the data of this site comes from, please visit https://api.github.com/users/NY00123/events. GitMemory does not store any data, but only uses NGINX to cache data for a period of time. The idea behind GitMemory is simply to give users a better reading experience.

nukeykt/NBlood 325

Reverse-engineered ports of Build games using EDuke32 engine technology and development principles (NBlood/Rednukem/PCExhumed)

sulix/omnispeak 240

An open-source re-implementation of "Commander Keen in Goodbye Galaxy"

NY00123/refkeen 76

Ports of Keen Dreams, the 3D Catacomb games and Wolfenstein 3D

owenmpierce/modId 3

Tool for generating graphics archive files for the 16-bit DOS games made by Id software.

NY00123/refcatabyss 1

NOTICE: Port of The Catacomb Abyss merged into https://github.com/NY00123/refkeen

NY00123/adplay-unix 0

AdPlug's UNIX console-based frontend

NY00123/adplug 0

Hardware-independent AdLib sound player library

NY00123/CatacombGL 0

CatacombGL is a Windows source port with OpenGL graphics for Catacomb 3D (1991), The Catacomb Abyss (1992), The Catacomb Armageddon (1992) and The Catacomb Apocalypse (1993).

NY00123/chocolate-doom 0

Chocolate Doom is a Doom source port that is conservative and historically accurate.

NY00123/flac 0

Free Lossless Audio Codec

push eventnukeykt/NBlood

NY00123

commit sha 9b13b2e9a8b703423327bf0ede63f05358e71af1

RR, Exhumed: Replace rand with wrand anywhere outside of LIGHTRAD2

view details

push time in 12 days

issue openedArnoAnsems/CatacombGL

Attempting to leave debug key dialog with Esc leads to the menu

Steps for reproducing in Catacomb Abyss:

  1. Press on F10+W.
  2. Press on Esc. Instead of removing the dialog, the menu will appear. In order to hide the dialog, you can press on "Enter" after adding no text.

created time in 22 days

issue openedArnoAnsems/CatacombGL

Split help screen bug

This has been reproduced in the Adventure Series with CatacombGL 0.5.3.

Screenshot from 2021-09-05 00-14-09

created time in 22 days

issue commentNY00123/refkeen

User input improvements

Thanks for your feedback!

I think that I won't change the in-game menus, while any new setting for key binding can be made accessible from the launcher.

While SDL2 is indeed used, the codebase in structured in such a way that a great deal of it isn't directly interacting with SDL2. This means, for instance, that if there's ever a case where SDL2 scancodes should be used for custom key bindings, the scancodes will first be converted to internal codes specific to Reflection Keen. Maybe the conversion will technically do nothing (at least initially), but this is how it can be done.

More generally, the idea is that SDL2 can be used for opening certain input devices (e.g., joysticks), and, whenever the program receives from SDL2 a notification about a keyboard/mouse/joystick event (e.g., a button press), it'll be processed without making a further use of SDL2.

Is x11_keytounicode.diff still relevant? Main reason I'm asking is what I see here, dating back to early 2012 and referring just to the SDL 1.2 branch: https://github.com/libsdl-org/SDL-1.2/issues/659

in catacomb3d, if you press ESC in game then the touch icons appear on screen, these shouldnt appear if that setting is off in CFG Enable Touch Controls &

touchinput=off
touchinputdebugging=false

Did you have a supported game controller connected by chance? If yes, then this is expected. Originally, before plans eventually changed, I thought that I'd maybe add support for another game which re-uses Catacomb 3-D's menus, and also lets you show help screens with the F1 key. In such a case, the touch icons would show the controller button to use as a replacement for F1.

Eventually, it didn't happen, but the UI can still be used for navigation if it's there. You maybe saw other instances of it, say when entering text in the high scores table or a cheat code.

r_shift = run isnt configurable in catacomb dos, and it isnt in reflection keen. (not a button option)

This is indeed another example of an additional key binding option that can be added in a future release.

would prefer this to be an autorun toggle

Given that this wasn't originally supported by the game, I'll need to think about that.

NY00123

comment created time in 24 days

issue openedNY00123/refkeen

User input improvements

This issue was opened for tracking the status of user input support, and also for writing details specific to supported games.

Unlike Vanilla/Chocolate Doom, a few of the covered games let you change keyboard/joystick settings from the in-game menus, while Wolf3D also covers the mouse. Additionally, there isn't necessarily a single function for processing input which impacts gameplay.

Game-specific details are following.

Keen Dreams and the Catacombs use IN_ReadControl for getting user input and translating it into data impacting gameplay. Wolfenstein 3D is only using IN_ReadControl in the menus, via wl_menu.c:ReadAnyControl.

IN_ReadControl fills a ControlInfo (CursorInfo) struct with the following fields: button0 & button1, x & y, xaxis & yaxis, dir. In the case of Wolf3D (or at least the sole uses from the menu), there are also button2 & button3.

The button fields are used for specifying actions like shooting, jumping and strafing. xaxis and yaxis encode two direction values, with the valid values being -1, 0 and 1. dir encodes both directions in a single enum value. x and y encode not just the directions themselves, but also their magnitudes. These fields are always 0 or +-127 for a keyboard, while they may have more values for mouse and joystick inputs.

With the exception of the Catacomb Adventure Series, ID_ReadControl only gets data from one device at a time, a keyboard or a joystick.

  • A mouse could theoretically be used in Keen Dreams after appropriately hex editing the config file, albeit USL_TearDownCtlPanel would effectively change this to ctrl_Joystick2 instead.
  • If such a hex edit is done for Catacomb 3-D, only the mouse will be usable for moving, strafing and the basic shooting action. It'll feel closer to its usage in the Catacomb Adventure Series. An explanation related to the series is given later.
  • For Wolfenstein 3D, the device type set for ID_ReadControl will always be a keyboard.

Keen Dreams never makes use of the aforementioned 'x' or 'y' values, so it's only the direction which matters. The data that impacts core gameplay arrives from IN_ReadControl. It may still check for other pressed keys in CheckKeys, say for debug keys or displaying the status screen.

For Catacomb 3-D:

  • c3_play.c:PollControls is used as a wrapper over IN_ReadControl. In addition to processing keyboard/joystick input via IN_ReadControl, it separately checks for mouse input, taking two mouse buttons into account and storing mouse motion in separate global variables, mousexmove and mouseymove. If a joystick is used, the (calibrated) distance of the stick from the center determines if the player is running. Otherwise, the right shift key is used as a toggle for this.
  • c3_wiz.c:ControlMovement uses the aforementioned input to pick movement and rotation speeds. Data based on mousexmove and mouseymove is accumulated with keyboard/joystick input. For the same magnitude of mouse delta, the player will move forward for a greater distance than backwards.
  • This is not all that impacts gameplay, though. In addition to the call to ControlMovement, c3_wiz.c:T_Player also checks for specific hardcoded keys representing special actions, like drinking potions or casting bolts.
  • The x and y fields of the struct returned from IN_ReadControl are used just for the aforementioned joystick "running" toggle. Mouse motion updates via mousexmove and mouseymove are the only other way for impacting the speed, on top of the keyboard's "running" toggle.

The Catacomb Adventure Series differs from Catacomb 3-D in the following manners, at the least:

  • id_in.c:IN_ReadControl may check for input from any of the supported devices, in the following order of priorities: Mouse (if present/detected), joystick (if calibrated), keyboard. It'll exclusively use input from just one of these.
  • As a side-effect, if the mouse is used in a way which impacts gameplay, then keyboard/joystick input will be ignored by IN_ReadControl. This differs from Catacomb 3-D. Other keyboard actions (say for drinking a potion) will still be functional, outside of IN_ReadControl.
  • Also, unlike Catacomb 3-D, there's no "running" toggle for moving, just for turning. Additionally, how far the joystick is moved will not impact it at all, so just a keyboard toggle will do it, using the 'V' or 'Tab' key.
  • If fast turning is enabled via the keyboard, the impact on the turning speed will be greater than in Catacomb 3-D.
  • While ControlMovement still fills mousexmove and mouseymove, most chances are they'll be set to 0, due to being done right after a call to IN_ReadControl, which reads pending mouse motion earlier.
  • Therefore, in the Catacomb Adventure Series, it's practically just IN_ReadControl which tells how mouse motion impacts movement and rotations in gameplay. This is similar to running Catacomb 3-D with the mouse as the selected input device (by hex editing CONFIG.C3D).
  • The x and y fields of the struct returned from IN_ReadControl are not used at all, except for checks in DisplayStatus that could also be done with the xaxis and yaxis fields.
  • Furthermore, DisplayStatus separately checks for hardcoded keys in order to pick a status message, say for using a zapper. In the case of a missile, it also checks the control key, not just the button0 field returned from IN_ReadControl. Since you can't change the shooting key without hex editing the config file, it generally doesn't matter, but this is still the case.

To finish, as written earlier, Wolfenstein 3D doesn't use IN_ReadControl during gameplay. wl_play.c:PollControls is used as a full replacement, including demo recording/playback. Outside of demo playback, it may accumulate input from keyboard, mouse and joystick/gamepad.

created time in a month

issue closedNY00123/refkeen

Wolf3D: Consider tampering with more mixer values (SB Pro detection)

Right now, the digitized sounds' volumes are adjusted for stereo panning. However, the original code also changes FM output levels to be the same as digitized. There are further more checks that might be considered.

The relevant code is in SDL_StartSB and SDL_ShutSB.

closed time in a month

NY00123

issue commentNY00123/refkeen

Wolf3D: Consider tampering with more mixer values (SB Pro detection)

Resolved as of v0.33.1.

NY00123

comment created time in a month

push eventNY00123/refkeen

NY00123

commit sha 05345dd10f5cf8dd54a13972e34c04ec3fe5f76b

Implement slider UI for the launcher and use it for a couple of settings. Right now, only pointer presses work, not pointer motion.

view details

NY00123

commit sha 3ba7128578acee0cc2b9ba8b3c6f0dc7082969cd

Improvement to slider UI usability: It now updates with pointer motion, in addition to mouse clicks (but to not multi-touch finger presses).

view details

NY00123

commit sha 6d5069baf979f4ca6978b3d30ab46710cc6d4692

Remove code related to BE_LAUNCHER_ENABLE_FULLSCREEN_RES_MENUITEM. The settings should still be in the cfg file, if present.

view details

NY00123

commit sha 70db6143697f3975fb680fbc9e996072baadbccf

Launcher: Migrate display number to a slider as well

view details

NY00123

commit sha 54c3908cecc03eb268aabfdf2ae9f3521ee1c1ce

Add a new SB emu setting, currently used just for Wolf3D. SB Pro and 16 allow stereo panning, while the input volume values' least significant bits are replaced with 1 if SB Pro is used.

view details

NY00123

commit sha e7b71dfe0507849c03b23dc10b4cb62ca2769bf6

A small refactor related to getting/setting volumes as done with the SB Pro

view details

NY00123

commit sha 241b6cddc8f2afd049bc778bc36e96faa3e31334

Add similar functions for controlling OPL volumes, just like what's present for digitized sounds. This is still limited to SB Pro, SB 16. Also add a compatibility macro related to Line-In for S3DNA.

view details

NY00123

commit sha 9ecddf671d6a5226890072eee1571f22bf8f3d2a

Wolf3D: If emulation of SB Pro or compatible is enabled, set FM volume to the max as it would originally be done for the SB Pro. Also make use of the macro related to Line-In for S3DNA, even though it does nothing.

view details

NY00123

commit sha 2257ad459aaea765534e163f547c2c736c483ed9

Balance the PC Speaker volume. While getting higher volumes as a default for other sounds and/or music is one thing, with the PC Speaker, this will clearly make things quite loud. So, let's reduce the max. sample value.

view details

NY00123

commit sha eb1f61b5870200b31fbfa00f5d4aab66b924e052

Add per-device volume controls, accessible from the launcher. These are independent from the sound volume manipulations that Wolf3D can make. Note that for the 2015 port of Keen Dreams, the sounds are effectively digitized, so the digitized sound volume should be adjusted.

view details

NY00123

commit sha ded92e4ea99cd8a74470af1e6cd5a8cdf677395d

Adjust SB Pro/16 mixer volumes using tables from the following thread: //www.vogons.org/viewtopic.php?t=54269

view details

NY00123

commit sha c20509824a4ba3c7f686162d336482e10390008e

Wolf3D: Fix possible compilation warnings

view details

NY00123

commit sha ad56f37fecb4e6e9c41f0644623fc84c5239ee05

Update Nuked OPL3 to git revision bb5c8d08a85779c42b75c79d7b84f365a1b93b66

view details

NY00123

commit sha 7af2ed4265c5a1c64316280bedef5b44de5e33c8

"Show version" menu: Remove a part of the text for now

view details

NY00123

commit sha 1bbd79a04e558a1c8e4a5daad1cc4a2e5fa827be

null-terminate g_be_soundSettingsChoices_sbType

view details

NY00123

commit sha e784fdec3879be5d841df847fe8df1d30dab3f15

BEL_ST_SetSBProVolumesForSource: If volBits == 0, mute the source

view details

NY00123

commit sha 164b4c5b24b67ac4ab6154cacd19bb42236a03a3

v0.33.1

view details

push time in a month

created tagNY00123/refkeen

tagrelease-20210824

Ports of Keen Dreams, the 3D Catacomb games and Wolfenstein 3D

created time in a month

push eventNY00123/refkeen

NY00123

commit sha 5cb58b11dca700af75ff394b9fc9a713a71f7180

cat3d/c3_play.c: slowturn is set but unused

view details

NY00123

commit sha 9fbe210dad7db46f3041242189dc6d701259a78b

Misc. BEL_ST_AudioMixerCallback refactor: Swap the order of the outer and inner mixing loops. This required splitting a part of the loop over the sources involving the decrease of src->out.num.

view details

NY00123

commit sha a62928b01a1ff552f9820f57472cd5b1c2c57f2a

be_cross.h: Add BE_Cross_TypedClamp

view details

NY00123

commit sha 49240427158408976cfeae0b28e1ab307d0df45a

be_audio_private.h: Add a few more definitions for sound mixing

view details

NY00123

commit sha 5cd552b38b21278c5669e9bc7c5e8017ad71d826

BEL_ST_AudioMixerCallback: This will generally increase sound volumes. Instead of outputting the average of the sources' matching samples, calculate the sum and then clamp the result. A problem with the former way is that any additional sound source would automatically lead to lower volumes for the rest, even if the added source was silent.

view details

push time in a month

issue closedNY00123/refkeen

Wolf3D: Handle pressing on a pushwall right after beginning to push it

This is possibly another instance of an out-of-bounds memory access, for which emulating the original behaviors can be a bit tricky.

Basically, depending on the wall tile, you might open/close a door with an arbitrary door number, just by pressing on a pushwall right after beginning to push it. If this number is >= MAXDOORS, you get an overflow. One possible side-effect is a change to some tile in the map, say by turning it into a blocking tile.

closed time in 2 months

NY00123

issue commentNY00123/refkeen

Wolf3D: Handle pressing on a pushwall right after beginning to push it

Following 4fb303c180a6d5978c525feeedb8b97f5ad84974, let's close this for now. There might still be instances in which it isn't perfect, especially with pointer conversions, but this should be expected.

NY00123

comment created time in 2 months

issue closedNY00123/refkeen

Handle transitions to levels 19-22 in The Catacomb Abyss

Originally reported by Arno for level 19: https://www.doomworld.com/forum/topic/117084-reflection-keen-now-supporting-wolfenstein-3d/?tab=comments#comment-2194909

This one is a bit tricky to properly handle. The following posts of mine have an analysis of the behaviors, which is repeated here: https://www.doomworld.com/forum/topic/117084-reflection-keen-now-supporting-wolfenstein-3d/?tab=comments#comment-2195973 https://www.doomworld.com/forum/topic/117084-reflection-keen-now-supporting-wolfenstein-3d/?tab=comments#comment-2196379

There is more than one problem to take care of.

levelnames buffer overread

First of all, for levels 19-22, DrawEnterScreen will overread the levelnames array. For versions 1.13 and 1.24 of the game, due to the layouts of the DOS EXEs, this will translate to an attempt to read a C string literal from the grsegs segment pointers array.

In the case of level 19, it will end with what should be a pointer to a 16x16 tile. Since there are no 16x16 tiles - at least with the original game data - the corresponding grsegs element won't be filled with a nonzero segment pointer from CA_CacheGrChunk (via LoadLatchMem). Thus, the buffer overread will practically translate to an empty string.

I haven't fully investigated what occurs with levels 20-22. However, while DrawEnterScreen generally returned, in spite of the aforementioned overruns, the situation was different in an attempt of mine to load level 21 from v1.13. Here, the string buffer overrun done via levelnames[21] ended with a string made out of the following sequence of bytes: 2F 06 15 07 73 33 00 For printing the string, ShiftPropChar from ID_VW_AE.ASM should be called for every string character. When it's called with the value of bx == 6, [es:charwidth+bx] (i.e., currfont->width[charnum] in Reflection Catacomb) is 0, so the si register is also set to 0. It remains set to 0 even after a few more manipulations on it. Eventually, an attempt to jump is done as follows:

jmp [ss:shiftdrawtable+si]

However, because si set to 0, and shiftdrawtable further begins with 0, this effectively jumps to some arbitrary address.

In that case, it turns out to be exactly the location where VW_Vlin is called from VWB_Vlin, which must be the explanation for the vertical lines shown in the screenshot.

catabyss_000

Of course, the return from VWB_Vlin leads to a more-or-less undefined location.

Loading level 19

Ignoring the levelnames buffer overread, there are still more problems to come. For level 19, we reach CA_CacheMap, which attempts to access mapheaderseg[19]. This leads to another out-of-bounds array access. For the EXEs from versions 1.13 and 1.24, mapheaderseg[19] basically overlaps textstarts[0].

Generally, textstarts[0] should be set to 0 (on exe load and via ScanText). If we enter level 19 from another level, then CA_CacheMap will simply use mapheaderseg[19] i.e., textstarts[0] to store a pointer to newly allocated data. SetupGameLevel will later reference the map width and height from this pointer.

Later, ScanText will be called from CacheScaleds, thus resetting textstarts[0] i.e., mapheaderseg[19] to 0. What this effectively leads to is a memory leak.

When leaving level 19 (or possibly even just restarting level 19), CA_CacheMap will not free the memory previously referenced by mapheaderseg[19], because this pointer variable, which is actually textstarts[0], has already been set to 0. One possible way to handle this in a port is as follows. The mapheaderseg array length can be increased by 1, and then mapheaderseg[19] (i.e., mapheaderseg[NUMMAPS+1]) can be reset to 0 right after being used in SetupGameLevel.

Attempting to load any of levels 20-22

Let's ignore issues with levelnames again. Just like mapheaderseg[19] refers to textstarts[0], mapheaderseg[20], mapheaderseg[21] and mapheaderseg[22] refer to the following 3 locations in the textstarts array. Main difference is that these offsets are generally nonzero when CA_CacheMap is called. Thus, it'll try to set their purge levels with MM_SetPurge.

Because these aren't properly allocated memory addresses (at least not in my tests), this will simply end with the following error message: "MM_SetPurge: Block not found!"

closed time in 2 months

NY00123

issue commentNY00123/refkeen

Handle transitions to levels 19-22 in The Catacomb Abyss

Let's close this this for now, following a432cd442841d3a2ed6a129008bdc3dfc92db0b8 (and 7ddb1736602ffe37259fe6252fe81172dc34de8f).

The exact behaviors will differ for levels 20-21, but technically-wise, one would still get what are technically undefined behaviors with the original exes.

NY00123

comment created time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 73c8b237714d0dd0969f05b31fb360033a2cf61e

Should've also been a part of v0.33.0

view details

push time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 24937cc120b8c237ff7f9e463e0571539b770af2

Following the recent changes related to use of game controllers, ensure that controller axes are still appropriately mapped to keys

view details

NY00123

commit sha 95704af23f20d1ca1705c3f36b691f55b3ee5aa4

Fix caa6868713bc4f77f09add66f73c8a26b56cda5a, so a game controller's analog stick will still be usable while "Motion emulation mode" is set to "mouse"

view details

NY00123

commit sha 3c077a32f54ed2fb4e41c96a9eadda563ee1e071

Fix Windows build

view details

NY00123

commit sha 6c15a1a8f4eea6ea2274e33b10f12518c619d681

v0.33.0

view details

push time in 2 months

created tagNY00123/refkeen

tagrelease-20210802

Ports of Keen Dreams, the 3D Catacomb games and Wolfenstein 3D

created time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 70d5fb25d71420396927078f20d518507d474822

wl_game.c:SetupGameLevel: If mapheaderseg[gamestate.mapon] is a null pointer, just report that the map is not 64*64. This generally mimics the original behaviors, assuming that CA_CacheMap doesn't fail on its own in any unexpected way.

view details

NY00123

commit sha 7ddb1736602ffe37259fe6252fe81172dc34de8f

id_ca.c:CA_CacheMap bug fix for Keen Dreams and the Catacombs: For an uncached map, if pos is nonnegative but smaller than 8, just quit with an appropriate error message. If not done, the following behaviors would greatly on the memory layout, even with the original EXEs. Two examples of possibilities are an application hang and a totally unrelated error message.

view details

NY00123

commit sha a432cd442841d3a2ed6a129008bdc3dfc92db0b8

Catacomb Abyss: Add changes that make it possible to warp to map 19, while fixing crashes upon attempts to load map 20 or 21 by outputting a new error message.

view details

NY00123

commit sha 4fb303c180a6d5978c525feeedb8b97f5ad84974

Wolf3D: Add a form of buffer overflow emulation for instances where OperateDoor is called with out-of-range door numbers. This can be reproduced upon pressing on a pushwall while it's being pushed.

view details

NY00123

commit sha 9757fd39fb1b6c13722ec982be7f60ca60374e6d

Experiment with modification of input mappings for in-game actions. Instead of getting dynamically mapped according to the individual game's setting, they'll just map to the default keys. For instance, a game controller button originally mapped to the set up fire key will now map to Ctrl instead.

view details

NY00123

commit sha d0267ad22ee407e20fbc78eefdad3bf0704550be

Wolf3D: Add a new lowfps toggle, accessible from the launcher. This can be used for explicitly lowering the frame rate from wl_draw.c:DrawScaleds, the purpose of which being reproducing behaviors which turned out to be frame rate dependent. Examples are push walls unintentionally moving for 3 tiles instead of 2, as well as the Fake Hitler's fireballs moving slower with higher frame rates. The frame rates are not expected to perfectly represent what you can get with a computer from the early 90s. The toggle was implemented in such a away that a way that more on-screen sprites lead to lower frame rates, at least after having enough of them.

view details

push time in 2 months

issue closedNY00123/refkeen

Keen Dreams can quickly run out of memory with the 2015 edition

To reproduce, start a new game, and then use F10+W to warp to the following levels in the given order: 1-6.

For a bit of a background, the memory management code as used for other versions of Keen Dreams isn't suitable for the 2015 one, because it uses recorded sound effects with too large chunk sizes to fit in memory (as originally done under DOS).

A bit of patching was done to make the code behave a little bit different for the 2015 release, but it's not sufficient.

closed time in 2 months

NY00123

issue commentNY00123/refkeen

Keen Dreams can quickly run out of memory with the 2015 edition

Let's hope this is resolved by 63872b94e6b054307373f32a6ec7ef47378f1585 (and 02c2eebf70dc45886b10a82fe77da962070689a9).

NY00123

comment created time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 63872b94e6b054307373f32a6ec7ef47378f1585

Keen Dreams: Let's change MAXBLOCKS into a variable, so it can be set to a larger value for the 2015 port's data. 4096 was chosen, as in David Gow's snapshot of official port's sources prepared in Sep 2020. This helped fixing (if not hiding) aborts stemming for the lack of memory blocks, reproduced while going through levels 0-6. With the aforementioned sources, even just 1300 looked sufficient in a relatively brief test, but there were more modifications. Let's just (conditionally) increase MAXBLOCKS for now.

view details

NY00123

commit sha 02c2eebf70dc45886b10a82fe77da962070689a9

Simplify kdreams/id_mm.c:MM_GetPtr for the 2015 port's data. Good chances are the scan, even if modified, was wrong, anyway.

view details

NY00123

commit sha ed9563acce90631e97254dd5f4aabec2e48b3940

REFKEEN-NOTES.txt: Add a clarification about TimeCount (Blzut3's suggestion)

view details

push time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 75d2042df7cec2a7a5010ad4f6e94e842b934ed3

BE_ST_SetEmuMousePos/BE_ST_GetEmuMousePos: Reset accumulated mouse motion, and also update the cursor from preceding motion before getting the location in BE_ST_GetEmuMousePos. The latter fixes navigation in Wolf3D's menus.

view details

NY00123

commit sha 2b148c2abeb15002804effd902a041c147ea6cef

wolf3d/id_sd.c: Amend SD_SetMusicMode to always initialize "result"

view details

NY00123

commit sha e63c240656f183dc5bd6075b50927358179d0950

Kinda sync SD_SetMusicMode change to the other files

view details

NY00123

commit sha 0e7c656d39ed323242737910dc3943aea2faebde

Further sync USL_HandleError modifications

view details

NY00123

commit sha a26eaf82f05fbe623689b55d14ed2269bc3d5ae7

Update some comments

view details

NY00123

commit sha ec07b095c9fb65073345af19a7adc01678c1c6a5

Add REFKEEN-NOTES.txt files describing technical changes from the original versions of games, including cases in which such changes exist for the purpose of emulating vanilla bugs. The information was collected by looking for mentions of the word REFKEEN in the sources.

view details

push time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 2cbe247dc40f801a00a2569f0588243c28b191bc

BEL_ST_ParseSetting_SndSampleRate: Use OPL_SAMPLE_RATE

view details

NY00123

commit sha bde15f2a6a5e765ee5cd079db9e36f836b285cc4

Update a comment about g_sdlControlSchemeKeyMapCfgKeyPrefixes

view details

NY00123

commit sha f3d474b033df22b4e08253841ff36dc29e16ea1c

Split code related to the cfg file from be_st_sdl.c

view details

NY00123

commit sha 7aa04cfcb6fb20b44c521c7a3788c1f0cc357dd8

Include missing headers from be_st_sdl.h. Without these, the structure of g_refKeenCfg could unexpectedly change across compilation units!

view details

NY00123

commit sha c7e8f01f1af356e7aae2efe4c450fbf1e9a10f4f

Split input code from be_st_sdl.c, and occasionally move another declaration or definition between files. Note that be_st_sdl_launcher.c got a couple of variables related to tracked fingers renamed as a consequence.

view details

NY00123

commit sha 9f1c5d0b66f5901893b5d61d82d822af8789499a

be_st_sdl_launcher.c: Re-use track finger definitions from be_video_ui.*. This requires a reset of g_nOfTrackedFingers on launcher shutdown, so no invalid tracked finger data is mistakenly processed in-game.

view details

NY00123

commit sha 6b22768a69ca9eb3effb7c05dd81521edf3f0cb2

Define and use BE_ST_MouseTouchID as the touch device id representing the mouse

view details

NY00123

commit sha aab3a14fbb24bb463184b5581a5f756b9c99538c

Adapt include directives to not use e.g., full backend header paths if unnecessary

view details

NY00123

commit sha 430053cb26cff4a661e4024b05d0c8a2919471a5

Add novert toggle for the Catacombs and Wolfenstein 3D

view details

NY00123

commit sha 3566ff96351027fec8d4aa0fbace353543e9d422

Move a few declarations from be_st_sdl_private.h to be_video.h

view details

NY00123

commit sha af618afc03c7b713c9d5c0b040ee261a5f999f40

Split event handling code from be_st_sdl.c

view details

NY00123

commit sha 13a4d67b819e8a9da922a347f9df037dd92d8800

Finally, rename be_st_sdl.c -> backend/startup/be_startup_sdl.c

view details

NY00123

commit sha 91df9fd34395d64452272ee64e470e73a5aa0064

Let's also rename be_st_sdl.h to be_st_cfg.h. Since g_refKeenCfg is still accessed from game code, we won't move the required definitions into the "backend" subdir for now.

view details

push time in 2 months

push eventNY00123/refkeen

NY00123

commit sha 8521e9f0d6b6cbea312ba3372c102c8a342ad561

Increase the encapsulation of SDL in be_st_sdl_graphics.c

view details

NY00123

commit sha de8d4a0fd2d3b9bb9e798321040d932263e7406b

g_sdlRenderer can be re-defined as static

view details

NY00123

commit sha 52f29cc5862a4ff9cb7db91416f03f053fc85a1a

Continue with the encapsulation

view details

NY00123

commit sha e452ae7525594ebee58365d813b9fb67069b9195

Finally, rename be_st_sdl_graphics.c -> backend/video/be_video.c

view details

NY00123

commit sha b282e29f70d4f6d472660ce4b2cc38a3bb10bbf7

BEL_ST_GenOPLSamples: Use int16_t instead of nukedopl/opl3.h's Bit16s

view details

NY00123

commit sha 11c4fcb794b6940c14e38baeb8fd3309052516e3

Update Nuked OPL3 from https://github.com/nukeykt/Nuked-OPL3/

view details

push time in 2 months

issue commentNY00123/refkeen

[Feature request] Uncapped framerate

Hi, and thanks for having an interest in the source ports!

As Reflection Keen aims to be a Chocolate Doom equivalent, and the games originally operated at tic rates divisible by ~35Hz, I don't expect this to change any time soon. Thus, while untested by me, the best practical solution for making 35Hz look like 35Hz (same with 70Hz) might be to use a FreeSync or G-Sync monitor, or any equivalent.

In case you're editing your own copy of the source code, I can point at the following suggestions:

  • For Keen Dreams, you can try changing MINTICS from 2 to 1 in src/kdreams/id_rf.h.
  • For the 3D Catacombs, the games were actually originally uncapped. This can lead to visual glitches on sufficiently fast computers. Since the visual contents shouldn't really change more than 70 times per second, I added an internal cap, albeit it can still lead to a high frame rate. For more details, see src/id91_11/cat_all/cat*/c*_play.c:PlayLoop.
  • For Wolfenstein 3D, see src/wolf3d/wl_draw:CalcTics, emphasis on the call to SD_TimeCountWaitFromSrc. I think that under the DOS versions, it was the combination of this update with the change of the crtc address register from ThreeDRefresh, that actually removed screen tearing.

In theory, you can change the value of TickBase under the id_sd.h files, but this will make not just the game run slower/faster, but also impact sound and music playback in a similar manner (at least partially).

vanfanel

comment created time in 2 months

PR opened ArnoAnsems/CatacombGL

Replace backslashes with slashes in #include directives

Since you mentioned having the interest in porting CatacombGL to another platform in the future, I thought that to begin with, the given commit can be applied.

While unrelated to this pull request, I also checked if more changes will be needed for porting. Certain failures were fixed by changing specific function reference params to const, other few (in ConfigurationSettings::ResetToDefaults) by replacing the "for each" syntax with a standard one, and about two more by including additional headers.

Note that I didn't create anything like my own build setup. I just tried to manually build object files separately. Even if I were to submit the (relatively) few additional changes, it wouldn't be sufficient. The uses of functions like strcpy_s will have to be adjusted, and chances are there's significantly more to adapt.

+190 -190

0 comment

107 changed files

pr created time in 2 months

push eventNY00123/CatacombGL

NY00123

commit sha d527d2415ea73200e7d27e2d129255868ea0a27e

Replace backslashes with slashes in #include directives

view details

push time in 2 months

fork NY00123/CatacombGL

CatacombGL is a Windows source port with OpenGL graphics for Catacomb 3D (1991), The Catacomb Abyss (1992), The Catacomb Armageddon (1992) and The Catacomb Apocalypse (1993).

fork in 2 months