MAMEWorld >> News
View all threads Index   Flat Mode Flat  

Reged: 09/26/03
Posts: 1610
Loc: Germany
Send PM
MAMEinfo 0.193 :)
12/27/17 07:16 PM


* Updated to MAME 0.193 -

* Added Source/Listinfo changes

* Newest Bugs (27th Dec)

* Added/Reorganized 'Recommended Games'

* Fixed Mameinfo.dat infos

Download at:

MAME Testers at:


- New games: 4-in-1, Calcune (Japan, prototype), In Your Face (US, prototype), Joker Poker With Hi-Lo Double-Up, The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23), Slot (unknown bootleg?) and TelePachi Fever Lion (V1.0)
- New Working games: Action Fighter (FD1089B 317-unknown), Action Fighter (FD1089B 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-0018), Action Fighter (System 16B, FD1089B 317-unknown), Action Fighter (System 16B, FD1089B 317-unknown, analog controls), beatmania IIDX 4th style (GCA03 JAA), beatmania IIDX 6th style (GCB4U JAB), beatmania IIDX 6th style (GCB4U JAA), beatmania IIDX 7th style (GCB44 JAA), beatmania IIDX 8th style (GCC44 JAA), beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM), Dodonpachi Daioujou Tamashii (V201, China), Knights of Valour 2 New Legend (V300, China), Knights of Valour 2 New Legend (V301, China), Knights of Valour 2 New Legend (V302, China), Oriental Legend 2 (V101, China), Oriental Legend 2 (V103, China), Oriental Legend 2 (V104, China), San Francisco Rush: The Rock and Tazz-Mania (Arfyc / Rodmar bootleg)
- New Non-Working games: Golden Hexa, Hexa President, Multi Game IV (V.Ger 3.44), Pitch Hitter - Baseball Challenge, Real Battle Super Phoenix Mahjong (Version 4.1), Shuriken Boy and Torarechattano - AV Kantoku Hen (Japan)
- New clones: A-Blast (Japan), Amigo (bootleg of Amidar, set 2), Attack (Defender bootleg), Blood Bros. (US), Blue's Journey / Raguy (ALH-001), Dangerous Curves (Ver 2.9 O), Death Crimson OX (Rev A), Fantasy (Germany, set 2), G.I. Joe (Asia, AA), Galaxian Growing Galaxip / Galaxian Nave Creciente (Recreativos Covadonga Spanish bootleg), Jolly Card (Italian, bootleg), Oriental Legend 2 (V101, Oversea), Oriental Legend 2 (V103, Oversea), Oriental Legend 2 (V104, Oversea), San Francisco Rush 2049: Tournament Edition Unlocked, Super Bagman (Itisa, Spain), Teki Paki (location test), Twin Brats (set 1) and West Story (bootleg of Blood Bros., set 2)
- New AGEMAME games: Boot Scootin' (AHG1547, US), Bumble Bugs (CHG0479-99, US), Chicken (01J01886, NSW/ACT), Chicken (RHG0730-99, US), Enchanted Forest (AHG1615, US), Enchanted Forest (JHG0415-99, US), Filthy Rich (English), Green Lizard (AHG1623, US), Honkey Tonk - Cash Express (BHG1455, US), Inca Sun (01J01946, Venezuela), Keep Your Hat On (BHG1204, US), King Galah (AHG1625, US), Mine, Mine, Mine (NHG0416-99, US), Money To Burn (English), Mountain Money (BHG1464, US), Penguin Pays (OHG0417-02, US), Penguin Pays (OHG0417-03, US), Penguin Pays - Cash Express (AHG1544, US), Queen of the Nile (AHG1608, US), Queen of the Nile (GHG4091-03, US), Reel 'Em In (English), Wild Africa (AHG1535, US), Wild Cougar (AHG1531, US), Wild Cougar (NHG0296-07, US), Wild Cougar (NHG0296-99, US) and Winning Bid (English)
- New PinMAME games: Creature from the Black Lagoon (L-2) and Striker Xtreme (1.01 Italy)
- New TourVision games (Softwarelist: hash\pce_tourvision.xml): Final Soldier, PC Genjin, Saint Dragon, Splatterhouse, Tora e no Michi and Violent Soldier
- Removed games: Margarita Magic (EHG1559, US, set 2)
- New drivers: calcune.cpp, nsg6809.cpp and yuvomz80.cpp
- New devices: hd6309e, mc2661, mc6809, mc6809e, mos6551, pgm2_memcard, pit68230 and ripple_counter
- New mame.ini options: rewind = 0 and rewind_capacity = 100 (CORE STATE/PLAYBACK OPTIONS)
- ARM7/9 CPUs
. Fixed unaligned 16-bit loads
. LDMIA/STMIA always align to a 32-bit boundry (cpu\arm7\arm7thmb.cpp)
. Only define LSL, LSR, ROL & ROR when building the cpu core (cpu\arm7\arm7core.h). Protect trampoline constructors (cpu\arm7\arm7.h).
. Mask address LSB during 16/32 bit memory access, as per ARMv5/ARM9 behavior. Handle 2 magical ROR cases. This needed to be changed or split when we will be emulate ARMv6/ARM11 (cpu\arm7\arm7thmb.cpp).
- I386 CPU
. In the poentium_smi() routine all calls to WRITE32 have the parameters swapped
. x87 bug fixes and FERR support
. Small change to enter system management mode (cpu\i386\i386.cpp). Fixed rsm instruction (cpu\i386\pentops.hxx).
. Separated i8087 FPU device and added save state. Fixed i8087 regression pending further investigation with (MESS) Fanuc driver.
- I4004 CPU: MCS-40 is paged
- M680x0, MC68307 and MC68340 CPUs
. Refactor 680x0 so that member variables aren't public
. More static, less const and some irrelevant inline (cpu\m68000\m68kcpu.h).
. Removed safe_pc() from MC68307 and MC68340 CPU
- MC6809/HD6309 CPU
. Resolved the great device type/clock divider mix-up
. Fixed MC6809 clock speed in aeroboto.cpp, archrivl, beezer, bfcobra.cpp, bladestl.cpp, capbowl.cpp, citycon, darktowr, ddragon, de_2.cpp, de_3.cpp, de_3b.cpp, demoderb, ddungeon, exidy440.cpp, exprraid, firefox, gladiatr.cpp, gng.cpp, hotchase, itech8.cpp, itech32.cpp, jackal.cpp, jdreddp, joust2, kram3, maxrpm, mk, mpu12wbk.cpp, mpu4.cpp, mpu4avan.cpp, mpu4bwb.cpp, mpu4concept.cpp, mpu4crystal.cpp, mpu4empire.cpp, mpu4mdm.cpp, mpu4misc.cpp, mpu4mod2sw.cpp, mpu4plasma.cpp, mpu4sw.cpp, mpu4union.cpp, nbajam, nyny, pigskin, s11.cpp, s11a.cpp, s11b.cpp, s11c.cpp, sarge, sbasketb.cpp, shaolins.cpp, sigmab52.cpp, sonson, sothello, spdodgeb, spyhunt2, srumbler, stoffy, toffy, tattass, trisport, tstrike, vectrex.cpp, vertigo.cpp, whitestar.cpp, wpc_an.cpp, wpc_dot.cpp, wpc_flip1.cpp and wpc_flip2.cpp
. Replaced M6809 with MC6809E in aristmk4.cpp, balsente.cpp, baraduke.cpp, bigkarnk, bladestl, citycon, contra, de_3.cpp, de_3b.cpp, dec8.cpp, ddribble, exidy440.cpp, gaplus, halleys.cpp, hotchase, icecold, irobot, ironhors, mappy.cpp, mastkin, mikie, namcos1.cpp, namcos2.cpp, namcos21.cpp, namcos86.cpp, overdriv, pacland, pandoras, qix.cpp, skykid.cpp, spy, starwars.cpp, toypop.cpp, tp84, tutankhm, white_mod.cpp, whitestar.cpp, wico.cpp, williams.cpp, wmg, wpc_95.cpp, wpc_an.cpp and yiear
. Replaced M6809 with HD6309E in ajax and bottom9
. Replaced M6809E with MC6809 in byvid.cpp and wackygtr
. Replaced HD6309 with HD6309E in bladestl, contra and rockrage
- TMS9995 CPU
. Fixed debugger do command
. Fixed READY check on RESET (auto-waitstate)
- Z180 CPU: Fixed Z180_RCR_REFW and added Wait State Generator (DCNTL) support
- DCS sound
. Fixed DCS audio banking for DENVER and DSIO DCS audio
. DSIO and DENVER don't use SDRC DMA
- FM sound: Turn a bit more of fmopl into something resembling C++
- RF5C400 sound
. Fixed sound regression. This fixes Gradius IV, and also fixes the dog whistling and other issues in the beatmania IIDX games.
. Converted RF5C400 to use device_rom_interface.
. Save/restore the external memory registers. Moved static variable into device state. Fix the commented out osd_printf_debug. Fixed "always values". Added skeleton for reading and writing channel register 0x0F (which is used by the beatmania IIDX games).
- Williams ADPCM Sound Board: Lower ADPCM volume. This fixed possible volume balance issue in NBA Jam / Williams ADPCM Sound Board (ID 06780).
- YMZ770 sound: Implemented CHAN/SEQ "keep playing" command, document other known SPU in this series.
- YMZ774 sound
. Added sequencer, blind work based on KOF98UM rom data, not tested at all. Assume each sequencer have its own current bank.
. Implemented SQC thing on top of sequencers, fix sequencers timers setup.
. When SQC stopped stop SEQ too, make SEQ/SQC save state-friendly and cleanup.
. Added volume delayed transition and handle CHAN/SEQ pause/resume
- 6522 VIA: Eliminated truly ancient hack to default clock to that of first CPU. All VIAs in MAME now have properly configured clocks.
- 6850 ACIA: Created standard read/write handlers
- 8257 DMA: Added LOG messages
- ATA: Simplified class hierarchy so there is no ambiguity with 16 & 32 bit methods. Removed the memory system read/write handler trampolines from the ATA devices as they are not required (machine\atadev.cpp).
- Floppy: Updated debug printouts to use logmacro.h LOG messages (machine\wd_fdc.cpp)
- IDE: Disambiguated 16- and 32-bit CS access, and added non-space CS access methods
- Konami Custom: Removed space from k007121_device::ctrlram_r
- RS232: Added DCE RxC/TxC callbacks (untested) and table of standard signals
- SCSI Hard Disk: Use CHD IDNT metadata for inquiry and logmacro.h logging (machine\nscsi_hd.cpp)
- Taito Custom: Removed space and mem_mask from some TC0080VCO call
- VGA video: CRTC start address is supposed to be shifted left by 2, from 86Box (video\pc_vga.cpp).
- Voodoo GFX: Set number of SGRAM chips to 2 for 16M cards
- adp.cpp: Updated documentation. Clean up driver.
- amaticmg.cpp
. Some cleanup. Removed the third 8255 PPI from AMA-8000-1 system since only has two of them. AMA-8000-2 and the new hardware for MGIV have three PPI devices. Need to set the ports.
. Switched Multi Game III (V.Ger 3.64) to the new machine config since has a lot of similarities with The MGIV memory map
- atlantis.cpp, iteagle.cpp, seattle.cpp and vegas.cpp
. Promoted San Francisco Rush: The Rock to working
. Added wheel force control for initial calibration. Set wheel calibration complete as soon as any SYSTEM button is hit (seattle.cpp and vegas.cpp)
. NEC VRC5074 System Controller: Don't try to save zero length vectors (vegas.cpp)
. NEC VR4373 system controller: Corrected VRC4373 device/vendor id PCI field (atlantis.cpp and iteagle.cpp)
. SMC91C9X ethernet controller: Fixed loopback and added proper MMU handling. Switch from queue to vector for save state support. Added packet padding and variable transmit timing (seattle.cpp and vegas.cpp).
. Added gearshift to sfrush and sfrushrk
. Disconnect ethernet for War: The Final Assault. Fixes game hang at start.
. Midway DCS Audio: Fixed DCS audio banking for DENVER and DSIO DCS audio (atlantis.cpp and vegas.cpp). DSIO and DENVER don't use SDRC DMA. Fixes boot hang on Road Burners.
- bagman.cpp: Fixed Bagman dying sound plays repetitively when game starts (ID 06784)
- bfcobra.cpp: Fixed AY-3-8910 bad clock
- coolpool.cpp: Fixed stupid TMS340X0 Shift register bug
- cps1.cpp and kenseim.cpp: Substituted IOC1 PAL logically equivalent replacement with real dump from an unprotected device
- harddriv.cpp: Fixed harddriv sound
- ksys573.cpp: Improved Hyper Bishi Bashi Champ and Salary Man Champ control
- manohman.cpp: Merged Backgammon (adp.cpp) with manohman driver, which has a better description of same hardware. Reduced region size.
- mcr.cpp and mcr3.cpp: Moved some globals into the state class, started splitting some in subclasses.
- mermaid.cpp
. Added new generic ripple counter device to Rougien. This device emulates basic ripple counter logic ICs with fallingedge clocks and a synchronous reset inputs such as CD4040 and 74LS393.
. Don't break Mermaid and clone not using MSM5205 ADPCM
- metro.cpp: Added coin counters. Updated notes.
- micro3d.cpp: Added diagnostic terminals to the DrMath and VGB boards
- namcos12.cpp: Replaced strcmp with polymorphism in namcos12_state::machine_reset()
- pgm2.cpp
. Dumped internal rom from 'Dodonpachi Daioujou Tamashii (V201, China)', 'The King of Fighters '98: Ultimate Match HERO' and 'Oriental Legend 2 (Oversea) (English)' IGS036 chip. The 'Oriental Legend 2' cartridge confirming only the region byte changes in that case. Other regions, including Japan single PCB need confirming to see if there are further changes in those cases or not. As the Oversea version ignores the Card Reader MCU we can mark it as working, so new working machines.
. Make RTC ticking and removed orleg2 patch, its not needed anymore. Document PGM2 debug features.
. Updated IGS036 encryption to support kof98umh (machine\igs036crypt.cpp). Use uploaded IGS036 encryption tables for kov2nl and orleg2.
. Use sprite decryption keys uploaded by games where we have internal rom. Tweak MCU timing for kov2nl and hook shared ram.
. Added MCU HLE, now it works like if MCU/RW is alive but card is not inserted. Added ICRW simulation (machine\pgm2_memcard.cpp).
. Memcard reader now uses image_device stuff, cards can be inserted/removed and get saved. Use optional_device_array.
. Promoted The King of Fighters '98: Ultimate Match HERO (China, V100, 09-08-23), Knights of Valour 2 New Legend (V302, China), (V301, China), (V300, China), Oriental Legend 2 (V101, China), (V103, China) and (V104, China) to working. As each game/region requires a valid default card in order to save said cards are part of romset.
. IGS036 seems to be derived from a ARM946ES type core based on using MPU not MMU, change it to be such (cpu\arm7\arm7.cpp).
. Added PGM2 GPU registers notes. Added foreground scroll. Fixed end of sprite list handling. Dynamic resolution change. Fixed bug in yzoom code causing hang.
. Added default memcard for future use to Knights of Valour 3 (V104, China)
. Rewrote Atmel ARM AIC logic and implemented most features (machine\atmel_arm_aic.cpp)
. Allow ddpdojh to actually run code from ram rather than treating ram as rom (even if the game doesn't actually care). Added few notes.
- pgm2.cpp and igs_m036.cpp: The format of the IGS036 key tables is now compatible with the real ones provided by the internal ARM (machine\igs036crypt.cpp)
- segae.cpp: Minor documentation update
- tatsumi.cpp
. Driver state class separation
. Removed calls to driver_data
- toaplan2.cpp: Added line reads to GP9001 video controller for polling sync outputs and privatize a few things
- tourvis.cpp: Moved known games list to the software list (hash\pce_tourvision.xml)
- twinkle.cpp
. Many fixes to waveram banking and DMA, most sets are semi-playable now.
. Games promoted to working: beatmania IIDX 4th style (GCA03 JAA), beatmania IIDX 6th style (GCB4U JAB), beatmania IIDX 6th style (GCB4U JAA), beatmania IIDX 7th style (GCB44 JAA), beatmania IIDX 8th style (GCC44 JAA) and beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM).
. Changed RF5C400 clock to match board notes in driver. Added 8Mb of dummy ram to the RF5C400 and adjusted the banking so that sounds play correctly. Fixed RF5C400 sound regression. This fixes the dog whistling and other issues in the beatmania IIDX games.
. Improved LED font from available reference sources. Mapped lamps and dipswitches. Added basic internal artwork.
. Changed security card padding from 0x00 to 0xff. Security card for beatmania IIDX 4th & 5th has now been dumped and scrubbed serial numbers.
- vectrex.cpp: Quick and dirty regression fix
- zn.cpp: Mostly switched to configured banking. NBA Jam Extreme banking still to update. Very preliminary work on supporting save state. Will need more work in various devices. Use optional_memory_bank.
- 1941: Added yi22b.1a PAL dump and confirmed lwio.12e dump for clone 1941: Counter Attack (Japan)
- Action Fighter: Added 317-0018 decryption key to clones Action Fighter (FD1089B 317-unknown), (FD1089B 317-unknown, analog controls), (System 16B, FD1089A 317-0018), (System 16B, FD1089B 317-unknown) and (System 16B, FD1089B 317-unknown, analog controls) (Games now playable). Fixed year info in clones afightere, afighterf, afighterg and afighterh.
. aristmk5.cpp: Redumped Inca Sun (DHG1577, US), Loco Loot (AHG1513, US) and Unicorn Dreaming (BHG1584, US). Layout updates.
. jpmmps.cpp: Added 74LS259 device and correct clocks
. mpu4*.cpp: Proper CPU type and XTAL value
. stellafr.cpp: Added some devices
- Amiga: End driver_data use; make all functions and tables members. Eliminated driver_data dependencies in machine\amigafdc.cpp.
- Archimedes (aristmk5.cpp and ertictac.cpp): Clean 8bpp color handling (machine\archimds.cpp)
- Armed Police Batrider: Fixed Z80 CPU2 clock
- Batman Forever and NBA Jam Extreme: Fixed Acclaim RAX sound
- Beezer: Sound section has its own XTAL
- Blood Bros.: Verified sprite data in clone West Story by converting original mask rom into bootleg format and figuring out what was scrambled from there, it's a very simple but quite stupid bitswap on 2 of the roms. Made a note that one byte actually differs in the bootleg even after this, since it's been verified on 2 bootlegs it could be the original mask rom has a bad byte in it instead, should really be checked.
- Borderline: Demoted clone Borderline (Tranquillizer Gun conversion) due to bad rom dump (never should have been considered working)
- Chequered Flag: Notes and demotion to IMPERFECT_COLORS / UNEMULATED_PROTECTION
- Fruit Deuce: Added devices
- Ghosts'n Goblins: Added correct character rom to clone Ghosts'n Goblins (prototype)
- Gradius IV: Fixed RF5C400 sound regression
- Head On: Minor documentation update for clone Super Crash (bootleg of Head On)
- Iron Horse: Measured clocks
- Landing Gear: Fixed throttle control
- Mario Bros.: Verified Mario Bros. (US, Unknown Rev) as revision G and identified the unknown PROM as the main cpu memory map decoding PROM.
- Megadrive hardware: Removed driver_data usage (machine\megadriv.cpp; drivers\hshavoc.cpp, megadrvb.cpp, megaplay.cpp, megatech.cpp, puckpkmn.cpp and segac2.cpp)
- Mighty Warriors: Switched to configured banking
- Paint & Puzzle: Updated notes based on schematics
. idsa.cpp: Random fixes
. wpc_an.cpp: CPU type and clock determined
. Updated zira.snd rom for Zira. According to the schematic this is a 2716 rom with a size of 2048 and it contains the same code twice.
- Polaroid Instant Memories: Added MC1408 DAC sound. At the moment it simply outputs all the speech strings, one after the other, then stops.
- Quizard 3: Decapped and dumped MCU
- Spy Hunter: Added CD4099 demuxer for lamps
- Surprise Attack: Fixed visible area (ID 06683)
- T.T Mahjong: Added Player 2 inputs
- Twin Brats: Corrected OKI clock
- X the Ball: Added 74LS259 addressable latches
- Input port
. Eliminated legacy read/write methods and "active bit" nonsense (machine\ticket.cpp)
. Fixed random strings of question marks in displayed key names (emu\ioport.cpp)
- Dipswitch fixes in aristmk5.cpp, pgm2.cpp, rbmk.cpp, twinkle.cpp and vicdual.cpp
- Fixed year info for afighter, anpanman, batlgear, gal3, mastrglf, pacapp, panicprk, shabdama, thunderh and vs2v991
- Fixed rom names in asuka.cpp, bloodbro.cpp, cps1.cpp, gottlieb.cpp, segae.cpp, seta2.cpp and zn.cpp
- Description changes of A-Blast (bootleg), Action Fighter (FD1089B 317-unknown), Action Fighter (FD1089B 317-unknown, analog controls), Action Fighter (System 16B, FD1089A 317-0018), Action Fighter (System 16B, FD1089B 317-unknown), Action Fighter (System 16B, FD1089B 317-unknown, analog controls), Amigo (bootleg of Amidar, set 1), Blood Bros. (Japan), Blood Bros. (World?), Blood Bros. (Japan, rev A), Cadillacs and Dinosaurs (Asia TW 930223), Crush Roller (Famare SA PCB), Fantasy (Germany, set 1), Hang-On Jr. (Rev. B), Margarita Magic (EHG1559, US), Mario Bros. (US, Revision G), Paint 'N Puzzle, Real Battle Mahjong King (Version 8.8), Striker Xtreme (1.02 France), Striker Xtreme (1.03 Germany), Striker Xtreme (1.02 Italy), Striker Xtreme (1.02 Spain), Striker Xtreme (1.01 UK), Tazz-Mania (Arfyc / Rodmar bootleg), Twin Brats (set 2), Twin Brats (set 3) and West Story (bootleg of Blood Bros., set 1)
- Renamed (bloodbro) to (bloodbroja), (bloodbroa) to (bloodbroj), (bloodbrob) to (bloodbro), (dangcurv) to (dangcurvj), (deathcox) to (deathcoxo), (filthyr) to (filthyrr), (gijoea) to (gijoeea), (mario) to (mariof), (marioo) to (mario), (mtburn) to (mtburnr), (orleg2) to (orleg2_104cn), (orleg2_101) to (orleg2_101cn), (orleg2_103) to (orleg2_103cn), (penbrosk) to (ablastb), (reelemin) to (reeleminr), (twinbrat) to (twinbrata), (twinbrata) to (twinbratb), (weststry) to (weststory) and (winbid) to (winbidr)
. UI
. Fixed can't change into directories that have a "." prefix in their name (ui\filesel.cpp and posixdir.cpp) (ID 06785)
. Fixed off-by-one crash (ui\selsoft.cpp)
. API change (emu\emumem.cpp): * direct_read_data is now a template which takes the address bus shift as a parameter. * address_space::direct() is now a template method that takes the shift as a parameter and returns a pointer instead of a reference. * The address to give to {read|write}_* on address_space or direct_read_data is now the address one wants to access. Longer explanation: Up until now, the {read|write}_* methods required the caller to give the byte offset instead of the actual address. That's the same on byte-addressing CPUs, e.g. the ones everyone knows, but it's different on the word/long/quad addressing ones (TMS, Sharc, etc...) or the bit-addressing one (TMS340x0). Changing that required templatizing the direct access interface on the bus addressing granularity, historically called address bus shift. Also, since everybody was taking the address of the reference returned by direct(), and structurally didn't have much choice in the matter, it got changed to return a pointer directly. Longest historical explanation: In a cpu core, the hottest memory access, by far, is the opcode fetching. It's also an access with very good locality (doesn't move much, tends to stay in the same rom/ram zone even when jumping around, tends not to hit handlers), which makes efficient caching worthwhile (as in, 30-50% faster core iirc on something like the 6502, but that was 20 years ago and a number of things changed since then). In fact, opcode fetching was, in the distant past, just an array lookup indexed by pc on an offset pointer, which was updated on branches. It didn't stay that way because more elaborate access is often needed (handlers, banking with instructions crossing a bank...) but it still ends up with a frontend of "if the address is still in the current range read from pointer+address otherwise do the slowpath", e.g. two usually correctly predicted branches plus the read most of the time. Then the >8 bits cpus arrived. That was ok, it just required to do the add to a u8 *, then convert to a u16/u32 * and do the read. At the asm level, it was all identical except for the final read, and read_byte/word/long being separate there was no test (and associated overhead) added in the path. Then the word-addressing CPUs arrived with, iirc, the tms cpus used in atari games. They require, to read from the pointer, to shift the address, either explicitely, or implicitely through indexing a u16 *. There were three possibilities: 1. Create a new read_* method for each size and granularity. That amounts to a lot of copy/paste in the end, and functions with identical prototypes so the compiler can't detect you're using the wrong one. 2. Put a variable shift in the read path. That was too expensive especially since the most critical cpus are byte-addressing (68000 at the time was the key). Having bit-adressing cpus which means the shift can either be right or left depending on the variable makes things even worse. 3. Require the caller to do the shift himself when needed. The last solution was chosen, and starting that day the address was a byte offset and not the real address. Which is, actually, quite surprising when writing a new cpu core or, worse, when using the read/write methods from the driver code. But since then, C++ happened. And, in particular, templates with non-type parameters. Suddendly, solution 1 can be done without the copy/paste and with different types allowing to detect (at runtime, but systematically and at startup) if you got it wrong, while still generating optimal code. So it was time to switch to that solution and makes the address parameter sane again. Especially since it makes mucking in the rest of the memory subsystem code a lot more understandable.
. Constexpr implies inline, generalise iabs, work around lack of C++14 constexpr in VS2015 (emu\emucore.h and emumem.cpp/h).
. Replaced space.machine() with machine() (emu\emumem.cpp)
. Eliminated remaining uses of address_space::machine() outside of emumem (debug\debugbuf.cpp, debugcmd.cpp and machine\seibucop\seibucop_cmd.hxx)
. Removed machine member of address_space (emu\emumem.cpp)
. Fixed -listdevices misplacement of subdevices in some configurations (mame\clifront.cpp)
. Moderate overhaul of device_rom_interface: Allow endianness and data/address width to be altered during configuration. Raise memory_space_config from private to protected so it can be overridden. Make entire interface optional (as needed by one device to be added soon). Use interface_post_load instead of explicitly registered delegate. Only call rom_bank_updated when bank actually changes. Removed prototypes for nonexistent functions (emu\dirom.cpp). Documentation update (docs\source\techspecs\device_rom_interface.rst).
. Replaced some space.device() calls (drivers\namcos11.cpp, namcos22.cpp, namcos23.cpp, naomi.cpp, rmhaihai.cpp, witch.cpp, x1.cpp, x68k.cpp, xexex.cpp, xmen.cpp, xyonix.cpp, yunsung8.cpp and zn.cpp)
. Eliminated device pointer conversion from device_interface (emu\device.h)
. Added rewind feature and RAM savestates
. How RAM states work: Implemented using util::vectorstream. Instead of dumping m_save.m_entry_list to file, it writes them as binary to vectorstream. Compression is not used, as it would slow down the process. The header is written as usual, also in binary. When a state is loaded, the savestate data gets binary-read from vectorstream. How rewind works: Rewind is optional, it can be turned off through MAME GUI while not running. Rewind capacity is available there too. Rewind step hotkey is available from the standard hotkey menu. In the debugger you have the "rewind" command ("rw" shortcut) that works the same as the hotkey. Every time you advance a frame (pause step), rewinder captures a RAM savestate of the frame you were at. It does the same when you do step into/over/out in the debugger. Every time it captures a new state (and when you unpause), it marks as invalid all its states that go after the current machine time, because input might change, so they are not relevant anymore. It keeps their buffers allocated though, for future use. When rewinder runs out of allowed amount of savestates it can have, it invalidates the first state in the list and tosses its unique_ptr to the end of the list, then it uses its buffer to capture a new state. When you hit the rewind step key, or use "rewind" command in the debugger, it loads a state that is immediately before the current machine time. Invalid states between valid ones are not allowed to appear, as that breaks rewinder integrity and causes problems. Rewinder keeps its own set of ram states as a vector of unique_ptr's. All rewinder operations and errors get reported using machine().popmessage().
. icount was missing from the savestates. When you load a state, icount (*icountptr) would remain whatever it was before loading, messing with the remaining cycles and with the amount of code executed per run() call. This introduced non-determinism and badly influenced usage of savestates while debugging. machine().time() would also return wrong values after that, since it adds remaining cycles (emu\diexec.cpp).
. Reset scheduler savestate to what it was for years before rewind. Changing saved variables should be done after thorough testing. right now, adding some vars breaks some machines, adding other vars breaks others. Switch to megabyte-wise capacity. Savestate size greatly differs between machines, relying on state count is unstable. Switch to internal indexing. No longer depends on inaccurate machine time. Rewind accelerator key in debugger (Ctrl+F11). Report capacity hit (once), with some useful info. Make error reports saner. Mention rewind and rewind_capacity in the docs.
. Get rid of legacy BITSWAP* (BITSWAP8(_) -> bitswap<8>(_)) (emu\emucore.h)
. Stop save and load logging timers unless VERBOSE is set (emu\schedule.cpp)
. Changed misleading parameter name (emu\softlist_dev.cpp)
. Validity: Prevent insane recursion when multiple slot devices have the same tag (emu\validity.cpp)
. Fixed sentence building by concatenation, and at the same time collapse two translatable strings to one (plugins\cheatfind\init.lua).
. Raise a fatal error if LUA console is requested but the console plugin is not found (rather than crashing) (frontend\mame\mame.cpp)
. Updated hiscore.dat. Removed duplicate sets, debug print and merged identical entries.
. Fixed crlf issue (plugins\data\load_dat.lua)
. 3rdparty: Updated GENie, BGFX and BX. Added BIMG since it is separated now, updated all shader binaries and MAME part of code to support new interfaces.
. Multi-Language: Updated Brazilian Portuguese, French and Italian translations. Note: All translation updated to follow GNOME Translation Rules for Brazilian Portuguese, this are the same rules for other Linux Distributions, Manuals, etc. Now we can avoid translation conflicts ( and
. Added preliminary YM2608 OPNA support for VGM player
- Compiling
. Start replacing auto_alloc_* with smart pointers, get rid of reference constants in the debugger in favour of capturing the value in the bind/lambda (cpu\i386\i386.cpp, debug\debugcmd.cpp/h, debugcpu.cpp/h, express.cpp/h, mame\cheat.cpp/h, drivers\amusco.cpp, coolridr.cpp, includes\cave.h, wecleman.h, video\cave.cpp and wecleman.cpp).
. Allow compiler a little more optimisation leeway in x86 count_leading_* (emu\validity.cpp, osd\eigccx86.h and eivc.h)
- Debugger
. Disassemblers are now independant classes. Not only the code is cleaner, but unidasm has access to all the CPU cores again. The interface to the disassembly method has changed from byte buffers to objects that give a result to read methods. This also adds support for lfsr and/or paged PCs. Fixed building with Visual Studio 2017 & Clang 5.0.0 (also tested with GCC 7.2.0).
. Reset m_dasm on source switch (debug\debugvw.h and dvdisasm.cpp/h)
. Added nicer autoscrolling (debug\dvdisasm.cpp)
. Fixed watchpoint hit message for address-shifted processors (debug\debugcpu.cpp). Fixed memory window (debug\dvmemory.cpp).
. Changed back to uppercase hex for util::stream_format (debug\debugbuf.cpp)
. Set REG_BEAMX/BEAMY/FRAME to 0 on invalid eg. screenless (debug\dvstate.cpp)
. Removed stutter in dump command ASCII bytes (debug\debugcmd.cpp)

"Theory is when you know everthing but nothing works. Practice is when everything works but no one knows why.
In our lab, theory and practice are combined: nothing works and no one knows why."

Entire thread
Subject Posted by Posted on
* MAMEinfo 0.193 :) MASH 12/27/17 07:16 PM
. * r90472 MASH  01/10/18 03:28 AM

Extra information Permissions
Moderator:  John IV, Tafoid 
2 registered and 36 anonymous users are browsing this forum.
You cannot start new topics
You cannot reply to topics
HTML is enabled
UBBCode is enabled
Thread views: 203