Mercurial > repos > blastem
graph
-
Add test generator, builder and runnerFri, 19 Apr 2013 09:29:37 -0700, by Mike Pavone
-
Make reset trigger debug exit to make it easier to test the same cases in blastem and musashi. Fix asl #1 overflow flag.Tue, 16 Apr 2013 22:29:00 -0700, by Mike Pavone
-
Fixed up trans for changes to translate_m68k_stream, but still need to deal with missing callbacks.Tue, 16 Apr 2013 09:38:30 -0700, by Mike Pavone
-
Small bit of cleanupTue, 16 Apr 2013 09:31:21 -0700, by Mike Pavone
-
Fix movem reg to mem for certain addressing modesSun, 27 Jan 2013 13:07:26 -0800, by Mike Pavone
-
Flag fixes for div, negx and notSat, 26 Jan 2013 02:47:26 -0800, by Mike Pavone
-
Tweaks to make blastem compatible with m68k-testerSat, 26 Jan 2013 01:33:32 -0800, by Mike Pavone
-
Fix overflow flag on ASLFri, 25 Jan 2013 18:39:22 -0800, by Mike Pavone
-
Add support for IY bit instructions to decoderWed, 23 Jan 2013 21:54:58 -0800, by Mike Pavone
-
Add support for IX bit instructions to decoderWed, 23 Jan 2013 21:50:54 -0800, by Mike Pavone
-
Add support for 2-byte IY instructions to decoderTue, 22 Jan 2013 20:24:14 -0800, by Mike Pavone
-
Add support for 2-byte IX instructions to decoderTue, 22 Jan 2013 20:21:05 -0800, by Mike Pavone
-
Distinguish between 1-byte and 2-byte NOPsMon, 21 Jan 2013 21:59:09 -0800, by Mike Pavone
-
Add support for bit instructions to decoderMon, 21 Jan 2013 21:17:52 -0800, by Mike Pavone
-
Add support for EXTD group 2-byte Z80 instructions in decoderSun, 20 Jan 2013 21:32:13 -0800, by Mike Pavone
-
Add initial stab at Z80 decoder and disassemblerSun, 20 Jan 2013 19:11:24 -0800, by Mike Pavone
-
Add support for breaking into the debugger while game is runningSun, 20 Jan 2013 19:10:29 -0800, by Mike Pavone
-
Add instruction address logging to translator and support for reading an address log to the disassemblerThu, 17 Jan 2013 20:00:07 -0800, by Mike Pavone
-
Implement pc indexed mode as move dstThu, 17 Jan 2013 08:19:29 -0800, by Mike Pavone
-
Fix 6-button controller emulationWed, 16 Jan 2013 22:50:02 -0800, by Mike Pavone
-
Implement ABCD an SBCD. Fix BTEST with register source.Wed, 16 Jan 2013 22:40:56 -0800, by Mike Pavone
-
Implement support for self-modifying codeTue, 15 Jan 2013 00:14:36 -0800, by Mike Pavone
-
Prep work for handling games that modify code in RAMMon, 14 Jan 2013 21:56:54 -0800, by Mike Pavone
-
Fixes for direct color dma stuffMon, 14 Jan 2013 20:23:17 -0800, by Mike Pavone
-
Small fix to bg drawing that yields the proper res for direct color DMAMon, 14 Jan 2013 02:13:14 -0800, by Mike Pavone
-
Fix background rendering when display is off and improve refresh cycle emulation so that direct color DMA demos workMon, 14 Jan 2013 02:03:35 -0800, by Mike Pavone
-
Fix movem.w when dest is register listSun, 13 Jan 2013 23:48:04 -0800, by Mike Pavone
-
Fix return address for areg displacement mode JSRSun, 13 Jan 2013 23:06:26 -0800, by Mike Pavone
-
Cleanup VINT code and fix bug in which VINT cycle would be set incorrectly after a VDP control port writeSun, 13 Jan 2013 16:11:28 -0800, by Mike Pavone
-
Add ability to print out current 68K cycle in debuggerSun, 13 Jan 2013 15:55:43 -0800, by Mike Pavone
-
Fix a bunch of bugs in the CPU core, add a 68K debuggerSun, 13 Jan 2013 13:01:13 -0800, by Mike Pavone
-
Fix (a7)+ src when size is byte, fix trap return address, make div with areg src decoded to invalidWed, 09 Jan 2013 22:31:07 -0800, by Mike Pavone
-
Fix -(a7) dest when size is byteWed, 09 Jan 2013 21:41:55 -0800, by Mike Pavone
-
Fix signed division with negative result, fix address reg destination with word-sized operand, fix cmpm decoding and code generation, fix unbalanced pop in bit instructionsWed, 09 Jan 2013 21:08:37 -0800, by Mike Pavone
-
Fix rendering of sprites at the top edge of screenTue, 08 Jan 2013 09:34:46 -0800, by Mike Pavone
-
Fix scc to set reg to 0xFF rather than 1 when the condition is trueTue, 08 Jan 2013 09:34:24 -0800, by Mike Pavone
-
Fix order of reading saved pc and swapping user and system stack pointersSun, 06 Jan 2013 22:45:45 -0800, by Mike Pavone
-
Make sure we bail out of translation after translating an invalid instructionSun, 06 Jan 2013 21:44:54 -0800, by Mike Pavone
-
Print a message when we try to run an invalid instruction, not when we try to translate itSun, 06 Jan 2013 21:42:57 -0800, by Mike Pavone
-
Fix order of SR and PC saved in an exception stack frameSun, 06 Jan 2013 20:49:42 -0800, by Mike Pavone
-
Implement areg displacement mode for jsrSun, 06 Jan 2013 18:31:17 -0800, by Mike Pavone
-
Implement negxSun, 06 Jan 2013 15:20:23 -0800, by Mike Pavone
-
Implement movepSun, 06 Jan 2013 14:41:26 -0800, by Mike Pavone
-
Implement EORI CCR/SRSun, 06 Jan 2013 14:00:45 -0800, by Mike Pavone
-
Implement RTRSun, 06 Jan 2013 13:58:33 -0800, by Mike Pavone
-
Fix a bunch of addressing modes in movem when a register list is the destinationSun, 06 Jan 2013 13:42:13 -0800, by Mike Pavone
-
Minor optimization and a cycle count fix to leaSun, 06 Jan 2013 12:17:10 -0800, by Mike Pavone
-
Initialize status register to proper value on startupSun, 06 Jan 2013 10:54:45 -0800, by Mike Pavone
-
Added SMD ROM supportSun, 06 Jan 2013 09:51:15 -0800, by Mike Pavone
-
Fix certain address modes with lea when the destination is not a native registerSat, 05 Jan 2013 22:59:51 -0800, by Mike Pavone
-
Small fix to disassemblerSat, 05 Jan 2013 22:59:06 -0800, by Mike Pavone
-
Fix decoding of movepSat, 05 Jan 2013 02:46:55 -0800, by Mike Pavone
-
Implement more movem modes srcSat, 05 Jan 2013 02:18:31 -0800, by Mike Pavone
-
Implement more address modes for movem dst and fix a missing break statement in translate_m68k_dstSat, 05 Jan 2013 01:55:11 -0800, by Mike Pavone
-
Fix crash in printf from "crash" function due to lack of clearing raxSat, 05 Jan 2013 01:32:40 -0800, by Mike Pavone
-
FIx movem when src is reg list and dst is not a areg predec modeSat, 05 Jan 2013 01:31:28 -0800, by Mike Pavone
-
Fix predec address mode when used as sourceSat, 05 Jan 2013 00:53:50 -0800, by Mike Pavone
-
Fix rotate instructions that use a register source. Fix ROXL/ROXR to actually use the appropriate x86 instruction.Fri, 04 Jan 2013 23:52:20 -0800, by Mike Pavone
-
Add cycles for Bcc (needs work, but this changes keeps some ROMs from making the emulator unresponsive)Fri, 04 Jan 2013 23:25:23 -0800, by Mike Pavone
-
Don't use the native call stack for M68K calls by defaultFri, 04 Jan 2013 23:21:07 -0800, by Mike Pavone
-
Small fix for bit instructionsFri, 04 Jan 2013 22:51:01 -0800, by Mike Pavone
-
Implement access to Z80 RAMFri, 04 Jan 2013 21:47:09 -0800, by Mike Pavone
-
Implement TRAP (untested)Thu, 03 Jan 2013 22:49:21 -0800, by Mike Pavone
-
Implement MULU/MULS and DIVU/DIVSThu, 03 Jan 2013 22:07:40 -0800, by Mike Pavone
-
Do a sync when interrupt mask changes so we can recompute the next interrupt cycle. Also fix a bug in which the SR part of ORI to SR was not being performed.Tue, 01 Jan 2013 09:40:17 -0800, by Mike Pavone
-
Make writes to control and data port block when DMA is in progressTue, 01 Jan 2013 07:06:57 -0800, by Mike Pavone
-
Bail out of disassembly of a particular stream when we hit an invalid instructionTue, 01 Jan 2013 07:04:48 -0800, by Mike Pavone
-
Add hgignore fileTue, 01 Jan 2013 07:03:52 -0800, by Mike Pavone
-
Implement most of the "X" instructionsMon, 31 Dec 2012 20:09:09 -0800, by Mike Pavone
-
Implement m68k_modified_ret_addrMon, 31 Dec 2012 19:17:01 -0800, by Mike Pavone
-
Comment out some debug printfsMon, 31 Dec 2012 18:53:52 -0800, by Mike Pavone
-
Fix infinite loop bug in sprite renderingMon, 31 Dec 2012 18:36:16 -0800, by Mike Pavone
-
Fix DMA fills to VRAMMon, 31 Dec 2012 18:22:25 -0800, by Mike Pavone
-
Fix DMA in progress flag in VDP status registerMon, 31 Dec 2012 18:12:08 -0800, by Mike Pavone
-
Fix label names in disassemblerMon, 31 Dec 2012 11:56:01 -0800, by Mike Pavone
-
Properly support references to odd addresses in label generation in disassembler. Add labels for start and interrupts.Mon, 31 Dec 2012 11:54:27 -0800, by Mike Pavone
-
Fix VDP readsMon, 31 Dec 2012 11:26:57 -0800, by Mike Pavone
-
Implemented HV counterSun, 30 Dec 2012 22:39:41 -0800, by Mike Pavone
-
Fix some bugs in decoding cmpSun, 30 Dec 2012 18:40:33 -0800, by Mike Pavone
-
Fix 68K->VDP DMASun, 30 Dec 2012 11:54:25 -0800, by Mike Pavone
-
Improve disassemblerSun, 30 Dec 2012 09:55:18 -0800, by Mike Pavone
-
Add support for pc indexed addressing mode to leaSun, 30 Dec 2012 09:55:07 -0800, by Mike Pavone
-
Support more address modes for jmpSun, 30 Dec 2012 07:52:44 -0800, by Mike Pavone
-
Fix bug that was causing DMA fills to lock up under certain circumstancesSun, 30 Dec 2012 01:15:16 -0800, by Mike Pavone
-
Make version register return correct value for USASun, 30 Dec 2012 00:11:03 -0800, by Mike Pavone
-
Fix swapSat, 29 Dec 2012 23:40:30 -0800, by Mike Pavone
-
Cleanup bit instructions and fix bug in translate_m68k_move that caused incorrect results once translate_m68k_src was fixedSat, 29 Dec 2012 23:08:14 -0800, by Mike Pavone
-
Fix crash when printing error message about modified return addressSat, 29 Dec 2012 23:07:23 -0800, by Mike Pavone
-
Fix check in translate_m68k_src that deals with instructions for which both operands are registers that are not mapped to a native x86-64 registerSat, 29 Dec 2012 22:22:53 -0800, by Mike Pavone
-
Fix encoding of movsx instruction when used with new (i.e. r9-r15) registers. This fixes the indexed addressing modes when used with a word-wide index registerSat, 29 Dec 2012 22:11:28 -0800, by Mike Pavone
-
Some fixes for translating code in located in RAMSat, 29 Dec 2012 21:55:42 -0800, by Mike Pavone
-
Implement the rest of the bit instructionsSat, 29 Dec 2012 21:10:07 -0800, by Mike Pavone
-
Implemented ROL and RORSat, 29 Dec 2012 20:33:39 -0800, by Mike Pavone
-
Fix logic for switching between USP and SSPSat, 29 Dec 2012 12:52:19 -0800, by Mike Pavone
-
Fix decoding of CMPAFri, 28 Dec 2012 22:47:22 -0800, by Mike Pavone
-
Fix return address pushed to stack for jsrFri, 28 Dec 2012 22:47:10 -0800, by Mike Pavone
-
cycles should return dstFri, 28 Dec 2012 21:36:22 -0800, by Mike Pavone
-
Fix call_r in gen_x86 so that it properly returns a pointer to the location after the generated instructionFri, 28 Dec 2012 21:25:00 -0800, by Mike Pavone
-
Implement pea (untested).Fri, 28 Dec 2012 21:20:14 -0800, by Mike Pavone
-
Fix Z80 busreq logicFri, 28 Dec 2012 20:46:29 -0800, by Mike Pavone
-
Allow jmp/jsr to follow pc-relative addresses in disassemblerFri, 28 Dec 2012 19:21:05 -0800, by Mike Pavone
-
Defer the correct address for pc relative jsr/jmpFri, 28 Dec 2012 17:59:41 -0800, by Mike Pavone
-
Implement scc (untested)Fri, 28 Dec 2012 17:57:43 -0800, by Mike Pavone
-
Fix decoding of SccFri, 28 Dec 2012 15:34:24 -0800, by Mike Pavone
-
Implement more address modes for jsrFri, 28 Dec 2012 15:16:36 -0800, by Mike Pavone
-
COmment out fifo full debug printfFri, 28 Dec 2012 15:04:22 -0800, by Mike Pavone
-
Fix horizontal mask values for scroll plane map address calculationFri, 28 Dec 2012 15:03:00 -0800, by Mike Pavone
-
Fix areg indexed mode for move dstFri, 28 Dec 2012 14:30:25 -0800, by Mike Pavone
-
Implement ORI to CCR/SRFri, 28 Dec 2012 11:07:13 -0800, by Mike Pavone
-
Implemented move from SRFri, 28 Dec 2012 10:37:09 -0800, by Mike Pavone
-
Use unsigned comparisons for address decoding, exit when we hit an unhandled addressing mode for jmpThu, 27 Dec 2012 23:00:11 -0800, by Mike Pavone
-
allocate a new native code chunk when we run out of spaceThu, 27 Dec 2012 22:41:28 -0800, by Mike Pavone
-
Some fixes to add/addx sub/subx decodingThu, 27 Dec 2012 22:35:26 -0800, by Mike Pavone
-
Implement areg indexed mode for leaThu, 27 Dec 2012 22:11:26 -0800, by Mike Pavone
-
Allow use of indexed modes as move dstThu, 27 Dec 2012 22:05:22 -0800, by Mike Pavone
-
Allow indexed modes to be used as a destinationThu, 27 Dec 2012 21:54:54 -0800, by Mike Pavone
-
Fix address register indexed addressing (probably)Thu, 27 Dec 2012 21:32:00 -0800, by Mike Pavone
-
Fix pc indexed addressing (probably) when used as a sourceThu, 27 Dec 2012 21:23:55 -0800, by Mike Pavone
-
Initial work on allowing dynamic branches and code in RAM plus a small fix to effective address decodingThu, 27 Dec 2012 21:19:58 -0800, by Mike Pavone
-
Fix decoding bug for addq/subqThu, 27 Dec 2012 18:47:33 -0800, by Mike Pavone
-
Implement EXT, add some fixes to LINK/UNLKThu, 27 Dec 2012 18:21:10 -0800, by Mike Pavone
-
Fix some bugs in emulation of CLRThu, 27 Dec 2012 10:40:03 -0800, by Mike Pavone
-
Fix decoding bug in addq/subqThu, 27 Dec 2012 10:10:23 -0800, by Mike Pavone
-
Fix decoding of andWed, 26 Dec 2012 22:13:31 -0800, by Mike Pavone
-
Minor joypad fix and commeount out some debug printfsWed, 26 Dec 2012 22:07:44 -0800, by Mike Pavone
-
Forgot to add blastem main file earlierWed, 26 Dec 2012 21:50:48 -0800, by Mike Pavone
-
vertical interrupts now workWed, 26 Dec 2012 20:18:58 -0800, by Mike Pavone
-
RTE doesn't crash the emulator anymoreWed, 26 Dec 2012 18:20:23 -0800, by Mike Pavone
-
Fix Z80 BUSREQ/RESET implementation.Wed, 26 Dec 2012 17:50:24 -0800, by Mike Pavone
-
Fix long reads from IO ports or long reads that trigger sync cycles by saving rdi. Possibly fix word wide IO reads.Wed, 26 Dec 2012 17:34:59 -0800, by Mike Pavone
-
Implement Z80 reset and bus request registers.Wed, 26 Dec 2012 17:06:34 -0800, by Mike Pavone
-
Initial stab at interrupt support. Make native code offsets bigger so I don't have to worry about overflowing the offset. Implement neg and not (untested).Wed, 26 Dec 2012 11:09:04 -0800, by Mike Pavone
-
Add support for indexed modes as a source, some work on jmp and jsr with areg indirect modeSat, 22 Dec 2012 21:37:25 -0800, by Mike Pavone
-
Fix bug in disassembler that caused it to disassemble addresses it shouldn'tFri, 21 Dec 2012 22:33:24 -0800, by Mike Pavone
-
Implement indexed with 8-bit displacement addressing modes in decoder and disassemblerFri, 21 Dec 2012 22:24:45 -0800, by Mike Pavone
-
Added untested support for LINK and UNLKFri, 21 Dec 2012 21:53:05 -0800, by Mike Pavone
-
Removed some old debug printfsFri, 21 Dec 2012 21:26:16 -0800, by Mike Pavone
-
Implement JSR for some addressing modesFri, 21 Dec 2012 21:19:03 -0800, by Mike Pavone
-
Implement DMA (untested)Fri, 21 Dec 2012 20:56:32 -0800, by Mike Pavone
-
Fix some bugs in movem with a register list destinationFri, 21 Dec 2012 16:38:40 -0800, by Mike Pavone
-
Implement a couple of supervisor instructionsFri, 21 Dec 2012 16:04:41 -0800, by Mike Pavone
-
Implement word wide access to IO areaFri, 21 Dec 2012 16:04:30 -0800, by Mike Pavone
-
Implement more instructions and address modesFri, 21 Dec 2012 01:00:52 -0800, by Mike Pavone
-
Make the translator bail out if it hits an instruction I haven't implemented yetThu, 20 Dec 2012 09:17:31 -0800, by Mike Pavone
-
Fix disassembly of reg list in MOVEM when the reg list is the destinationThu, 20 Dec 2012 09:12:24 -0800, by Mike Pavone
-
Fix decoding and disassembly of MOVEMThu, 20 Dec 2012 09:08:13 -0800, by Mike Pavone
-
Fix BTSTThu, 20 Dec 2012 00:56:33 -0800, by Mike Pavone
-
Gamepad supportThu, 20 Dec 2012 00:44:59 -0800, by Mike Pavone
-
Fix issue in which VDP would have trouble emptying FIFO because the VDP cycle count got reset at end of frame.Wed, 19 Dec 2012 22:15:16 -0800, by Mike Pavone
-
Cleanup 68K timing code. Temporarily omment out fFPS counter as it was causing segfaultsWed, 19 Dec 2012 21:25:39 -0800, by Mike Pavone
-
Add FPS counter to console outputWed, 19 Dec 2012 20:53:59 -0800, by Mike Pavone
-
Print out large immediate values in hex rather than decimal formWed, 19 Dec 2012 20:53:45 -0800, by Mike Pavone
-
Add support for BTST instruction (untested), absolute addressing mode for instructions other than move (untested) and fix decoding of MOVEM.Wed, 19 Dec 2012 20:23:59 -0800, by Mike Pavone
-
Fix operand order for AND instructionsTue, 18 Dec 2012 23:55:10 -0800, by Mike Pavone
-
ecx was getting clobbered before the relevant temp value was used in some cases during memory readsTue, 18 Dec 2012 22:56:04 -0800, by Mike Pavone
-
Properly zero-init all VDP buffers. Comment out some debug printfs.Tue, 18 Dec 2012 22:20:25 -0800, by Mike Pavone
-
Code in runtime for checking for VDP reads was using the wrong register. This is now fixed.Tue, 18 Dec 2012 22:19:52 -0800, by Mike Pavone
-
Fix CRAM and possibly VSRAM writesTue, 18 Dec 2012 19:51:33 -0800, by Mike Pavone
-
Add palette debug to SDL rendererTue, 18 Dec 2012 19:51:17 -0800, by Mike Pavone
-
Get Flavio's color bar demo kind of sort of workingTue, 18 Dec 2012 02:16:42 -0800, by Mike Pavone
-
Add preliminary support for JMPSun, 16 Dec 2012 22:25:29 -0800, by Mike Pavone
-
Implement CLR, minor refactor of register offset calculation in context structSun, 16 Dec 2012 21:57:52 -0800, by Mike Pavone
-
Implement shift instructions (asl, lsl, asr, lsr). Add flags to register printout. Fix minor bug in shift/rotate instruction decoding.Sat, 15 Dec 2012 23:01:32 -0800, by Mike Pavone
-
Fix shift rotate instruction decoding and improve disassembly of move USP and conditional branch instructionsThu, 13 Dec 2012 09:47:40 -0800, by Mike Pavone
-
Add untested support for and, eor, or, swap, tst and nop instructions. Add call to m68k_save_result for add and sub so that they will properly save results for memory destinationsWed, 12 Dec 2012 23:21:11 -0800, by Mike Pavone
-
Don't try to disassemble addresses beyond the end of the cartridgeWed, 12 Dec 2012 21:25:31 -0800, by Mike Pavone
-
Fix bug in address visitation in disassemblerWed, 12 Dec 2012 20:43:42 -0800, by Mike Pavone
-
Add support for dbcc instructionWed, 12 Dec 2012 20:18:06 -0800, by Mike Pavone
-
Add vector table to test.s68Wed, 12 Dec 2012 20:17:59 -0800, by Mike Pavone
-
Add logic for following control flow based on logic in the translatorWed, 12 Dec 2012 20:17:11 -0800, by Mike Pavone
-
Add debug render mode and fix vertical flip bit for bg tilesSun, 09 Dec 2012 18:40:45 -0800, by Mike Pavone
-
Fix bug in tile address masking. Remove some debug code from window plane.Sun, 09 Dec 2012 17:26:36 -0800, by Mike Pavone
-
More correct window support, maybeSun, 09 Dec 2012 17:10:08 -0800, by Mike Pavone
-
Broken window supportSun, 09 Dec 2012 17:05:13 -0800, by Mike Pavone
-
Horizontal scroll works correctly now. In particular, the SEGA logo in Vectorman has a nice smooth wave like it shouldSun, 09 Dec 2012 01:13:41 -0800, by Mike Pavone
-
Implement sprite index >= sprite limit triggers sprite limit behaviorSun, 09 Dec 2012 00:03:15 -0800, by Mike Pavone
-
Initial H32 mode supportSat, 08 Dec 2012 23:49:51 -0800, by Mike Pavone
-
Pass all sprite masking testsSat, 08 Dec 2012 23:09:40 -0800, by Mike Pavone
-
Small fix to overflow flagSat, 08 Dec 2012 23:06:13 -0800, by Mike Pavone
-
Improve sprite masking to almost completely pass Nemesis' sprite masking testSat, 08 Dec 2012 22:50:14 -0800, by Mike Pavone
-
Add support for simple resolution scalingSat, 08 Dec 2012 22:07:25 -0800, by Mike Pavone
-
Fix horizontal sprite mirroringSat, 08 Dec 2012 21:39:01 -0800, by Mike Pavone
-
Make horizontal scrolling closer to correct, Comix Zone looks good, Sonic 2 slightly offSat, 08 Dec 2012 20:25:56 -0800, by Mike Pavone
-
Small cleanupSat, 08 Dec 2012 20:02:10 -0800, by Mike Pavone
-
Fix horizontal scroll offsetSat, 08 Dec 2012 19:59:32 -0800, by Mike Pavone
-
Fix BG plane B render bugSat, 08 Dec 2012 19:42:07 -0800, by Mike Pavone
-
Fix sprite transparency for overlapping spritesSat, 08 Dec 2012 16:58:11 -0800, by Mike Pavone
-
Fix management of context->sprite_draws so the sprite layer only draws when it shouldSat, 08 Dec 2012 16:46:47 -0800, by Mike Pavone
-
Fix vertical scroll value for plane BSat, 08 Dec 2012 16:16:18 -0800, by Mike Pavone
-
Partially fix BG plane BSat, 08 Dec 2012 16:09:43 -0800, by Mike Pavone
-
Fix endianness of VSRAM when read from Genecyst save stateSat, 08 Dec 2012 16:02:17 -0800, by Mike Pavone