summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/voodoo.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Fix voodoo and sharc saving to abide by new rules. Aaron Giles2021-04-191-1/+6
|
* Replace remaining STRUCT_MEMBER macros with proper structured saves. Aaron Giles2021-04-141-138/+12
|
* Eliminate ARRAY_LENGTH template in favor of C++17's std::size AJR2021-02-141-21/+19
| | | | | | | | | | * osdcomm.h: Move definition of EQUIVALENT_ARRAY to coretmpl.h * sharc.cpp, gt64xxx.cpp, ym2413.cpp, gb_lcd.cpp, snes_ppu.cpp: Use STRUCT_MEMBER for save state registration * gio/newport.cpp, megadrive/svp.cpp, nes_ctrl/bcbattle.cpp, arm7.cpp, tms9995.cpp, pckeybrd.cpp, sa1110.cpp, sa1111.cpp, jangou_blitter.cpp, vic4567.cpp: Use std::fill(_n) instead of memset * emucore.h: Remove obsolete typedef
* Fairly significant overhaul of Lua engine and some cleanup. Vas Crabb2020-11-251-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The things that were previously called device iterators are not iterators in the C++ sense of the word. This is confusing for newcomers. These have been renamed to be device enumerators. Several Lua methods and properties that previously returned tables now return lightweight wrappers for the underlying objects. This means creating them is a lot faster, but you can't modify them, and the performance characteristics of different operations varies. The render manager's target list uses 1-based indexing to be more like idiomatic Lua. It's now possible to create a device enumerator on any device, and then get subdevices (or sibling devices) using a relative tag. Much more render/layout functionality has been exposed to Lua. Layout scripts now have access to the layout file and can directly set the state of an item with no bindings, or register callbacks to obtain state. Some things that were previously methods are now read-only properties. Layout files are no longer required to supply a "name". This was problematic because the same layout file could be loaded for multiple instances of the same device, and each instance of the layout file should use the correct inputs (and in the future outputs) for the device instance it's associated with. This should also fix video output with MSVC builds by avoiding delegates that return things that don't fit in a register.
* Fix most implicit fallthrough warnings from clang Vas Crabb2020-11-171-2/+2
|
* Enable GCC implicit fallthrough warning. Vas Crabb2020-11-151-1/+2
| | | | | | I've guessed whether break or [[fallthrough]] is appropriate. In cases where it looked particularly suspicious, I added a FIXME comment. All of these changes should be reviewed by someone familiar with the code.
* -Switch to building MAME as C++17. Vas Crabb2020-11-151-2/+22
| | | | | | | * Updated sol2 to 3.2.2 * Updated pugixml to 1.10 * Increased minimum clang version to 6 * Cleaned up some stuff that can use new features
* Cleaned up bitmap API. Vas Crabb2020-09-271-4/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Made const-qualified pixel accessors (pix, pixt, raw_pixptr) return const-qualified references/pointers to pixesl, and added non-const versions. This makes bitmap more like standard library containers where const protects the content as well as the dimensions. Made the templated pixt accessor protected - having it public makes it too easy to inadvertently get a pointer to the wrong location. Removed the pix(8|16|32|64) accessors from the specific bitmaps. You could only use the "correct" one anyway, and having the "incorrect" ones available prevented explicit instantiations of the class template because the static assertions would fail. You can still see the pixel type in the bitmap class names, and you can't assign the result of &pix(y, x) to the wrong kind of pointer without a cast. Added fill member functions to the specific bitmap template, and added a explicit instantiations. This allows the bitmap size check to be skipped on most bitmap fills, although the clipping check is still there. Also fixed a couple of places that were trying to fill an indexed 16-bit bitmap with rgb_t::black() exposed by this (replaced with zero to get the same net effect). The explicit template instantiations in the .cpp file mean the compiler can inline the function if necessary, but don't need to generate a local out-of-line body if it chooses not to. Extended the size of the fill value parameter in the base bitmap class to 64 bits so it works correctly for 64-bit bitmaps. Fixed places where IE15 and VGM visualiser weren't accounting for row bytes potentially being larger than width. Fixed an off-by-one in an HP-DIO card where it was treating the Topcat cursor right edge as exclusive. Updated everything to work with the API changes, reduced the scope of many variables, added more const, and replaced a few fill/copy loops with stuff from <algorithm>.
* voodoo.cpp: Disabled debug statistics popup Ted Green2020-07-301-16/+22
|
* voodoo.cpp: Only flag texture controls as changed if they are actually changed. Ted Green2020-07-021-6/+11
|
* voodoo: Disable backbuf debug key (L), it interferes with player 3 default ↵ Ted Green2020-06-291-2/+2
| | | | controls
* voodoo: Eliminate auto_alloc (nw) AJR2019-12-291-5/+5
|
* voodoo: hopefully enough to stop it from crashing when device memory isn't ↵ Vas Crabb2019-12-141-93/+654
| | | | pre-cleared; also some cleanup (nw)
* clean up some .hxx abuse (nw) Vas Crabb2019-10-051-3/+3
|
* (nw) misc cleanup: Vas Crabb2019-09-201-1/+2
| | | | | * get rid of most assert_always * get rid of a few MCFG_*_OVERRIDE
* devices/video/voodoo.cpp : Simplify handlers cam9002019-04-271-25/+25
|
* voodoo: Mark frame buffer as changed after direct lfb write. Fixes missing ↵ Ted Green2018-11-141-0/+2
| | | | text during nbagold power on tests. (nw)
* Renamed flipendian -> swapendian, as I spent minutes trying to find the ↵ mooglyguy2018-11-051-8/+8
| | | | functions to tell to another person who spent minutes trying to find the functions, and we refer to such functions as swapping just about everywhere else in the codebase, nw
* voodoo: deal with needing to be able to configure screen/CPU or set them at ↵ Vas Crabb2018-05-231-32/+54
| | | | | | | | start in a safer way devfind: revert previous change - if finders aren't set in stone after device_resolve_objects it's going to lead to all kinds of hard-to-diagnose bugs (I'll add more checks for this some time after release) (nw) also clean up rotting tabulation
* voodoo: Use device finders instead of machine().device (nw) Ryan Holtz2018-05-211-28/+22
|
* remove safe_pc() and safe_pcbase() (nw) smf-2018-04-131-8/+8
|
* voodoo: Correct vsync timing and remove anonymous timer. Ted Green2018-03-281-18/+32
|
* xtal.h is dead, long live to xtal.cpp [O. Galibert] Olivier Galibert2018-01-231-1/+1
|
* voodoo: Use CRTC registers for vblank start. Fixes viper regression caused ↵ Ted Green2018-01-061-5/+7
| | | | by last voodoo commit. (nw)
* Calculate screen size and timing using voodoo CRTC and PLL registers. (nw) Ted Green2018-01-061-7/+29
|
* Revert "Revert "Merge branch 'master' of https://github.com/mamedev/mame"" Firehawke2017-12-131-1/+4
| | | | This reverts commit 54155441e9ba9941e85d80c4834a66376a11e791.
* Revert "Merge branch 'master' of https://github.com/mamedev/mame" Firehawke2017-12-131-4/+1
| | | | | This reverts commit f537428e5a40ba6dde8ca9bf0fe9ae6b1f189ac4, reversing changes made to 0d70d798107d4e4e8fb9f230410aeb1e888d65c5.
* voodoo: Set number of SGRAM chips to 2 for 16M cards. (nw) Ted Green2017-12-041-1/+4
|
* suppress function-like macro expansion for MSVC (nw) Vas Crabb2017-11-091-3/+3
|
* voodoo: Use SSE routines for texture perspective correction. (nw) Ted Green2017-11-041-2/+2
|
* voodoo: Incorporate some more sse optimizations. (nw) Ted Green2017-10-121-1/+1
|
* voodoo: Reorganize a few function calls to make profiling easier. (nw) Ted Green2017-10-111-4/+10
|
* voodoo: Add some code optimizations. (nw) Ted Green2017-10-081-13/+17
|
* voodoo: Use table lookup for RGB565 conversion. (nw) Ted Green2017-10-011-9/+34
|
* voodoo: Revert to using lower 16 bits of zaColor only. Fixes depth ↵ Ted Green2017-09-111-4/+4
| | | | buffering from last commit for Voodoo 2 cards and greater. (nw)
* voodoo: Fixed subtle casting bug. The uncasted depth in the expanded ↵ Ted Green2017-09-111-4/+4
| | | | variable calculation was causing a possible sign extension into the top 32 bits of expanded. Allows obsidian manufacturing test in calspeed to pass. (nw)
* voodoo: Remove wrapping after y origin conversion so that proper y-clipping ↵ Ted Green2017-08-301-4/+5
| | | | is performed. Fixes pool cue wrapping out of top the screen in virtpool. (nw)
* voodoo: Fixup logging and implement actual vRetrace and hvRetrace functions. ↵ Ted Green2017-06-291-24/+44
| | | | (nw)
* viper: revert to using internally generated vblank. voodoo: Write register ↵ Ted Green2017-06-141-0/+1
| | | | data to intrCtrl. (nw)
* voodoo: Extend PCI interrupt support to Voodoo 2 and above. (nw) Ted Green2017-06-141-20/+10
|
* voodoo: Separate vblank (external) and pci interrupt (internal) callbacks. (nw) Ted Green2017-06-141-14/+32
|
* voodoo: Also calculate dither pointer when needed for fogging. Fixes ↵ Ted Green2017-06-041-1/+1
| | | | graphics crash in sf2049. (nw)
* some more Voodoo cleanup (nw) Vas Crabb2017-05-251-199/+151
|
* Move static data out of devices into the device types. This is a ↵ Vas Crabb2017-05-141-301/+326
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | significant change, so please pay attention. The core changes are: * Short name, full name and source file are no longer members of device_t, they are part of the device type * MACHINE_COFIG_START no longer needs a driver class * MACHINE_CONFIG_DERIVED_CLASS is no longer necessary * Specify the state class you want in the GAME/COMP/CONS line * The compiler will work out the base class where the driver init member is declared * There is one static device type object per driver rather than one per machine configuration Use DECLARE_DEVICE_TYPE or DECLARE_DEVICE_TYPE_NS to declare device type. * DECLARE_DEVICE_TYPE forward-declares teh device type and class, and declares extern object finders. * DECLARE_DEVICE_TYPE_NS is for devices classes in namespaces - it doesn't forward-declare the device type. Use DEFINE_DEVICE_TYPE or DEFINE_DEVICE_TYPE_NS to define device types. * These macros declare storage for the static data, and instantiate the device type and device finder templates. The rest of the changes are mostly just moving stuff out of headers that shouldn't be there, renaming stuff for consistency, and scoping stuff down where appropriate. Things I've actually messed with substantially: * More descriptive names for a lot of devices * Untangled the fantasy sound from the driver state, which necessitates breaking up sound/flip writes * Changed DECO BSMT2000 ready callback into a device delegate * Untangled Microprose 3D noise from driver state * Used object finders for CoCo multipak, KC85 D002, and Irem sound subdevices * Started to get TI-99 stuff out of the TI-990 directory and arrange bus devices properly * Started to break out common parts of Samsung ARM SoC devices * Turned some of FM, SID, SCSP DSP, EPIC12 and Voodoo cores into something resmbling C++ * Tried to make Z180 table allocation/setup a bit safer * Converted generic keyboard/terminal to not use WRITE8 - space/offset aren't relevant * Dynamically allocate generic terminal buffer so derived devices (e.g. teleprinter) can specify size * Imporved encapsulation of Z80DART channels * Refactored the SPC7110 bit table generator loop to make it more readable * Added wrappers for SNES PPU operations so members can be made protected * Factored out some boilerplate for YM chips with PSG * toaplan2 gfx * stic/intv resolution * Video System video * Out Run/Y-board sprite alignment * GIC video hookup * Amstrad CPC ROM box members * IQ151 ROM cart region * MSX cart IRQ callback resolution time * SMS passthrough control devices starting subslots I've smoke-tested several drivers, but I've probably missed something. Things I've missed will likely blow up spectacularly with failure to bind errors and the like. Let me know if there's more subtle breakage (could have happened in FM or Voodoo). And can everyone please, please try to keep stuff clean. In particular, please stop polluting the global namespace. Keep things out of headers that don't need to be there, and use things that can be scoped down rather than macros. It feels like an uphill battle trying to get this stuff under control while more of it's added.
* voodoo: Revert texture base address calculation to fix seattle driver. (nw) Ted Green2017-04-221-4/+2
|
* voodoo: Change multi base address selection to fix funkball textures. Ted Green2017-04-201-6/+10
|
* Self-registering devices prep: Vas Crabb2017-02-271-6/+6
| | | | | | | | | | | | | | * Make device_creator a variable template and get rid of the ampersands * Remove screen.h and speaker.h from emu.h and add where necessary * Centralise instantiations of screen and speaker finder templates * Add/standardise #include guards in many hearers * Remove many redundant #includes * Order #includesr to help catch headers that can't be #included alone (nw) This changes #include order to be prefix, unit header if applicable then other stuff roughly in order from most dependent to least dependent library. This helps catch headers that don't #include things that they use.
* Remove device_config_complete from numerous devices that don't really need ↵ AJR2017-02-091-10/+0
| | | | it (nw)
* converted lot of TRUE/FALSE to real boolean and updated types (nw) Miodrag Milanovic2016-10-221-59/+59
|
* NOTICE (TYPE NAME CONSOLIDATION) Miodrag Milanovic2016-10-221-241/+241
| | | | | Use standard uint64_t, uint32_t, uint16_t or uint8_t instead of UINT64, UINT32, UINT16 or UINT8 also use standard int64_t, int32_t, int16_t or int8_t instead of INT64, INT32, INT16 or INT8