Sent: Wednesday, August 26, 2009 5:57 AM
To: submit@mamedev.org
Subject: MAME cheat search engine
This is a diff of my cheat search engine with help of Pugsy.
This is only a first part, not has the same functions of the old search engine, but is better than nothing
I have update the search engine to support search of byte, word, dword
and qword signed and unsigned.
- Inlined a number of functions for possible speed increase
- Removed some memory buffering cruft, to be re-added later
- Fixed behavior of ASR opcode
- With additional MESS-side changes, Stunt Race FX is playable, and Vortex shows much more.
- No more iterations
- The CD4066 internal resistance largely determines sound amplitude. This may vary significantly depending on VCC and type (74HC, 74HCV, CD4066, ...). The current choice makes scramble sound "about right".
- Fixed disassembly of LMULT/FMULT ops
- Fixed reads using LDW/LDB
- Fixed writes using STW/STB
- Fixed SBC carry behavior
- Fixed GETC ROM access behavior
- Some SuperFX games begin to show things in MESS
- Indirect addressing was not taking into account special purpose memory mapped locations.
- 'iorlw' instruction was saving the result to memory instead of the W register.
- 'tris' instruction no longer modifies Port-C on PIC models that do not have Port-C implemented.
Also added difficulty DIP to BigTwin
> -----Original Message-----
> From: Gabriele Gorla [mailto:gorlik@penguintown.net]
> Sent: Saturday, August 29, 2009 5:39 AM
> To: submit@mamedev.org
> Cc: Gabriele Gorla
> Subject: Re: i386: fix carry/borrow flag in ADC/SBB
>
> > the original code implements ADC and SBB as 2 consecutive ADDs.
> > This will not produce the correct result when the carry is generated
> by
> > the first addition as it is overwritten by the second operation.
>
> updated patch, fixes a typo.
Hi mamedev,
This patch continues deglobalifying the MAME core, this time targeting
sound.c. The first two patches adds running_machine to apis in
sound.h that lack it (the first patch is generated by the perl script,
the second patch fixes some cases it didn't handle well). The last
patch then removes the globals in the traditional way.
~aa
- some more "list-ification"
- No more constraints on number of input and output nodes
- input nodes now make use of a context
Some of these changes are needed to introduce "internally buffered" input nodes going forward. These will use an internal stream to buffer all inputs so that stream_update will always calculate 20ms of samples.
- Disabled RAM/ROM clocking, going with instant transfer for now
- Understood and re-enabled pipelined instruction architecture, Star Fox runs farther
- Fixed a ridiculous typo in ROL instruction
- Corrected carry flag behavior in ROL opcode
- Corrected BRA target address calculation (maybe still wrong)
- Corrected LOOP target address calculation
- Made sure that FROM sets cpustate->sreg_idx
Introduced DISCRETE_TASK_START, DISCRETE_TASK_END
DISCRETE_TASK_START
- Start a new task. A task is a set of nodes which only depend on input nodes and nodes in the set
DISCRETE_TASK_END(task_output_node)
- Marks the end of the task. task_output_node is the node whose output over time should be preserved. This node can be accessed by nodes in the main thread.
Order of execution:
a) All tasks in parallel
b) All nodes not part of a task. These may only refer to nodes listed in DISCRETE_TASK_END
Illustrated the concept in the dkong discrete emulation. This also has been enhanced to buffer DAC output.
Further changes:
- DISCRETE_OUTPUT now is a stepping node.
- DISCRETE_STREAM_INPUT now advances input pointer in step.
- More linked_list usage.
I estimate that the rework without tasks leads to a 5% performance gain. For dkong, the usage of tasks adds another 15%.
There are some features missing:
- Multiple nodes in DISCRETE_TASK_END
- More task consistency checks
- Task identifiers for tasks
http://www.mameworld.info/ubbthreads/showthreaded.php?Cat=&Number=199853&page=0&view=expanded&sb=5&o=&fpart=1&vc=1
I don't know this z80 emulator well enough to look into his first two points. Juergen?
1/ In the cc_xy[] table which lists instructions with DD or FD prefixes, "illegal" combos are returning 4 cycles when they should return 4 + cc_op (the normal instruction being executed). Another way to handle this correctly is to call EXEC(z80,fd,xx) or EXEC(z80,dd,xx) instead of op_xx(z80) when such pair of opcode is detected, to be sure the correct amount of cycles is used.
2/ According to Sean Young, R register is NOT incremented when chaining multiple DD or FD prefixes: [...]
This one was already fixed, dunno when:
2/ In the cc_ed[] table, INI (ED A2) and IND (ED AA) should return 16 cycles, like other instructions from this group, not 12. This seems to be a typo error.
- change the way custom modules are handled
- updated drivers mario and dkong accordingly
- minor change to stream input handling
- no more linear lists for nodes. All node processing switched to linked lists.
- module step and reset now only get a node pointer passed
- Added discrete_info * pointer to node
- Only nodes with a step routine actually get processed.
- Fixed a bug: discrete logs did not work since some time
- preliminary parallel task constants; depending on results these may vanish again.
- Overall slight performance increase. dkong 940% to 960%, galaxian 740% to 790%
- added unidasm to the tools build
- split the disassemblers out of libcpu and into new libdasm
- ensured the disassembly entry points for all disassemblers are
in the source file for the disassembler (sometimes new generic
versions were created)
Still needs command line options and file loading, but the
fundamentals are present, and it links.
- added discrete sound to battle zone
- engine frequency (resistor R11) can be changed with slider
- discrete sound may be disabled by setting BZONE_DISCRETE to 0 in bzone.h
DISCRETE_RCDISC3
- added diode junction voltage
- junction voltage also indicates polarity
DISCRETE_OPAMP_FILTER
- added type DISC_OP_AMP_FILTER_IS_LOW_PASS_1M
- INP2 takes role of v_ref in this type
DISCRETE_OPAMP
- Fixed a bug (possible divide by 0)
DISCRETE_LFSR
- Fixed bug preventing output of shift reg to sub node 1
> model sy6845.
> I tested it under my MESS z80ne driver.
> I don't know any other system using transparent access mode.
>
> src/emu/video/mc6845.c
>
>
> Best Regards
> Roberto Lavarone
>
> Currently MESS supports single system cheat xmls
>
> eg ALL cheats for any SNES game must be in snes.xml, this means that
> there will be a lot of cheats
> that are not applicable to the game being played.
>
> This change reverts MESS to a close approximation of how it used to
> handle cheats. It will get the
> crc32 of the image and load only the appropriate cheats to go with that
> image/game by loading
> crc32.xml (eg. DEADBEEF.xml).
>
>
> These changes are within ifdef MESS structures so should have no
> affect on MAME, and my testing has
> not encountered any problems.
>
> Diff File attached