Commit Graph

22776 Commits

Author SHA1 Message Date
SuuperW 0634b37cc0 Call our new FrameEdited thing for auto restore whenever greenzone is invalidated, instead of manually calling at each edit point. This fixes auto-restore for undo/redo actions. 2025-06-16 03:53:52 -05:00
SuuperW 23f0716199 Fix: turbo seek did not work when navigating while unpaused 2025-06-16 03:53:51 -05:00
SuuperW 672581476a inline function that is only called from one place 2025-06-16 03:53:51 -05:00
SuuperW bbf3560bd0 Convert remaining auto-restore points to the new system. Also include refreshing in FrameEdited. Fixes more bugs. 2025-06-16 03:53:47 -05:00
SuuperW ffc50444f9 Revert commit a1c8c4ed3a. It was always pointless because it didn't fix the issue it was supposed to fix, and the later commit that actually fixes it was all that was needed all along. 2025-06-16 03:34:27 -05:00
SuuperW 553336ccd5 Replace some auto restore code with something simpler. Fixes auto-restore for right-click edits. 2025-06-16 03:33:21 -05:00
SuuperW 850d3c58a5 Windows weirdness: MouseUp event is not guaranteed to be raised. 2025-06-16 03:33:20 -05:00
SuuperW 68f7824f91 Fix: Clicking on an axis value while in axis editing mode would disable recording mode, regardless of whether an edit was made.
Fix: Clicking on an axis value while in axis editing mode would trigger auto-restore, even if no edit was made (seek to last edit frame).
2025-06-16 03:33:20 -05:00
SuuperW fe29ffd8d1 simplify a bit of logic 2025-06-16 03:33:20 -05:00
SuuperW 5575739187 Fix: modifier key + right click would jump to the last edited frame (even if this right click made no edits) 2025-06-16 03:33:20 -05:00
SuuperW 3ef7dce1ed GoToFrame's "future frame" cases were just buggy versions of the normal case. So just use the code of StartAtNearestFrameAndEmulate instead. Fixes multiple bugs when seeking to frames past the end of the movie. 2025-06-16 03:33:20 -05:00
SuuperW fb231b04b5 Fix: Mouse drag seeking was broken while seeking. (It would not change the target seek frame until prior seek had completed.) 2025-06-16 03:33:20 -05:00
SuuperW 31e6eeb113 Remove obsolete conditional. 2025-06-16 03:33:20 -05:00
SuuperW a3af98718f Make TAStudio take ownership of its own seeking logic and simplify some code, fixing a few bugs:
1) Auto-restore did not work when painting "axis" inputs.
2) If unpaused in recording mode, manual seek to frame A (click cursor column) then before that seek finishes seek to frame B. It would not unpause after reaching frame B to resume recording.
3) TAStudio would fail to pause with auto-restore if a second edit was made to a non-greenzoned frame while auto-restore seek was in progress.
4) Canceling seek would not remove the seek progress bar.
2025-06-16 03:33:20 -05:00
SuuperW e2acfa61ea tastudio should own tastudio logic 2025-06-16 03:33:19 -05:00
SuuperW fe9f876d55 move safety check inside StartSeeking, instead of making caller responsible 2025-06-16 03:33:01 -05:00
YoshiRulz b6bcedcb6d
Add "Clear Moved/Deleted" to recents auto-submenus
see #2115
2025-06-15 21:42:24 +10:00
SuuperW 6c48f7c7fd rename variable 2025-06-14 19:44:23 -05:00
feos a030b16916 doom script: spacing 2025-06-14 23:06:05 +03:00
YoshiRulz 51b7e914d2
Change type of `*Watch.ValidTypes`/`Watch.AvailableTypes` to list 2025-06-15 02:47:07 +10:00
YoshiRulz 822b105bd1
Clean up all deconstructing ints to bytes in main solution 2025-06-15 01:40:47 +10:00
YoshiRulz 5fb1a32eb4
Clean up all reconstructing ints from bytes in main solution 2025-06-15 01:40:47 +10:00
YoshiRulz b61769b136
Move bitwise `|` to start of next line in Emulation.Cores 2025-06-15 01:40:46 +10:00
YoshiRulz de08716aff
Replace some bespoke endianness helpers w/ BCL `BinaryPrimitives` 2025-06-15 01:40:38 +10:00
YoshiRulz d3d4f237b3
Make `MediaConverter.GetBEInt32FromByteArray` (ZXHawk) throw on fail
...instead of silently discarding bytes
2025-06-15 00:17:32 +10:00
YoshiRulz cb266413b5
Clean up dumb bitwise comparisons in `AY38912`s (CPCHawk and ZXHawk) 2025-06-15 00:14:54 +10:00
YoshiRulz 4d8bc3f265
Use `BitReverse.Byte8` LUT in GBHawk and IntelliHawk 2025-06-15 00:14:51 +10:00
YoshiRulz 5679500886
Expose experimental throttle setting in dev builds too
(:
2025-06-15 00:13:29 +10:00
YoshiRulz eff989f26a
Move `&&`/`||` to start of next line in Emulation.Cores project, pt 2
see 8967f58df and prior commits, namely 5685befe1
2025-06-15 00:13:26 +10:00
YoshiRulz 5ecbe6c30f
Use pattern matching for a bunch of enum checks across main solution 2025-06-15 00:11:17 +10:00
YoshiRulz 3540f48847
Use pattern matching to simplify some string comparisons 2025-06-14 23:32:18 +10:00
YoshiRulz 4ac8d55fb1
Simplify some conditions in `DskIdentifier.CalculateFormat` 2025-06-14 23:32:13 +10:00
YoshiRulz 69a8899fa6
Refactor `Timestamp` ctor (DiscSystem) to use pattern matching 2025-06-14 23:30:56 +10:00
YoshiRulz bee07cca7e
Remove some redundant `fi.Directory?.Exists` checks 2025-06-14 23:30:04 +10:00
YoshiRulz af51ca1513
Deduplicate some copy-pasted WinForms key event handling code 2025-06-14 23:27:35 +10:00
Chris Siebert 85f90604bd
Fixed behavior of SHA, SHX, SHY, and SHS in NesHawk (squshed PR #4309)
* Fixed incorrect behavior of SHA, SHX, SHY, and SHS

Opcodes $93, $9B, $9C, $9E, and $9F, also referred to as the "Unstable High Byte Group", all rely on the High Byte of the target address being incremented internally when the processor adds the X or Y register as an offset, and this new value of the high byte is ANDed with the value being stored.

* Fixed a typo

In the comment made for private byte H, changed the word "varaible" to "variable"

* Added H to the 6502 SyncState

Added H to the 6502 SyncState, which is used during the final cycles of a few unofficial instructions.

* Updated LxaConstant for Chip6510.cs

This now passes Disk2.d64's "LXAB" test.
Does this need to change in Drive1541.cs as well?

* Updated AneConstant for Chip6510.cs

This now passes Disk2.d64's "TRAP1" test.
Does this need to change in Drive1541.cs as well?

* Updated the 6502's unstable high byte group for RDY beahvior.

SHA, for example, typically writes a value of A & X & H, but if the RDY line is low 2 cycles before the write occurs, (tested with a DMC DMA) the value written is just A & X. To recreate that behavior, H is set to $FF if the RDY line is low during that particular stage of the instruction.

* Removed trailing whitespace added in previous commit

* The 6502 ext_ppu_cycle variable is now updated in NesHawk

The ext_ppu_cycle was only used in SubNesHawk, though it would still appear in the tracelogger for NesHawk, just always with a value of 0.
This value is now incremented at the end of runppu() in PPU.cs, and reset at the beginning of a frame inside DoFrame() of SubNesHawk, and FrameAdvance() for NesHawk.

* Fixed formatting of a line added in the previous commit.

Added spaces around the equal sign.

* Added the 6502 address bus, and DMC DMA Halt cycles occur on the correct cycles

Added the 16 bit address bus as a public variable to Execute.cs
The 6502 Address Bus is not updated by the DMC DMA or OAM DMA.
The DMC DMA's "halt cycles" and "put cycles" read from wherever the 6502 address bus currently is. This can result in extra reads from read-sensitive PPU and APU registers.
Likewise, APU Register Activation is tied to the 6502 address bus. (Previously using the value of the PC, as the address bus will be the value of the PC during OAM DMAs)

* Removed unnecessary includes

I have no idea what added these, but it was a mistake.

* Added the 6502 address bus to the SyncState

Added the 6502 address bus to the SyncState

* Updated controller strobing and clocking

Controllers only get strobed when the CPU transitions from a get cycle to a put cycle.
Controllers only get clocked if the previous CPU cycle was not reading from the controller port.

* Updating timing of clearing the Frame Counter Interrupt Flag

The Frame Counter Interrupt Flag is only cleared on "put" cycles.
This can be detected by running an instruction that double-reads address $4015, such as the unofficial SLO $4015, X instruction. The Value in the A register after that instruction will have different results depending on if the cycle this ran on was a get or a put cycle, since the flag is only cleared on the put cycle after the read occured.

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/CPUs/MOS 6502X/Execute.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/Computers/Commodore64/MOS/Chip6510.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/APU.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Update src/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Fixed a typo

* Updated formatting, and fixed a potential bug.

Two read cycles in a row, one from either controller port, will still clock both controllers once.

* Update src/BizHawk.Emulation.Cores/Consoles/Nintendo/NES/NES.Core.cs

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>

* Updated sprite evaluation for misaligned OAM

If a write to $2003 occurs on a visible scanline before sprite evaluation, the initial index into OAM for the evaluation will not begin at OAM index 0. If the OAM index was not a multiple of 4 when this occurs, an interesting phenomenon becomes visible, where the lower two bits of the OAM index are cleared if the Y position is out of range for the scanline. Surprisingly, the X position makes this same "in range" check, resulting in the lower two bits being cleared if not in range.

* Updated glitchy increment of OAM index when writing to $2004

When this occurs, reg_2003 needs to increment, and this also results in a bitwise AND with $FC.

---------

Co-authored-by: YoshiRulz <OSSYoshiRulz+GitHub@gmail.com>
2025-06-14 17:34:42 +10:00
feos 4636cd8cd7 add doom script 2025-06-12 18:43:48 +03:00
feos 9143bdcee1 dsda: expose linedef coords 2025-06-12 18:43:48 +03:00
YoshiRulz 9214e2418e
Change lazy init of `HeaderKeys.AllValues` in preparation for C# 14 2025-06-10 15:31:43 +10:00
YoshiRulz 933d626a95
Simplify enumeration of NesHawk `[MapperProp]`s 2025-06-10 15:29:57 +10:00
Daniel Peter Rutschmann 3ab4a96404
Make the number of frames per TAStudio rewind configurable (squashed PR #4319)
* allow a TAStudio rewind to go back a configurable number of frames.

* rename FramesPerRewind to RewindStep.

* make whitespace consistent.

Use tabs for regular lines, but use spaces in argument lists that are formatted as one argument per line.

* remove tiny designer resizes.

* refactor isFastForwarding variables in main form.

* refactor isFastForwarding variables in main form, v2.

Copy IsFastForwarding into a local variable to minimize recalculations.

* add doc string to MainForm.IsFastForwarding.

* refactor if statement shape in TAStudio.MenuItems.cs .
2025-06-10 13:45:27 +10:00
YoshiRulz 95a01894de
Fix line endings in `Bk2MnemonicLookup.cs`
fixes 513c1ca8e
2025-06-10 00:03:38 +10:00
feos ffb469540e dsda: expose linedefs as mem domain 2025-06-09 01:27:51 +03:00
YoshiRulz bda2c2b5a0
When processing `--lua` flag, treat unknown file extensions as scripts 2025-06-08 15:55:15 +10:00
feos df708a3a8e order 2025-06-07 18:32:19 +03:00
feos 8b43c98657 dsda: fix reading OUT OF BOUNDS of mobj_t 2025-06-07 18:28:11 +03:00
YoshiRulz f2ccc9af90
Simplify `DSDA.PutSettings`
fixes a150bb433
2025-06-08 00:36:53 +10:00
feos 2dfdd8f7c3 mute 2 complaints 2025-06-07 16:57:34 +03:00
feos a150bb433a is this overkill? 2025-06-07 15:37:41 +03:00
feos 4f8beb5536 cleanup 2025-06-07 15:36:59 +03:00