- Bump deps
- Bump deps
- Update database, Fliptronic flipper are NOT closed by default
- fix invalid WPC95_FLIPPER_COIL_OUTPUT asic command - flipper switch triggers a solenoid on WPC95
- FT database, no REEL OPTO is closed by default
- BSD improve closed switches
- TZ/DH add missing fliptronics flipper
- Fix invalid WPC95_FLIPPER_COIL_OUTPUT action
- Fix Fliptronic Switch issue for WPC95
- Add FreeWPC WCS v0.62
- Add FreeWPC Corvette v0.61
- Add WPC Alpha: Funhouse (FreeWPC 0.91)
- Add WPC Alpha: Dr. Dude
- Add WPC Fliptronics: The Addams Family
- support uploading WPC Alpha ROM
- Add WPC Alpha: WPC test fixture
- Fix Load State issue when no saved state was found
- Update Game DB
- Add more memory positions (WPC-95 and WPC-S)
- Added Cabinet colors to database
- Scared Stiff - add memory positions
- updated deps
- minor layout changes, add link to http://concealed-art.com/
- extended API to set defined states for switches (setSwitchInput and setFliptronicsInput)
- new API call to set and read the language DIP setting (getDipSwitchByte, setDipSwitchByte)
- add typescript interface definition
- add sanity checks after a gamestate fuzzing test
- support alphanumeric display
- support new games: FunHouse, Harley-Davidson and The Machine: Bride of Pin·Bot
- fix invalid load state
- shrink client database entry
- added minimal example
- start working on proper facade for the API
- fix missing checksum for freeplay setting
- wpc95: add attract mode sequence number
- improve readability of memory monitor
- Add STATISTICS memory position
- Initial Actions: support memory write (freeplay!)
- Unify memory position names
- WW add lamps
- Fix toggle Midnight Mode
- add sound support to FreeWPC games
- improve T2 audio gain
- Support RAM write including checksum, currently supports high score and champion settings
- Corvette/T2: support audio
- TOM: add lamps & flasher
- NF/HS2: fix invalid default switches
- NGG: add memory positions
- Create docker builder
- add auto generated GAMES.md file - overview about supported games
- add missing playfield images to BR, I500 and NF
- Update memory positions for AFM, MM, FT, DM, CONGO, WW
- Improve Memory Monitor visual
- expose known RAM state (like current player, current ball..) in UI (and API)
- Add memory monitor to UI, reachable via "M" key, "B" and "N" are used to change pages
- support memory debugger (find & patch memory) using JS console, see README
- Update Security PIC implementation, fix U22 error (WPC-S Test ROM) and G10 error (WPC95 Test ROM). Use PinMAME implementation with serial number scrambler update. Fixes #31.
- Expose WPC-S Scrambler value in UI
- Fix Flipper relay and Coin door relay in UI
- Smoother Lamp simulation (Update timing, smooth lamp values)
- Show Flipper relay and Coin door relay in UI
- Implement GI Lamps
- improve emu bundling (emu, webworker, client)
- client run emulator in web worked thread
- introducing "Oblivion UI"
- new App icons
- re-introduced proper IRQ/FIRQ latching (revert change from 19/1/19)
- do not (manually) clear IRQ/FIRQ CPU flags from ASIC - this crashed for example JM
- track watchdog state
- simplify ROM bank R/W
- allow write to system rom, MM and MB use this to change reset vector
- fix init CPU
- implement blanking LED
- minor UI improvements
- Fix White Water DMD flickering (#33) - revert vpinmame DMD flipping
- detect if FIRQ could not be triggered (because of the masking)
- Add sound support for Theatre of Magic
- Add sound support for White Water
- more sound interface improvements, Ticket Tak Toe does not restart anymore (#30)
- improve PWA caching time
- improved DCS sound interface
- added option to upload ROM
- fix safe cracker reboot sound board (#30)
- disable game specific audio file on mobile - as its just a PITA
- Fishtales support sound and music
- improve error handling when ROM could not be loaded
- do not clear RAM on reset
- add lamps to cactus canyon
- reflect fliptronics switch state in UI
- bring back the BOING boot sound
- add WPC-S testrom, WPC-95 testrom
- reflect switch state in UI
- cleanup UI
- make sure client works without any active audio file
- save and load sound board state
- get rid of the unused CPU core
- remove sound cpu, improve sound interface and forward calls to client
- do not load sound rom's anymore, a audio sample file will be needed
- global volume is know known and exposed to the client, works for preDCS and DCS boards
- use howler to play audio samples
- expose board in each client db entry, needed for the sound board implementation
- more keymapping, start game with key "5"
- make sure all games start with closed cabinet key
- fixed more games where the initial switch state was invalid
- get rid of the YM2151 chip, was not working anyway
- CPU: do not queue interrupts, fixed JM
- DMD: Change flipping DMD Screens, use same function like vpinmame
- MM: add lamp configuration
- STTNG, FT, HS2: use production ROM
- AFM: add lamp configuration
- Client allow step by step processing when PAUSE the emulator multiple times
- DMD Ripping: show how many DMD frames has been ripped
- DMD Ripping: increased maximal ripped DMD frames from 1000 to 8000
- DMD Ripping: once 8000 frames has been reached, download dump and continue ripping
- Add more playfield images
- add game "Strike Master Shuffle Alley"
- add game "League Champ Shuffle Alley"
- add game "Twilight Zone (FreeWPC), Broken"
- add game "Attack from Mars (FreeWPC), Broken"
- add game "White Water "Bigfoot" (FreeWPC)"
- add game "Demolition Man "Demolition Time" (FreeWPC)"
- add keyboard mapping "1" - "4"
- improve error handling when ROM cannot be loaded. Closes GitHub Issue #27 "Prevent crash if the the default rom is missing"
- implement keyboard mapping: cabinet service keys ("7", "8", "9", "0"), save and load state ("s", "l"), play and resume ("p", "r")
- option to export DMD frames (VPinMameRawRenderer), can be imported for example in PIN2DMD to colorize DMD animations
- implement fliptronics solenoid handling
- WPC-Fliptronics: fix Fliptronics Flipper keys, return value need to be inverted
- WPC95: fix Fliptronics Flipper keys, return value need to be inverted
- added option to save and load the emulator state (cpu ram, video ram, lamp, switches, solenoids, gi, cpu) of a game
- added option to enable "Midnight Madness Mode", see README.md for more details
- fixed invalid switch state for "High Speed II"
- add new game "The Shadow", "Jack·Bot", "Indianapolis 500", "Corvette" and "Red & Ted's Road Show"
- add new game "World Cup Soccer", "Junk Yard", "NBA Fastbreak", "The Champion Pub", "Safe Cracker", "Ticket Tac Toe", "SlugFest", "Addams Family Values" and "WHO Dunnit"
- add new games "Popeye Saves the Earth", "Judge Dredd", "Demolition Man", "Black Rose", "Bram Stoker's Dracula", "Creature from the Black Lagoon", "No Good Gofers", "Cactus Canyon", "Attack from Mars", "Star Trek: The Next Generation", "Monster Bash", "Tales of the Arabian Nights", "Scared Stiff" and "White Water"
- Top 10 Solid State Pinballs (IPDB.org) are supported now
- do not reset Sound board if no sound board is loaded
- add new game "The Flintstones"
- add new game "CONGO"
- optimise emulator, needs 10-20% less cpu power
- web application is now a PWA, caches assets
- use memory patcher to skip boot check - make that setting persistent across resets
- added missing cycle counts when branch is taken for page 1 calls
- LBSR(0x17) and LBRA(0x16) op, don't sign read word
- fixed invalid .set register case for regPC
- improved cpu test coverage, added DSL tests for CPU opcodes
- NOTE: existing issues (freewpc tests & jm crash still not fixed)
- fixed PostByte overflow
- fixed fix a couple of invalid flags (SEX, LDX direct, STX direct, STD direct, LDU direct, STD extended)
- fixed WriteWord and ReadWord overflow
- improved mobile view
- really fixed bankswitched read (for real!)
- added trace tool/disassembler to compare wpc-emu against mame
- really fixed bankswitched read
- fixed issue with bankswitched read, now the WPC test ROM runs
- Implemented WPC-95 DMD mapping
- Add opto switches config to game libs
- write time checksum to RAM, current time is correct now
- client works again on old safari browser (ios)
- fix dip country selection, twilight zone should work again
- security Pic works
- option to serve ROM files from localhost
- fix dipswitch settings, use USA/CANADA
- refactor fliptronics switch input, handled by input switch matrix
- display fliptronics switches in debug ui
- support fliptronics switches
- cpu errors now on invalid state - currently more crashes
- support more visualisation in games
- fixed dmd reset
- implement memory protection
- free wpc games boot now, dmd has still issues
- show flasher in client
- use multiple canvas
- update ui, add playfield db entry
- show background image
- show lights in client
- firq is called on the soundboard, fixed ym2151 setreg call
- relaxed soundboard rom bank switch selection
- i heard sound for about 1s using twilight zone - however it crashed after
- fixed missed memory region that we relayed to DMD (0x3C00 - 0x3FAF)
- update docs about soundboard memory mapper
- unconfirmed mapping of the sound cpu system rom to page 0x7f
- add external io controller board
- enhance gamelist
- minor progress with the sound board, fixed banked read bug
- simplify cpu reset
- cpu6809 is now a class - multiple instances possible
- implement ring buffer for sound data
- start refactoring to simplify sound integration
- start sketching the audio interface
- start working on the sound board, CPU seems to boot from u18 rom, RAM, ROM and bankswitching seems to work
- implement dirty checking for ui elements, no more loud fans when opening the debug view (lower CPU usage)
- minor logic change in ui
- implement game specific switch state for a game
- implement game specific initialisation
- add ROM selection to debug ui
- optimise debug ui for mobile app
- Found the issue why the Emulator seems to be stuck when using small tickSteps in mainloop. I created a simple Benchmark and added missedIRQ and missedFIRQ counter to the CPU. The Emulator starts (although very slow) when using tickSteps of 393, but fails when smaller than 393:
BENCHMARK START, ROM: ./rom.freewpc/ft20_32.rom
Ticks to execute: 2000000 => CPU REALTIME: 1000ms (CPU HZ: 2000000)
tickSteps durationMs missed IRQ missed FIRQ ticksExecuted
1 215 454452 315 2000002
2 112 454452 315 2000002
4 83 338660 315 2000002
5 94 279857 315 2000002
8 92 193662 315 2000002
10 83 157307 315 2000002
12 81 137554 315 2000007
16 75 104895 315 2000007
32 82 54979 315 2000028
64 79 27299 315 2000031
256 78 5213 315 2000038
390 76 2564 315 2000213
393 78 2521 315 2000253
512 122 1385 1 2000348
1024 128 1691 0 2000686
2048 88 838 0 2001037
4096 76 368 0 2004049
8192 65 140 0 2007634
16384 68 29 0 2015496
-> huge missed IRQ (either because pending IRQ or the F_IRQMASK flag is set). Most missed IRQ calls are because the F_IRQMASK flag was not cleared.
- fixed invalid counter in emulator main loop, video output improved
- Identified source of nasty DMD glitches in faulty FIRQ handling in the wpc functions
- Remove "debug" module from production build -> should speedup a bit
- Debug UI use adaptive FPS to stick at 2000ops/ms
- UI Overhaul
- Define Game DB, define url, switch names and more
- DMD shading works (2bit aka 4 Colours)
- implemented switch matrix input
- implemented lamp matrix output
- implemented general illumination output,
- debug ui updates (performance improvements, use defined colour schema, rearrange, cleanup)
- use xo/eslint
- autorelease cabinet keys after 100ms
- implemented switch matrix input
- fixed dmd page write issue
- minor debug ui updates
- cabinet keyboard works somehow, implemented inputSwitchMatrix
- fixed emu initialisation - no more waiting until 600M CPU ticks are over!
- update build process (babel minify, prod/dev build, Travis CI)
- implement FIRQ source
- update readme
- add more tests
- start working on input matrix
- added cycle time to actually copy video buffer scanline per scanline
- fixed DMD FIRQ generation
- DMD display works kind of, displays some images