Commit Graph

652 Commits

Author SHA1 Message Date
feos b0d59e15d8 dsda: hide UI related internal messages
user will be changing those options from hawk side dialog so it's impossible to miss what you're changing (you can look at the dialog again if you're THAT sloppy)

but since we're now initializing with default nonsync settings and changing them on the fly, those UI messages would be appearing all the time

automap messages are left intact since they appear upon in-game button press

worst case scenario, UI messages are moved to hawk side, but then why limit them to only whatever upstream reports and not report every change? which is never done anyway, so I doubt it'd come to this
2025-05-25 00:16:12 +03:00
feos 0fe3c33c46 dsda: disable BOOM demo import for now
passing rngseed didn't fix sync, and passing all the settings is too much work for this release. will support it afterwards.

instead just tell the user BOOM demos are not supported
2025-05-22 20:18:00 +03:00
feos d97fe551b8 dsda: print eventual complevel 2025-05-20 22:10:04 +03:00
Morilli 2e539b3c47 gpgx: fix invalid system checks
- closes #4324
2025-05-19 21:42:18 +02:00
feos dfabe85181 dsda: condition for some av updates 2025-05-11 15:39:43 +03:00
Sergio Martin 654544b329
Adding Opera (3DO) as emulation core in Bizhawk (#4264)
* Adding base

* Progress with opera and adding 3do firmwares

* Adding missing callbacks

* Adding missing callbacks

* 3DO core starting

* Now passing inputs

* Passing gamepad inputs

* Fixing input names

* Now supporting mouse

* Adding mouse support

* Added flightstick

* Added flight stick

* Adding last inputs and fixing audio

* Adding controllers and fixing audio

* Adding orbatak

* Fixing mnemonics, added orbatak

* Adding font roms

* Adding font roms

* Adding region

* Adding region

* Fixing mouse issue

* Fixed initialization bug in fresh installs

* Setting mouse to relative inputs

* Using mouse as relative

* Bypassing bios checks to enable bizhawk to pass whatever bios it wants

* Adding default inputs for 3DO

* Adding detection of nvram changes

* Adding lag frame and nvram saving

* Adding cd use detection

* Adding cdrom light

* Using cd callbacks

* Using cd callbacks

* Bypassing image name check

* Adding multidisc support

* Removing 3do-iso special extension

* Fixing build

* Attempting to add disc swapping

* Trying to add multidisc support

* Uncommenting cd functions

* revert unrelated changes

* misc unmanaged integration

* Update waterbox-cores.yml

* Added reset button, removed eject/insert

* Added reset button, removed eject/insert

* Fix line endings in `Bk2MnemonicLookup.cs` changes

* Fix indentation

* Fix spaces in `Opera.cs`

* Alphabetise

* Make `Opera`'s `ISaveRam` implementations `override`

* Misc. code style changes

* Fix casting array index to `uint` for comparisons

* Adding default framerate and removing message duration parameter

* Refactoring input parsing and fixing some errors

* Fixing indentation

* Exposing non volatile ram

* Adding automatic sram management

* Now letting bk manage saveram automatically

* Fixing indentation and removing unncessary flag

* Removing dead code

* Removing dead code

* Removing unnecessary mnemonic fallbacks

* Keep fixing indentation errors

* Removing struct for memory areas

* Adding proper detection of input reading

* Changing namespace to not have an underscore

* fix whitespace in PlatformFrameRates

* make waterbox function non-virtual

* Update src/BizHawk.Emulation.Cores/Consoles/3DO/Opera.cs

Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>

* Fixing controller mapping

* Fixing controller mapping, 3DO->Panasonic3DO, added submenu

* Fixing controller

* Fixing controllers

* Removing unnecessary function

* Fixing namespace and default ctrls

* Fixing 3DO detection

* Adding submodule branch

* Adding PAL framerate for opera

* controller pic

* Fixed firmware naming

* Fix line endings

* Recompress image

* Realphabetise after namespace/sysID change

* Move this `case` block up

* Minor code style fixes

* Renaming user-facing Panasonic3DO strings to 3DO

---------

Co-authored-by: Morilli <35152647+Morilli@users.noreply.github.com>
Co-authored-by: YoshiRulz <OSSYoshiRulz+git@gmail.com>
Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>
Co-authored-by: feos <feykomylce@gmail.com>
2025-05-09 10:04:14 +03:00
feos 8a70238e75 dsda: fix settings changes dying on loadstate
handle gamma changes on the hawk side
DoUpdate is no longer needed
2025-05-02 09:32:47 +03:00
Sergio Martin e04fd79574
Add DOSBox Windows Support (#4294)
* Decoupling HDD from SRAM

* Modifying memory area

* Adding win-specific config

* Mods

* Adding option to save hdd contents

* Fixing period

* Passing hdd contents in chunks to prevent excess mem usage

* Reverting changes to gui

* Revert "Reverting changes to gui"

This reverts commit 004a6b3382.

* Updating configurations

* Created custom submenu for DOS

* Renaming function nam names

* Refactoring function names

* Adding failure check for memfile alloc

* Adding logging on hdd size

* Re-adding configuration menu

* Fixes

* Demoting cd recognition of yet unsupported cores

* Fixing timing

* Reducing diff

* Fixing style

* Reducing diff

* Reducing diff

* Reducing diff

* Reducing diff

* Reverting change in cast in ticks target

* Reverting change in cast in ticks target

* Adjusting hdd precision

* Removing compatibility flag (not needed)

* Fix line endings

* Remove reference to Speccy

* Revert changes to `Bk2MnemonicLookup`

* Move DOS submenu initialisation to `MainForm_Load`

* Minor code style fixes

* Update src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.ISettable.cs

Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>

* Strip line-end whitespace

* Update src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.ISettable.cs

Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>

* Fixing byte notation to B

* Fixing byte notation to B

* Update src/BizHawk.Emulation.Cores/Computers/DOS/DOSBox.ISettable.cs

---------

Co-authored-by: YoshiRulz <OSSYoshiRulz+git@gmail.com>
Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>
2025-04-30 14:38:58 +03:00
feos e733d28600 dsda: extract render updates 2025-04-27 23:20:31 +03:00
feos 8f0cd0699e dsda: volumes 2025-04-27 23:10:52 +03:00
feos 314b96f1ca dsda: coordinates, map details, and map overlay
fix messages status appearing when unchanged
drop scale factor from render info
2025-04-27 15:49:10 +03:00
feos 358515e07e revert "change res on the fly"
there's a major slowdown when doing several res changes in the same session, and its need is questionable anyway, because of potential inconsistency of screensize across states and stuff.
2025-04-26 19:26:38 +03:00
Morilli 1fd6e2e085 fix dosbox cycle timing code
- closes #4295
2025-04-23 03:43:48 +02:00
feos d446c6c46d dsda: resolution now changes on the fly
TODO: fix slowdown after a few changes
2025-04-22 21:15:27 +03:00
Sergio Martin 236ff74b2b
Adding DOSBox as core for DOS TASing (#4217)
* Adding dosbox

* Adding placeholder

* Adding initial placeholder for DOSBox

* update

* Update

* Update

* progress

* Progress

* Increasing mem capacity

* Progress

* Now running timer correctly

* Progress

* Stable

* Parsin inputs

* Keyboard working

* stable before using memfiles

* Now accepting rw hdds

* Hard disk rw working

* Fixing conflict

* Getting samples

* Reading samples but sounds too low

* Reading samples but sounds too low

* Now accepting multiple cdrom/floppy images

* Allowing swapping

* Enabling cdrom and disk swapping

* Simplifying

* Simplifying

* Simplifications

* Simplfiications

* Capturing sdl delay

* Adding configuration presets

* Enabling joystick

* Enabling joysticks

* Added mouse support

* Adding mouse support

* Progress with hard disk

* Adding default hard disk images and making them selectable

* Adding mnemonics, more configs, and some refactoring on the standard confs

* Processing file extensions

* Adding sram

* Adding saveram

* Adding drive lights

* Adding drive lights

* Adding memory domains

* Removing warnings

* Fixing warning

* Revert unrelated changes to Multi-Disk Bundler

* Re-alphabetise lists and clean up diff

* Missed a bit

* Make `DOSBox`' `ISaveRam` implementations `override`

* Fix `DOSBox`' `[PortedCore]`

* Clean up string comparisons in `DOSBox` ctor

* Set values for `WriteableHardDiskOptions` instead of translating

* Clean up reading of DOSBox config presets from embedded resources

* Fix code style warning

* Removing duped line

* Fixing extension parsing

* Small adjustments

* Aligning fps to that of normal DOS

* Aligning fps to that of normal DOS

* Simplified extension getting and adding base config file resource

* Remove unused import

* Properly measuring extended mem size

* Adding more settings and simplifying machine presets

* Adding check for SRAM size to prevent wrong-sized HD being loaded

* Removing unnecessary directive

* Update correct DOS framerate

* Adding sensible configuration presets

* Adding to the config preset description text

* Update src/BizHawk.Emulation.Common/Base Implementations/Bk2MnemonicLookup.cs

Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>

* Removing stale config files

* Fixed mouse emulation

* Fixed mouse emulation

* Removing unused keyboard flag

* Addressing feos' comment about virtual height/width

* Fixed bug with saveram

* fix VirtualWidth

scanlines remain constant so they aren't stretched, and width is adjusted to be 4/3 of height, because video modes in DOS were designed for a 4:3 monitor. exact pixel shapes may slightly differ depending on exact pixel clock but setting 4:3 for DOS is standard.

* DependentUpon

* Making FPS configurable

* Making FPS configurable

* Adding fps num/denom

* Implementing proper fps numerator / denominator defaults for DOS

* Passing mouse deltas from bk

* Passing mouse deltas from bk to the core

* expose and use deltas directly

to make it work in hawk, one needs to bind RMouse X/Y for Mouse X/Y Delta in config.ini, by manually editing the file (for now)

* Implementing support for .cue+.bin and other cdrom types

* Fixing sensitivity

* Adjusting mouse sensitivity

* Fixing integration for windows

* [WIP] loading cds from bk

* [WIP] loading cds from bk

* Using .cdrom extension for cdroms, and passing disk name to the read callback

* Using .cdrom extension for cdroms, and passing disk name to the read callback

* Cleanup and fixing .iso loading and swapping

* Fixing .iso loading and cdrom swapping

* Adding default controllers

* Added callback for video updates to prevent tearing

* Removing unnecessary message

* Fix line endings in `Bk2MnemonicLookup.cs`

* Fix indentation

* Fix misc. whitespace crimes

* Drop redundant `<None Remove/>`

* More whitespace fixes

* More code style fixes

* Small fixes

* Fixing misc comments

* Adjusting naming

* Fixing values

* Removing dead code

* Clarifying the source of DOS framerate chosen

* Removing unused variable

* Removing duped assignments

* Fixing typo

* Removing no-longer required SRAM management

* Removing no longer required sram management functions

* Removing no-longer needed SRAM logic

* Fixing framerates as per feos's comment

* Passing init struct for a more tidy initialization. Also fixing identation for good

* Fixing hard landing on failure to load SRAM. This is needed to prevent crashes in dosbox when preserving hard disk contents

* Added missing submodule and artifact

* Reverting unnecessary change

* Removing no longer needd dosbox-iso extensions

* Removing no-longer necessary virtuals

* fix

* Adding lines into readme

* fixing indentation

* Reducing job concurrency for dosbox -- otherwise the server gets overloaded

* adding recursive submodule for dosbox-x

* Simplifying

* Simplifying

* Simplifying

* Simplifying

* Only offer drive switching if more than one drive is present

* Adding proper Disc identification for ISO9660 / Joliet (default target DOS)

* Adding CDROM case

* Moving comments to proper place

* Moving comments to proper place

* Code style fixes

* Clean up handling of Next Disc buttons

* Clean up `DOSBoxKeyboard` definition

* Remove redundant button mnemonic overrides

* remove leftover hack from my initial 2-byte range

it's hard to tell from upstream code what the range should be...

* Fixing mouse buttons getting stuck and aligning mouse speed minmaxes to what dosbox expects

* Removing default framerate for DOS

* set mouse speed range to match raw deltas range
(see 93bc50288f)

since this makes minimal mouse delta 1 now instead of 2 or 3 (they were different for x and y because ranges were different), I readjusted default sensitivity to match default turning in doom in upsteam

* fix casing on public fields
we use PublicField, _privateField, and localVariable casing

this commit also includes WIP to expose attoseconds like mame does, so that 1 value could be used to determine framerate, and movie parsers won't need too many changes to support DOS framerates

* fix num/denom values to match dosbox-x for when it launches into dos
video dump info was not super clear so I relied on values that are actually assigned to `fps` in `VGA_SetupDrawing()`

TODO: check other machines, update sync settings descriptions when we expose render fps info to user

* use an existing thing instead of GetFullName
it was copied from uae where I made it because I didn't know about `Path.GetFileName(rom.RomPath)`, it's now fixed in master too

increased message duration so user could read potentially long filenames (copied from uae too)

* Move init of new `MouseState` to top and eliminate locals

* fix naming for mouse states

* update submodules

* Adding function to get video refresh rate

* Adding report on video refresh rate update

* Revert "Merge branch 'dosbox' of github.com:SergioMartin86/BizHawk into dosbox"

This reverts commit e5b16a6307, reversing
changes made to ced12c51b4.

* Merge branch 'dosbox' of github.com:SergioMartin86/BizHawk into dosbox

* Removing unnecessary directive

* Fixing reboot

* fps notice formatting

* Zero init fps vals

* Using variable framerates

* Now accepting variable framerates as given by the core

* Moving ISO9660 detection lower

* Storing refresh rate in savestate -- update it on load if different

* fix GetFullName()

* Adding function to get number of ran cycles

* Adding ICycleTiming

* attoseconds are obsolete now

* fix loading CDs with spaces in their name

* Message duration needs to be left to the user to configure. Just passing a null

* Setting notify times back to 4 seconds cause these require a bit more time to read/understand

* Updating CycleCount from within wbx

* Simplifying cycle timing

* Removing FPS change notification, using default waiting times

* Updating submodule

* Fixing bug in disc swapping

* Adding drive selection functionality

* fixing period input

* Adding logic to present disc swapping operations from repeating when holding the button

* added defines for drive id

* point submodule to specific branch

---------

Co-authored-by: YoshiRulz <OSSYoshiRulz+git@gmail.com>
Co-authored-by: feos <vadosnaprimer@users.noreply.github.com>
Co-authored-by: feos <feykomylce@gmail.com>
2025-04-20 16:19:38 +03:00
feos 45e16c0ec2 dsda: pass all non-sync settings to the core once they change 2025-04-19 21:44:15 +03:00
feos 590d6bdc01 dsda: split out common buttons from players and only send them once 2025-04-09 21:45:40 +03:00
feos ba48066748 dsda: automap controls (and live gamma toggle)
limited to vanilla functionality
currently only works for doom, will require refactoring to work universally
2025-04-03 23:34:18 +03:00
VelpaChallenger 53cdf182ae
Pass values to memory callbacks in GPGX (squashed PR #3821)
* fix on_bus_read issue for genplus-gx core

- related to issue #3813
- update signatures, create new value variable in each of the memory read core functions, pass it to the callback and return it instead of the inline calculations. Also, pass val to write and exec callbacks in IDebuggable since they all use the same mem_cb signature and it would break otherwise. I want to update write and exec callbacks in next commit though to ensure nothing unexpected happens.

* update write callbacks for genplus-gx

- related to issue #3813

* update exec callbacks for genplus-gx

- closes #3813

* twice memory peek for deep freeze via on_bus_read bizhawk

Read a first time to pass the read value to the callback, read a second time to read the updated value in case it was updated by the callback and effectively deep freeze the value, no matter if 8, 16 or 32 width

* remove lines from unknown source

I have no idea where those lines came from. But I never meant to add them. This should look like it currently looks in master

* reinsert const, use implicit delegate constructors

* update submodule commit to before override memory values

* rename a to addr, unsigned int to just unsigned
2025-04-04 05:46:57 +10:00
Morilli cf12159f55 make do-everything.sh fail properly 2025-03-31 02:56:48 +02:00
Morilli 96d192735e fix libcxx configure 0 for cmake 4 2025-03-31 02:55:25 +02:00
Luke Stadem 3af38050f8
[A26][Stella] Adds support for the console Select switch (#4178)
* [Stella] Added the Select switch input

* [Stella] Reduced console switches into a single int corresponding to the SWCHB register
2025-03-22 17:49:27 +01:00
feos 92df238d9e dsda: fix button turning for shorttics
move shorttics cals to frontend to explicitly show all the logic that reproduces upstream input handling
2025-03-21 20:00:23 +03:00
Morilli b7a0fe647e Update musl 2025-03-20 20:44:36 +01:00
feos ebbdc1ad5c dsda: send inputs by struct pointer
greatly simplifies adding more inputs (like automap control)
2025-03-17 19:19:00 +03:00
feos 9351a045c0 dsda: detect wipe as lag
automap mnemonic
2025-03-16 22:44:37 +03:00
feos 89b6da50d0 WIPE!!! 2025-03-16 22:20:12 +03:00
feos 93ebd91971 dsda: wipe wip 2025-03-16 16:21:48 +03:00
feos 4a3ad3a1d1 dsda: fix build, spacing 2025-03-14 18:10:43 +03:00
Morilli 6665e0e35e fix dsda CI build 2025-03-14 14:59:20 +01:00
Morilli 44dc0f4461 pass args and fix ares build call 2025-03-14 14:49:41 +01:00
Morilli 3a4815d3da make make-all-cores.sh error properly 2025-03-14 14:41:36 +01:00
feos aa7b78894a dsda: convert c++ to c 2025-03-14 16:07:28 +03:00
bigbass1997 abc6900c72 Changed print statement to only appear in debug builds 2025-03-13 07:11:13 +10:00
feos 6965767328 dsda: fix -warp
only doom1 uses episode number in -warp, all the rest ignore it and use the first digit to set map (episode is forced to 1 for them). to detect this we now ask the core which gamemode it is (which determines it internally too).

rename complevel setting
2025-03-12 20:40:29 +03:00
Morilli c826344637 update snes9x
- closes #4260, closes #4194
2025-03-08 22:20:28 +01:00
feos 4a7e0c6008 dsda: fix missing sounds
proper aspect ratio
2025-03-01 17:19:56 +03:00
feos 905c972738 dsda: parse our own config file
set vanilla res as a start
2025-02-27 23:16:44 +03:00
feos dd6beccfb0 dsda warnings 2025-02-26 19:50:16 +03:00
feos f6538289dc dsda: fix lmp import
only tested on doom, no idea if movies for other 2 even exist lol
2025-02-25 23:21:23 +03:00
feos d628f035f7 dsda: commit c_cpp_properties.json 2025-02-25 20:09:20 +03:00
feos b0c2ef831c dsda: automap command 2025-02-23 20:31:49 +03:00
feos 918783126e dsda: match button names to dsda
(except for weapon keys since they may mean different thing for non-doom)

tweak doom mnemonics too
and push core submodule
2025-02-23 11:00:01 +03:00
feos fe29eb12dd dsda: process longtics and fix turning speed
rename some enum values
contains hack to work around export problems with dsda_Flag()
2025-02-23 02:30:40 +03:00
feos f47136be46 dsda: pass commandline args to core from hawk
that way we don't have to rebuild the core for every commandline option that it already supports and we decide to use, also more meaningful presentation of those options on the managed side
2025-02-22 22:22:54 +03:00
Sergio Martin 3c5f699af9
Adding DSDA as Doom/Hexen/Heretic core (#4196)
Co-authored-by: feos <feykomylce@gmail.com>
Co-authored-by: YoshiRulz <OSSYoshiRulz+git@gmail.com>
2025-02-19 00:21:47 +03:00
Morilli e094721de8 bump gpgx max rom size to 32MB
- closes #4229

This rom size was present in 2.9.1 but was reverted in a cleanup commit.
2025-02-18 17:15:31 +01:00
Morilli 52766e67fc fix recent waterboxhost warnings 2025-02-18 16:54:05 +01:00
feos c5807662b6 uae: a game requiring empty input port found
see #4213
2025-02-08 14:46:21 +03:00
feos 74fcbc28eb uae: include more scanlines into image
fixes #4204

RANT TIME

visible area is largely nonsense when it comes to CRT TVs, because they may cover different amounts of the screen based on model, and you can adjust some of them also based on model to show more or less of it.

4:3 aspect ratio is also somewhat nonsense because TVs don't automatically rescale your video input to the entire screen like modern computers do. they just stretch or shrink it based on pixel frequency of the input and how it relates to whatever the given TV is configured to.

Rec601 was created in order to somewhat standardize this but it only contained RECOMMENDATIONS (hence the name) on how to digitize analog video, not how analog devices should be configured. so a lot of TVs looked different from what it would be digitized to based on this spec.

in gaming it's a common misconception that console output is meant to be resized to 4:3 DAR of the TV. in reality it's stretched according to PAR - pixel shape which comes from differences between color frequency of the input and standard NTSC or PAL color frequency.

if the console updates color more often than the standard, analog signal with higher pixel density will be put on the screen as is, and pixel will look "squished", sometimes up to 2x for 512px resolution modes (PS1). if the console updates color rarer, pixels will look stretched (A2600).

Amiga PAL mode has 1:1 PAR, no stretching is needed, so whatever aspect we're outputting will just go to encodes as is. NTSC Amiga PAR is 6:7, so we're shrinking a bit in encodes and when hawk is configured to device aspect.

this all means that it doesn't matter how many pixels we take of the rendered image, all we care about is stretching it to proper PAR. whether it contains overscan only affects fullscreen because extra blank area means less of useful data. and since some exceptional games decide to render AT THE VERY BOTTOM there's little to no harm in showing all 574 rendered scanlines. who hates it and wants 568 can crop it, but I don't expect anyone to care (or even notice).

so while nominal internal res for Amiga is 576 and canonical UAE default is 568 (tho it lets you adjust visible area and we don't), I think we can safely output our heretical number at all times.
2025-02-06 19:43:32 +03:00