Recent Changes
Here is a summary of the changes in the most recent released versions of the code.
Note these lists are not inclusive but highlight the major differences.
Version 0.97
Coming soon!
Version 0.95
Game-specific:
- Clean up many effects across all games
- WCS: Minor rules updates
- WCS: Fix serious bug with mode module, where it didn't check in_live_game before rotating the active mode lamp.
- WCS: Fix freeze in ball locking.
- TZ: Service outhole during attract mode.
- TZ : Redesign mechanical clock driver.
- Funhouse: implement lots of actual game rules
- AFM: add attract mode lamp effect
Bug Fixes:
- Upper flippers on Fliptronic games were not working at all
- Fix bug in end game logic; match/high score entry could never be started.
- Fix serious bug where auxiliary 8-port drivers can't be pulsed.
- Fix several build issues with alphanumeric games
- Fix ball device system bug where some switch events were not being considered at all, possibly causing a ball not be noticed.
- Timers are paused when the coin door is opened, or at the shooter.
- The image loader will now complain if too many images are imported
- Native mode working now under Ubuntu Linux
- Ignore slam tilt in tournament mode when coin door is open
- Improved highscore entry logic
- Fix spinner driver so it doesn't award more spins than it should.
- Fix serious bug in deff_stop() that causes display update to fail.
- Status report was not ending properly before.
- Fix bug in deff/leff test where the display isn't updated right.
- Debounce of tilt and coin switches did not work correctly before.
- Slam tilt was chalking both the regular and slam audits.
- Skip date/time display in amode if configured to do so.
- Ball saver lamp can now be different than the shoot again lamp, and common lamp effect used for all games.
- Coin and credit counters now checksum verified more often.
- Many alphanumeric display effects and test mode messages now fit.
- Fix lamplist rotate APIs.
- Valid playfield was being asserted too early in some cases.
Enhancements:
- Added a new manual.
- Add bmp_draw() API for arbitrary-sized bitmaps (less than fullscreen)
- Add the bitmap8 font to system font list.
- Add deff_start_sync() API.
- Add periodic task APIs.
- Add a timed lamp countdown effect.
- Add alphanumeric display transitions.
- Initial checkin for drop and motor drivers.
- Cleaner start button handling.
- Simplify flashing lamp synchronization.
- Various portability changes.
- Mark code that does not currently compile under GCC 4.4.
- Ball save time is now machine-configurable.
- Handle ball search on Road Show/Funhouse when ball is at left shooter.
- Improved switch stress test
- Add debugger command 'm' to view multiball device status.
- Thoroughly fix many lingering compiler warnings.
- Renamed some APIs to be more consistent
- Optimized some interrupt-time processing a bit.
- Redesigned way that background effects are refreshed.
- Add tilt warning lamp effect.
- Solenoid outputs now refreshed automatically every 2ms.
Version 0.90
- NOTE: Separated system version from game version. With this system release,
World Cup Soccer saw the most development and is currently at version 0.50.
Other machines are at version 0.20 for the moment.
- Removed lots of old code.
- Updated the md format documentation in md.txt.
- Memory editor now allows stepping through faster.
- Misc. simulation updates.
- Removed pragmas from font files.
- Allow tagging both extra-ball and shoot-again lamps.
- Added a builtin switch stress test.
- Added basic alphanumeric support, tested on Funhouse.
- Added support for System 11 sound board, used by early Funhouses.
- Added imgld, the image linker, which handles appending binary images and code into a single ROM.
- Added virtual device support.
- Added rough DMD region functions, for doing fast byte-aligned copy/clear operations.
- Added high score auto-reset.
- Added an enter initials screen.
- Added ball time tracking.
- Added a ticket spitter module (not fully implemented).
- Added a spinner driver (used on World Cup '94)
- Added a time audit datatype, larger than 16-bits.
- Added timestamp math library.
- Added the writew() I/O call, used only by alphanumeric display update.
- Added a semaphore type.
- Added score ladder APIs.
- Added more score addition routines.
- Added preliminary hardware information on wire colors, transistor numbers, etc.
- Add hooks for a single ROM that can run on multiple hardware system variations.
- Add a startup check that the switch matrix 12V is present.
- Add a new generic timed mode class.
- Add generic criteria for when all game timers should be paused.
- Add the 'surprise_release' device hook, called when a ball disappears from a device without an explicit kick.
- Add common APIs for lighting easy/hard extra balls.
- Rewrote frame display code.
- Rewrote much of the score (BCD) math library.
- Rewrote the display effect module.
- Rewrote sound effect module.
- Rewrote background music control.
- Fixed many timed game bugs.
- Fix some startup race conditions, where switches were being polled before they could be read reliably.
- A ball sitting on the outhole will be cleared correctly at startup, or after exiting test mode.
- Display effects can now reliably display the last score earned.
- Fix a possible race condition with duty-cycled drivers.
- Sling/jets now shut off during endball and tilt.
- Bumped up priority of ball save display effect.
- 16-bit audit overflow is now detected.
- Fix occasional lockups at game start.
- Chalk audit on exec lockup.
- Catch printf() overflow and shutdown gracefully.
- Ignore switches briefly after a row/column short is detected.
- Audit total amount of time spent completely idle, as a performance metric.
- Generic amode display effect now has a hook for machines to add their own pages.
- Ball serve resets valid playfield.
- Improve startup diagnostic framework.
- Motors are no longer automatically pulsed in ball search.
- Improved ball search at game end to kickout balls from all devices.
- Improved logic for determining when ball is "on the shooter".
Version 0.19
- A crude but effective code generator, similar to C++ templates. It's a couple of hundred lines of Perl.
- Template drivers for slingshots, jet bumpers, and the like
- Add some basic rules to the World Cup build for playtesting.
- Coil timings updated for better play. Tested on real hardware.
- A common ballsaver module (taken from TZ)
- More efficient (in CPU time and in power consumption) solenoid pulsing
- Flashlamp effect module
- Better detection of problems at startup which require an automatic
factory reset.
- Much more robust switch handling. It is way more efficient and doesn't
miss fast closures like it used to.
- First "really good" version of zerocross detection. Used to implement
GI dimming and more accurately timed coil firing.
- Software-controllable flippers (previously, flippers only work from the cabinet buttons)
- More simulation tools added
- Many bug fixes and improvements to the native mode build, including
ASCII-DMD integration.
- Minor tweaks to support compiling with GCC 4.4.0 (not recommended
for actual use).
- Removed most of the Subversion-related build infrastructure.
Version 0.18
- Further improvements and cleanup to the build system
- Expand max amount of available ROM space for code.
- Support variables that are not memory-protected but persistent across
reboots.
- Dim most of the dot matrix display effects.
- Solenoid and flasher pulse characteristics can be defined in the machine
description. These defaults will be used in most cases. It is always
possible to override them.
- Remove the 1-coin buyin module completely.
- Add a check at powerup to see if the +12V opto supply is present.
- Fixed timing bugs when writing to the PIC. Also fixed race conditions when
writing to PIC from both IRQ-level and task-level.
- Fixed several time-of-day and date calculation bugs.
- Add a message if the ball stays in the shooter too long.
- Add many more free TrueType fonts, and optimized size of all fonts.
- Debugging of major events now writes to a log buffer, in addition to printf.
This is intended for use on real hardware.
- System timing is now much more accurate than before.
- Optimized the far call mechanism slightly.
- Improved watchdog refresh to make it work on real hardware.
- Fixed a serious bug in memset() that could cause memory corruption.
- Added mechanism for stopping large groups of task at endball, endgame.
- Add some new sound board commands.
- Sound board initialization is now divided into two steps, one of which is
asynchronous to the rest of powerup.
- Add more zerocross detection logic.
- Audits cannot overflow now, but will stop chalking at 65535.
- Valid playfield is asserted after any 3 switch closures (not quite right,
but better)
- Added an every-10-second callback for misc stuff.
- Fix lamp flashing so that they all stay in sync.
- Factory reset is better implemented than before. In particular, more things
will get cleared that should be. However, it is still not automatically done
in some cases when it should be.
- Added the printer module that dumps audits.
- The currency displayed for bookkeeping audits can be configured.
- Fixed some lockup problems that could happen in font test.
- Lampset test flicker removed ; looks better on real hardware.
- Added memory editor test
- Added security PIC test
- Added date/time editor
- Improved the performance of TZ clock update.
- The time on the TZ clock can now be displayed in test mode.
- Added the 'starfield' effect to TZ's score screen.
- Added/fixed many items in World Cup machine description file
- Improved keyboard handling in the native build.
- Persistent memory support in the native build.
- Added very basic code for running on Sega Whitestar or a WPC sound board.
- Added conditional support to the static scheduler.
Version 0.17
- As always, removed lots of code that isn't needed anymore.
- Added a generic attract mode that all games can use.
- Improved switch debouncing. Every switch can now have its own prebounce (time it must remain
closed before it will be considered) and postbounce (time after closure that it is ignored).
- Fixed a few ball tracking bugs that could cause balls to get permanently stuck.
- Font character display is much faster than before (rewritten in assembly language)
- Lookaside DMD page support added for caching.
- Text shadowing is now possible when writing text on top of a complex background.
- The match algorithm actually works now.
- The PIC programming to unlock the switch matrix works correctly.
- Tilt warnings were not coded correctly.
- Some new fonts included.
- Native emulation now simulates time better.
- Bit manipulation macros were horribly broken in 0.16, and are now fixed.
- Fixed really bad bugs in flipper handling on WPC-95.
- Low-priority system housekeeping is now done on a more regular schedule.
- Lamps that are used for multiple purposes are now redrawn occasionally, as game state changes.
- Rewrote most of the lamp effect management. It is much simpler now.
- The TZ "starfield effect" has been rewritten and looks much better :-)
- Interrupt-level no longer tries to update a solenoid that isn't defined by the machine (i.e. it's unused).
- TZ's hardware clock is now managed more efficiently and is more accurate than before.
- Added "tracer" script that parses PinMAME trace output, for calculating cycle counts of function calls.
Version 0.16
- Much improved PIC support for WPC-S and WPC-95 games.
- Much improved native mode emulation of the WPC hardware.
- Retested AFM, WCS, and Terminator 2 more thoroughly than previous release.
- Define more lamps and switches for AFM and WCS.
- Fixed WPC-95 flipper output polarity.
- Removed older support for compiling in XBMs directly. Use the FIF format instead.
- Retime IRQ-level functions, optimizing a few of them and feeding the profiling
data into the scheduler to spread them evenly. Added a "tracer" script that
parses PinMAME trace files and presents human-readable reports from it.
- Fixed a couple of problems where interrupts were disabled for a really long
time.
- Fixed bug where lamps didn't briefly flicker properly on corresponding switch
hit.
- Fixed several bugs relating to ball device kicking that could cause lockups.
- Replay value displayed more reliably.
- Internally rearranged a lot of code to avoid running out of ROM space.
- Cleaned up the build system, removing many older constructs and making it more
modular.
- Removed support for the old user.make file; now a .config file is required.
Version 0.15
- GCC 4.2 is now the default compiler.
- Many test mode additions
- Performance enhancements to switch scanning and solenoid update
- Solenoid update is also more real-time than before
- Ball save logic is now much better.
- Dynamic memory allocation is stable.
- TZ autofire, gumball logic deals with errors better
- Core logic updated to work on non-Fliptronic games
- Lampset code is more streamlined
- More optimized font rendering
- Stack overflows less likely, and are caught better than before
- Improved ball search timing
- 'Native' build now using ncurses to show state
- Native build can save to protected memory using a backing file
- Added better graphics support, will begin migrating more code to use it
- Cleaner makefile
Version 0.14
- Better support for GCC 4.x, although GCC 3.4.6 is still recommended by default.
- A working malloc() function for dynamic memory needs.
- Rewrite of display effect module to use dynamic memory for each effect
- Deff retries and aborts
- Many, many test mode improvements
- Match algorithm added
- Static scheduler
- Improved right ramp and mini-playfield handling on TZ.
- Better ball tracking, ball searching, empty balls test, etc.
- DMD/Fliptronic specific codes are more isolated
- Amode starts much sooner during reset
- Smarter bit macros
Version 0.13
- Improved score rendering for multiplayer games
- More adjustments and audits implemented
- Improved font test
- Misc. performance enhancements
- ROM and RAM test at startup
- General illumination brightness control
- Better music effect control
- Better compressed image drawing
- Fixed some bugs with paging that caused system crashes
- Deleted LOTS of old code no longer needed
- Added some multiball modes to TZ
- Many improvements in common code for coins, tilts, autolaunchers, etc.
Copyright © 2007-2010 by Brian Dominy.