Commit Graph

93604 Commits

Author SHA1 Message Date
donohoe00
9cdce3047e
act/victor9k.cpp: Get audio working on Victor 9000 (victor9k) (#13549)
* 6522via: Don't generate a signal on PB7 when the timer 1 latch is
programmed with 0.

On the Victor 9000, the clock for the audio codec is generated by a
via6522.  PB7 is connected to the codec's clock input.  Non-speech
sounds (e.g. beeps, musical notes) are produced by outputting a cyclical
waveform from the codec, with the pitch determined by the frequency of
the codec clock.

Software running on the Victor 9000 has been observed to attempt to
silence the audio by writing 0 to the T1 timer latch (not by turning off
continuous mode or PB7 output).  With the emulated via6522, this resulted
in a high-frequency clock signal being output on PB7, causing a
high-pitched squeal whenever notes are not being played.

From this observed behavior we could infer that the original 6522 HW
does not output a signal on PB7 when the latch value is 0, and that the
Victor 9000 software was relying on this behaviour to silence the audio
output (one would have to assume that the real hardware didn't produce
a squeal).

* mc6852: fix various transmit-related issues which were preventing
victor9k Audio output from working.

The expected behavior of mc6852 is to write the data received in the
FIFO register serially via tx_data_callback().  However, this was not
implemented, and the only way data in the transmit FIFO could be
removed and transmitted was by calling get_tx_byte(), and to then
serially transmit the data by some external mechanism.

Only m68sfdc.cpp calls get_tx_byte(), so it's hard to see how any
other device using the mc6852 would have been able to transmit data.

Software running on victor9k attempting to play audio would hang,
since it would block waiting for the TX FIFO to empty.  With these
changes, Victor 9000 audio playback works as expected, with the data
getting sent serially to the Audio codec.

In order to avoid breaking m68sfdc, a new API call is added to allow
data to be sent the "old" way.  m68sfdc now calls
set_tx_pull_mode(true), to get the previous behavior.  As I understand
it, other devices using mc6852 must be broken, and would need to
be revisited.

* victor9k: complete Audio support, adding a low-pass filter after
the HC-55516 codec.  Mark victor9k Audio as working.
2025-04-11 18:48:57 -04:00
Ivan Vangelista
8c5e73a6fa New working clones
------------------
Pit Boss Megatouch (9235-00-01 R0A) [Brian Troha, The Dumping Union]
2025-04-11 20:31:57 +02:00
hap
1ac5dc155e chessmst: swap parent/clone 2025-04-11 20:25:10 +02:00
hap
cd3e00161a Clones promoted to working
--------------------------
Chess-Master (model G-5003-501) [kaiOr]
2025-04-11 20:25:10 +02:00
Vas Crabb
3e3d27dde5 Started moving UML instruction reference to main documentation, fixed more recompiler issues:
* cpu/drcbearm64.cpp Interpret index operand for load and store
  instructions as a signed 32-bit value for consistency with x86-64.
  Moved code to interpret load and scale the index for integer
  load/store to a helper function to make it easier to update if it
  needs changes or fixes.
* cpu/drcbearm64.cpp: Use and/orr to set carry flag directly rahter than
  using an intermediate register when both operands of a CARRY
  instruction are immediates.
* cpu/drcbearm64.cpp: Fixed incorrect operand type assertion for FREAD.
* cpu/drcbearm64.cpp: Use less verbose asmjit helper functions for shift
  operations and addressing modes.
* cpu/drcbex64.cpp: Interpret index operand for floating point
  load/store as a signed 32-bit value for consistency with integer
  load/store.
* cpu/drcbex64.cpp: Guard against any possibility of load and store
  instructions altering the flags.
* cpu/drcbex64.cpp: Reduced copy/paste in floating point load/store
  instructions.
* cpu/drcbex64.cpp: Cleaned up some casts between integer types with
  differing size and signedness.
* docs: Added reference for UML flow control, data movement and emulated
  memory access instructions.
* cpu/uml.cpp: Truncate immediates to size for a few more instructions.
* cpu/uml.cpp: Added SPACE_OPCODES since it's a well-known address space
  now.
* cpu/uml.cpp: Removed SCALE_DEFAULT.  It's unimplemented by back-ends
  and unused by front-ends.
* cpu/uml.h, cpu/drcumlsh.h: Less confusing names for parameters to read
  and write instruction generators.
* cpu/drcbex86.cpp: Templated 64-bit multiplication helpers on the
  zero/sign flag source, cleaned up casting pointers to integers.
2025-04-12 02:58:15 +10:00
Ivan Vangelista
45281a6baa New working clones
------------------
Triple Fever (V110US) [Ioannis Bampoulas]
2025-04-11 18:32:17 +02:00
ArcadeShadow
79652e97b4
megadriv.xml: Added 6 working items (#13485)
New working software list items
-------------------------------
Beyond Zero Tolerance (prototype 19950714) [Hidden Palace]
Eyra - The Crow Maiden (digital release) [no-intro]
Zero Tolerance (Europe, USA) (rev. C) [no-intro]
Zero Tolerance (Germany) [no-intro]
Zero Wing (Retro-Bit) [no-intro]
Zombies Ate My Neighbors (Limited Run Games) [no-intro]
2025-04-11 11:27:53 -04:00
AJR
518b42f83b tvdear.xml: Add alt_title field for illust2 2025-04-11 11:12:53 -04:00
mamehaze
c763459e3e
added a tvdear cart (#13574)
New software list items marked not working
------------------------------------------
Illust-Cassette No. 2 - Bad Badtz-Maru [TeamEurope]
2025-04-11 11:11:24 -04:00
holub
08ff607f3f
cpu/z80/z84c015.cpp: Isolated cpu-specific memory translate functions (#13581) 2025-04-11 17:04:01 +02:00
hap
f34dcc20ec dsp56ops: fix regression from prev commit 2025-04-11 15:34:34 +02:00
hap
74877969c1 misc cpu: no need to check debug enabled flag manually 2025-04-11 15:21:15 +02:00
Matthew Daniels
14644cb845
sega/model2.cpp: improve z-sort and clipping (#13575)
* model2: improve z-sort and clipping
Polygons in later windows are always drawn after polygons from earlier windows, regardless of z value.
Four planes representing the visible frustum are now used for polygon clipping; it is no longer necessary to add 1.0 to z during projection.

* model2: only reset the triangle z value at the start of the frame
Zero Gunner uses z value from previous object for enemy bullets; resetting z values leads to them not being visible
Setting master z-clip value to 0xFF disables z-clipping according to Model 2B-CRX manual
2025-04-11 07:48:28 -04:00
hap
899e857ef0 segaorun/xbd/ybd: lower perfect quantum a bit 2025-04-10 16:43:50 +02:00
hap
dcca8368e8 z80make: sort prefixes to have consistent generated output 2025-04-10 15:02:43 +02:00
fulivi
defaf6283c
MSX: add Video80 homebrew card (#13568)
* MSX: fixed vy0010 ROM image
2025-04-10 08:10:58 -04:00
hap
b8f93608a7 t6a84: remove unneeded devcb 2025-04-10 13:55:49 +02:00
holub
6e595d751f
z80/z80make.py: Revisited z80 code generator (#13573)
* z80/z80make.py: Revisited z80 code generator
* cpu/z80/t6a84.cpp: isolate device specific callbacks
2025-04-10 13:19:01 +02:00
m1macrophage
e0ea6961f7
sound/dac76.cpp: Emulating multiplying capability. (#13577)
* Added support for reference current (multiplying capability).
* Added support for voltage output.
* Added support for streaming reference current.
* Used those capabilities in oberheim/dmx.cpp and linn/linndrum.cpp.
2025-04-10 11:04:35 +02:00
Lord-Nightmare
6bc01c176c Fix cases where specific segment register settings could cause the i80186/188 peripherals to fail to be properly mapped into memory space. [crazyc, Lord Nightmare] 2025-04-09 17:26:39 -04:00
Vas Crabb
1c8234fb80 cpu/drcbex86.cpp: Fixed flags for 64-bit multiply instructions. 2025-04-10 07:00:50 +10:00
Vas Crabb
f0b88787fb dynax/dynax.cpp: Improved DIP switches for mjelctrn and majxtal7. 2025-04-10 05:50:39 +10:00
Ivan Vangelista
dcd6c81a78 New systems marked not working
------------------------------
Jin Sanse [little0]

New clones marked not working
-----------------------------
Kai Men Hu [little0]
2025-04-09 20:26:28 +02:00
Vas Crabb
67a0fb4af4 cpu/drcbearm64.cpp: Don't clear carry for ROLC/RORC with zero shift count. 2025-04-10 02:24:51 +10:00
Vas Crabb
51c9a3a0b1 Still more recompiler fixes:
* cpu/uml.cpp: Fixed some cases where simplifying multiplication
  instructons incorrectly changed output flags.
* cpu/drcbex64.cpp: Fixed some cases where a ROLC/RORC with zero shift
  count could incorrectly clear the carry flag.
* cpu/drcbex86.cpp: Made 64-bit ROLC/RORC with zero bit count preserve
  the carry flag.
* cpu/drcbec.cpp: Fixed FSMOV/FDMOV turning things that look like
  signalling NaNs into quiet NaNs on i686.
* cpu/drcbex64.cpp: Greatly reduced copy/paste in the code generation
  for multiply instructions.
2025-04-10 01:58:08 +10:00
Vas Crabb
cff4924beb cpu/uml.cpp: Fixed assertion failures when simplification reduces operand count.
* Also added a few more simplifications.
* cpu/drcbearm64.cpp, cpu/drcbex64.cpp: Removed more speical cases for
  things the simplifier deals with.
2025-04-09 22:07:11 +10:00
Brice Onken
3612c23f96
machine/dp83932c.cpp: Advance CRBA on packet RX (#13571) 2025-04-09 07:32:40 -04:00
Vas Crabb
1f871c19ee -A few recompiler adjustments:
* cpu/drcbec.cpp: Don't clear carry flag on a zero-bit rotate through
  carry.
* cpu/drcbex86.cpp: Don't clear carry flag on a word-sized zero-bit
  rotate through carry (64-bit case is more involved).
* cpu/drcbex64.cpp: Removed code for another special case of ROLAND that
  the simplifier deals with.

-konami/ksys573.cpp, bus/pccard/linflash.cpp: Corrected "Gacha Gachamp".
2025-04-09 16:33:50 +10:00
Roberto Fresca
9e61025370 naroutp.cpp driver improvements: [Roberto Fresca, Grull Osgo]
- Added new sets, worked inputs, DIP switches, layouts, lamps,
    and promoted to working: winbnk88, nor6007a, nor6007b,
    ddellf96, ddellf97, ddellf97a, ddellf97b, ddellf97c,
    ddellf97d, ddellf97e.
 - Hopper support for winbank88, nor6007a, and nor6007b.

Systems promoted to working
---------------------------
Winbank Joker Poker [Roberto Fresca, Grull Osgo]
Noraut Poker (6007 32k) [Roberto Fresca, Grull Osgo]
Noraut Poker (6007 64k) [Roberto Fresca, Grull Osgo]
Double Joker Poker Dellfern 1996 [Roberto Fresca, Grull Osgo]
Dellfern V18 (77's, 99's & Suits, 1 Credit) [Roberto Fresca, Grull Osgo]
Dellfern V18 (77's, 99's & Suits, 10 Credit) [Roberto Fresca, Grull Osgo]
Dellfern V18 (Joker Poker, raise bet, 2p/10p) [Roberto Fresca, Grull Osgo]
Dellfern V18 (£6 Jackpot Bank Poker) [Roberto Fresca, Grull Osgo]
Dellfern V18 (Joker Poker / Jack Plus) [Roberto Fresca, Grull Osgo]
Dellfern V18 (Amusement Poker) [Roberto Fresca, Grull Osgo]
2025-04-09 02:39:55 +02:00
m1macrophage
ccb469b9a7
sound/va_eg.cpp: Fixing subtle bugs. (#13570)
* Actually take a voltage snapshot when R or C change. This was being attempted, but didn't work because set_target_v would exit early if the target V was not changing. Made the snapshoting more explicit.
* Consider the EG done based on elapsed time, instead of proximity to target value. Some low volume DMX sounds were affected by this.
2025-04-09 00:36:19 +02:00
hap
1779ca5db6 screen: remove obsolete loadstate workaround 2025-04-08 23:54:48 +02:00
cam900
69b45ce25c
stern/mazerbla.cpp, video/mb_vcu.cpp: Updates/Cleanups: (#13569)
* video/mb_vcu.cpp:
 - Implement device_palette_interface for palette functionality.
 - Use an address space finder to access the host address space.
 - Use logmacro.h helpers for configurable logging.
 - Added a VRAM addressing helper.
 - Suppress side effects for debugger reads.
 - Cleanup 2bpp graphics drawing and screen update function.

* stern/mazerbla.cpp:
 - Reduced run-time tag lookups and preprocessor macros.
 - Reduced duplication and unnecessary trampolines.
 - Updated comments.
2025-04-09 07:37:45 +10:00
cam900
7214b1d748
bandai/wswan.cpp, bandai/wswan_v.cpp, shared/wswansound.cpp, virtual/vgmplay.cpp: Updates/Cleanups: (#13469)
* bandai/wswan.cpp:
 - Remove unused graphics decoding layout.
 - Fixed sound DMA, implemented DMA direction, moved DMA-related code into WonderSwan color state class.
 - Make some variables constant, reformatted code.

* bandai/wswan_v.cpp:
 - Split wonderswan color VDP device class into a separate class.
 - Move palette functionality from system driver into VDP device.
 - Corrected VRAM size.
 - Use bool for Boolean values.
 - Use logmacro.h helpers for configurable logging.
 - Reduced duplicated code.
 - Remove unused variables and code, reduced duplication, reformatted code.

* shared/wswansound.cpp:
 - Implemented Hypervoice.
 - Added mono speaker/stereo headphones selection.
 - Fixed some emulation issues and corrected output rate and volume.
 - Use logmacro.h helpers for configurable logging.

* virtual/vgmplay.cpp: Added Hypervoice support and stereo output for WonderSwan sound.
2025-04-09 07:30:15 +10:00
cam900
be3a4c60dc
-snk/k1ge.cpp: Cleaned up code: (#13478)
* Fixed save state support.
* Use indirect palette for color palette.
* Implemented full screen update function.
* Reduced a lot of duplication.
* Use more appropriate integer types, made some variables const, reformatted code.

-snk/ngp.cpp: Fixed save state support
* Also reduced literal tag usage and removed unnecessary screen update trampoline function.
2025-04-09 07:07:32 +10:00
ClawGrip
460c53ac48
midcoin/wallc.cpp: Use the original 2*2764 ROM program ROM arrangement for brkblast. (#13548) [Jordi Tuells]
Later examples replaced the two ROMs with a single 27128 to reduce costs.
2025-04-09 06:37:47 +10:00
ArcadeShadow
fdb7e6a002
neogeo.xml: Added four working items. (#13517)
New working software list items (neogeo.xml)
--------------------------------------------
Double Dragon One (demo) [OzzyOuzo]
Double Dragon One (prototype 1) [Casa de Ruivo]
Double Dragon One (prototype 2) [Casa de Ruivo]
Xeno Crisis [O'Cara-do-Sei-lá]
2025-04-09 06:35:33 +10:00
cam900
633e196e59
video/ppu2c0x*.cpp: Implemented device_palette_interface and cleaned up code: (#13491)
* Implement device_palette_interface for color palette functionality.
* Added some missing members to save states, and use fixed-size integer types for members that need to be saved.
* Moved many internal functions into protected: and private: sections.
* Use more appropriate integer types, made many local variables const.
2025-04-09 06:33:43 +10:00
shattered
689ed7c59d
ussr/dvk_kcgd.cpp: Corrected CPU type to K1801VP065 and removed serial speed workarounnd for MS7004 keyboard. (#13564)
* machine/ie15_kbd.cpp: Reassigned keys on the IE15 keyboard to match the layout of a VT52 keypad.
* ussr/ms0515.cpp, ussr/dvk_ksm.cpp: Removed keyboard serial speed workaround.
2025-04-09 06:13:23 +10:00
Vas Crabb
08875eebfa emu/diexec.cpp: Deal with the annoyances of the timer state machine 2025-04-09 05:06:47 +10:00
Vas Crabb
98b18d69f7 -emu/schedule.cpp: Restore timers expiring at the same time in the order they were scheduled when loading a saved state.
-emu/diexec.cpp: If a shorter input line pulse overlaps a longer pulse, don't shorten the pulse.

-cpu/e132xs: Added named input line number constants.

-video/sprite.cpp: Got rid of simple_list and fixed_allocator.
2025-04-09 04:22:53 +10:00
Vas Crabb
84a5fe1618 Corrected some Chinese UI translations. [aGuGu] 2025-04-09 02:06:37 +10:00
hap
0826ae066a diexec: change input_line_state getter back to int 2025-04-08 17:50:22 +02:00
angelosa
5a36097f04 nec/pc9801.cpp: add 1.44MB floppy 3-mode support 2025-04-08 16:18:43 +02:00
hap
49261a7dbc rohga: correction to prev commit 2025-04-08 11:19:54 +02:00
Ivan Vangelista
d8613f0d95 New systems marked not working
------------------------------
Bio Rhythm [Siftware]
Janken Man Ganso 2 [buffi]
Jipin Dou Di Zhu (set 1) [little0]
San Da Yi [little0]

New clones marked not working
-----------------------------
Feng Kuang Dou Di Zhu II [little0]
Jipin Dou Di Zhu (set 2)  [little0]

- bmc/koftball.cpp: identified a couple of inputs for jxzh [little0]

- igs/igspoker.cpp: added NVRAM support, split driver in subclasses, small cleanups

- kaneko/airbustr.cpp: added PLD dumps for the original sets [PLD Archive, f205v]
2025-04-08 06:43:10 +02:00
Roberto Fresca
e4d09c2b64 i8085 core: Readded the TODO item about the DSUB H flag verification. 2025-04-08 02:50:16 +02:00
hap
28ec18ab96 diexec: remove duplicate getter 2025-04-08 01:46:36 +02:00
hap
fe7a73df4b jack: remove unneeded irq ack callback 2025-04-08 01:46:36 +02:00
Vas Crabb
cce7b01de9 cpu/powerpc: Fixed issues in POWER div (signed divide) instruction causing GitHub #13329.
This was "working" on x86-64 due to the backend treating shift/rotate
instructions with zero immediate bit count as a no-op even if the source
and destination registaer aren't the same.  Fixing the bug in the
back-end caused it to break the same way on x86-64 as it does on the
other three back-ends that didn't have this bug.
2025-04-08 06:50:34 +10:00
Vas Crabb
63be095e58 -cpu/uml.cpp: Rewrote the UML simplification code.
* Fixed many cases that could cause the upper bits of a register not to
  cleared following a 32-bit operation.
* Added more simplifications.
* Allow many simplifications when flag updates are requested.
* Fixed various bits of unreachable code.
* cpu/drcbearm64.cpp, cpu/drcbex64.cpp: Removed code for special-casing
  some situations the simplifier can now take care of consistently.

-cpu/drcbex64.cpp: Fixed a bug causing some shifts to be treated as a
 no-op when the destination and source are not the same.

-cpu/drcbearm64.cpp, cpu/drcbex64.cpp: Added a special case for
 comparing something to itself.

-cpu/e132xs: Use the CARRY instruction rather than a right shift to set
 up carry in.
2025-04-08 06:42:46 +10:00