navi-misc

Historical repository of projects 2003—2011
git clone https://git.approximate.life/navi-misc.git
Log | Files | Refs | README

DateCommit messageAuthorFiles+-
2016-10-27 06:01NASM compatibility fix from Christopher AllenMicah Elizabeth Scott1+2-2
2016-08-29 15:29Move propeller-usb-host outMicah Elizabeth Scott23+4-1921
2014-07-25 22:20Create README.mdMicah Elizabeth Scott1+14-0
2014-07-25 21:41No need for multiple levels of obsolescense. Move 'abandoned' back to trunk.Micah Elizabeth Scott3548+1631054-0
2012-11-05 16:40Moving to GitHubMicah Elizabeth Scott96+5-19248
2012-05-26 20:22Convert to curveMicah Elizabeth Scott1+22-12
2012-05-26 20:17Mr. PinkMicah Elizabeth Scott1+85-0
2012-05-26 20:17Fix cleanup path in the event of an init error before opening the socketMicah Elizabeth Scott1+2-1
2012-05-26 20:17Add a little support for relative svg pathsMicah Elizabeth Scott1+15-0
2011-05-15 22:42Test...Micah Elizabeth Scott1+4-0
2011-05-02 17:40Name and email address updateMicah Elizabeth Scott12+0-0
2011-05-02 02:05Version 1.1: Make it easier to run the USB host on any pin from P0 to P7. Testing: I didn't have hardware handy to test this on, but I verified that this change (with default settings) produces the same binary image. Concept was already verified by M.K. Borri (spiritplumber).Micah Elizabeth Scott1+0-0
2011-03-24 06:02Interrupt inlining size optimizations. This inlines a few functions which are very much smaller if we know the arguments at compile-time.Micah Elizabeth Scott2+75-80
2011-03-23 22:31Keyboard size optimizationsMicah Elizabeth Scott2+57-64
2011-02-15 08:26Source code for a quick color sensor testMicah Elizabeth Scott4+158-0
2011-01-04 21:13Simple fix from Walter T. Mosscrop, sign-extend temperatures to 32-bit before converting to float.Micah Elizabeth Scott1+0-0
2011-01-04 21:12whitespaceMicah Elizabeth Scott1+0-0
2011-01-04 21:11whitespaceMicah Elizabeth Scott3+2-2
2010-11-30 21:03Adding a simple Bluetooth flow control test, which can be used to gauge the throughput and the flow control ability of a PC bluetooth stack.Micah Elizabeth Scott1+55-0
2010-10-04 06:16Debugging notes and utilitiesMicah Elizabeth Scott2+12-0
2010-10-04 05:40Add some cuteness~Micah Elizabeth Scott10+0-0
2010-10-04 05:40Version 0.6, bugfix for hang with image() that is perfectly aligned.Micah Elizabeth Scott1+0-0
2010-10-04 03:15Minor bugfix: Clear all state variables to zero, so we don't see tachometer readings like 65535 RPM right after init.Micah Elizabeth Scott1+0-0
2010-10-04 02:44New interactive front-end with LCD and encoder wheelMicah Elizabeth Scott4+0-0
2010-10-04 00:02Minor cleanup, new hardware docs.Micah Elizabeth Scott6+19-0
2010-10-03 20:20Add a URL for the latest version of the driver sourceMicah Elizabeth Scott1+0-0
2010-10-03 20:14Awesome hotness. This version is super-fast, includes filtered text, image and sprite support. Added an image converter tool and a better demo.Micah Elizabeth Scott12+3516-0
2010-10-03 16:21New 10 Mbit SPI engine, based on the one I wrote for etherCog a while back. Rewrite in assembly. Now it's fast, yay!Micah Elizabeth Scott2+0-0
2010-10-03 04:42Working (but depressingly slow) driver for the Nokia 6100 LCD. Next step: write my own SPI code instead of using the slow SPI_Asm library.Micah Elizabeth Scott3+0-0
2010-08-05 19:29Patch from Kurt Daverman: Mask off the low bits of PCI BARs correctly when requesting the address.Micah Elizabeth Scott2+12-2
2010-07-31 23:49Bump to version 1.0Micah Elizabeth Scott8+0-0
2010-07-26 01:24Add a simplified SPP object and a cute little demo for it.Micah Elizabeth Scott2+57-0
2010-07-26 00:44Disable debug by defaultMicah Elizabeth Scott1+0-0
2010-07-26 00:08Fixed several subtle L2CAP and RFCOMM bugs. Now the Bluetooth serial port is working properly with Windows 7 clients.Micah Elizabeth Scott1+0-0
2010-07-22 20:06Matching IOHook code for IOH_SVC_INITMicah Elizabeth Scott1+5-0
2010-07-22 20:05Committing patch from neimod to add IOH_SVC_INIT to memhost.Micah Elizabeth Scott3+15-4
2010-07-19 05:50Enable persistent link key storageMicah Elizabeth Scott1+0-0
2010-07-19 05:42Transmit buffering bugfixes. Now the BluetoothChat app is working well with the demoMicah Elizabeth Scott3+2-1
2010-07-19 05:41Tinygram prevention using explicit TX flushMicah Elizabeth Scott1+0-0
2010-07-19 04:44Include two service records: a standard Bluetooth serial port, and a UUID for the BluetoothChat example from the Android SDKMicah Elizabeth Scott1+43-4
2010-07-19 02:15Test transmit and receive ringsMicah Elizabeth Scott1+14-3
2010-07-18 20:19A handful of bugfixes, mostly related to RX tokens and MSC packets. Now I can connect to the Propeller's RFCOMM server from a Mac OS client successfully.Micah Elizabeth Scott2+0-0
2010-07-18 18:27Adding a new debug layer which does some basic decoding of Bluetooth HCI, ACL, L2CAP, and RFCOMM headers. I'm tired of decoding this stuff by hand :PMicah Elizabeth Scott2+0-0
2010-06-20 22:09Fix multi-packet control writes, remove CB_CreateNewUnitKey command. Now pairing *seems* to work... or at least I'm getting different errors now in Mac OS :(Micah Elizabeth Scott3+0-0
2010-06-20 21:37Hook up the keystore, and enable authentication and encryption by default. Looks like the 'only' remaining problem with Pairing is due to a USB stack bug in multi-packet control transfers.Micah Elizabeth Scott1+0-0
2010-06-20 20:40Minor cleanup, remove Debug function.Micah Elizabeth Scott2+0-0
2010-06-20 20:37A basic keystore for Bluetooth link keys. Stores the 8 most recently used keys in EEPROM.Micah Elizabeth Scott2+0-0
2010-06-15 07:44Some kind of date and version numberMicah Elizabeth Scott1+2-0
2010-06-15 06:28Fix one warning that Cesar pointed out. He also verified that this code actually works. Yay.Micah Elizabeth Scott1+2-0
2010-06-13 21:09Updated the HID modulator with changes from Luke Koops and Cesar Fernandez.Micah Elizabeth Scott1+85-43
2010-05-05 02:12Fixed buggy PIN code support, implemented a more efficient table-driven HCI initialization.Micah Elizabeth Scott3+1-1
2010-05-04 22:20Fix corrupted timestamps caused by CNT rollover.Micah Elizabeth Scott1+0-0
2010-04-30 17:30Ribbotson on the Parallax forums was kind enough to give me some Ellisys traces that demonstrated the havok that "Deferred ACKs" were causing in control transfers with some devices. This change disables deferred ACKs for control transfers (enabled only for Bulk and Interrupt now). Also fixed control reads, by adding the missing OUT status stage.Micah Elizabeth Scott1+0-0
2010-04-26 03:03Fixed a nasty deadlock: We'd block while reading the remaining parts of a fragmented ACL packet, but the Bluetooth controller would also be waiting on us to pick up a flow control event. Solved this with another rewrite of the fragmented ACL packet support. So far this seems really robust, and not even that slow.Micah Elizabeth Scott2+0-0
2010-04-26 02:10Document the root cause of the one remaining apparent source of hangs. Fixing it is going to be a bit nontrivial, so saving that for an isolated patch.Micah Elizabeth Scott2+0-0
2010-04-26 01:29Cleanups/tweaks for token retryMicah Elizabeth Scott1+0-0
2010-04-26 01:00Clean up some async errors that were occurring at RFCOMM connect time but going unnoticed. Increased throughput to about 8 kB/s mostly by tweaking buffer sizes.Micah Elizabeth Scott4+19-3
2010-04-25 23:24Still seeing a few remaining protocol errors, but RFCOMM receive is now much more reliable.Micah Elizabeth Scott4+35-18
2010-04-25 19:35Implement a crazy 'deferred ACK' idea I had in the shower this morning. Now the USB host should no longer be dropping packets. test-ft232-loopback reports 0% packet loss.Micah Elizabeth Scott1+0-0
2010-04-25 11:12Implement enough of sockets and flow control to get mostly-working support for receiving data on incoming RFCOMM connections.Micah Elizabeth Scott4+29-10
2010-04-25 08:18RFCOMM connection negotiation seems to work. Credit-based flow control isn't implemented, so our peer stops transmitting after 7 packets :(Micah Elizabeth Scott3+12-19
2010-04-24 23:12Implement RFCOMM's CRC. (Used pycrc to generate the table. What a useful tool!)Micah Elizabeth Scott1+0-0
2010-04-24 21:47Basic support for PIN codesMicah Elizabeth Scott3+1-0
2010-04-24 21:24USB debugging improvements: - Timestamp each log entry (seconds/milliseconds since enumeration) - Hide duplicate FrameWaits and Interrupt Read timeouts by default, to make the logs more readable - Prettify the output a bit - Fixed buggy hex dump - Refactored the logging implementation - Increased baud rate to 1 Mb/sMicah Elizabeth Scott1+0-0
2010-04-21 06:33Second rewrite of the SDP server.. this time it's even smaller and simpler, and (most importantly) new services can be provided at runtime by the parent object.Micah Elizabeth Scott4+62-0
2010-04-20 06:46A minimal but still useful SDP server. Currently it includes only a minimal Serial Port service, with some commented-out examples for an SDP service and the service name.Micah Elizabeth Scott4+0-0
2010-04-20 05:05Checking in what I have so far on the SDP server before I throw most of it away. Turns out that the amount of protocol I actually *need* to implement is ludicrously small. So I'll just keep this simple, and keep the memory footprint low by cutting some corners.Micah Elizabeth Scott1+0-0
2010-04-18 22:01More progress on the SDP server. UUID searches work, and there's some scaffolding in place for continuations and attribute searches/responses.Micah Elizabeth Scott2+6-6
2010-04-18 22:00Use higher L2CAP channel IDs. Microsoft's stack doesn't like 0x0010.. it's probably reserved in the spec or something :PMicah Elizabeth Scott1+0-0
2010-04-18 08:47Implement a skeleton SDP server which responds to Search/Attribute requests with an empty packet.Micah Elizabeth Scott3+0-0
2010-04-18 05:13Implement L2CAP Echo Request support. Now I can ping the Propeller with BlueZ's 'l2ping' tool.Micah Elizabeth Scott3+14-1
2010-04-18 03:19Big refactoring/rewrite of the Bluetooth stack so far. To properly support protocols like RFCOMM and SDP, there is now a separate cog that acts as an event dispatcher and SDP server for Bluetooth. That cog is now an event-driven state machine.Micah Elizabeth Scott5+38-97
2010-04-17 23:15Set up interlaced page scans. Now it's successfully accepting incoming connections, though it ignores any received ACL packets.Micah Elizabeth Scott2+0-0
2010-04-17 22:55More debugging for the tiny Bluetooth stack. Have the demo use TV output so we can use the serial port for USB logging, and improve the USB logging format.Micah Elizabeth Scott3+47-38
2010-04-16 07:59Implement support for HCI Inquiry commands. The test app now looks for a Wiimote, and prints its BDADDR when we find it.Micah Elizabeth Scott2+25-24
2010-04-16 04:55Add performance counters, for debugging and profiling the bluetooth driver. Fixed a very silly bug that could drop commands on the floor. Now the test seems to be running reliably.Micah Elizabeth Scott2+23-2
2010-04-12 04:12Started work on a Bluetooth HCI driver. So far it includes a low-level command/reply layer (similar to the SCSI layer in usb-storage) and a few high-level functions for setting up the Bluetooth device. 'Propeller' now shows up on my Mac's Bluetooth device list :)Micah Elizabeth Scott2+94-0
2010-04-12 04:11Control OUT supportMicah Elizabeth Scott1+0-0
2010-04-11 23:53Mount disk properly prior to the directory listingMicah Elizabeth Scott1+3-2
2010-04-11 23:18Add a directory listing to the test.Micah Elizabeth Scott1+17-0
2010-04-11 23:17Small timing tweaks, decreases the CRC error rate substantially in the FT232 loopback test.Micah Elizabeth Scott1+0-0
2010-04-11 22:18Add more doodads to the loopback test: A chart of error rate by burst size, and debug settings for showing the contents of packets that failed the CRC test.Micah Elizabeth Scott2+35-5
2010-04-11 20:20Adding an interactive loopback testMicah Elizabeth Scott1+191-0
2010-04-11 19:05Add a simple USB Modem (CDC Data) driver. Now I can talk to my cell phone :)Micah Elizabeth Scott2+64-0
2010-04-11 04:39Adding a new device driver for FT232 UART chips. These are really popular chips, simple to write a driver for, and overall they should be a good way to put the host controller through its paces without the complexity of USB storage or (gasp) Bluetooth.Micah Elizabeth Scott2+64-0
2010-04-11 04:38SVN property cleanupMicah Elizabeth Scott5+0-0
2010-04-11 04:38Port debouncing in EnumerateMicah Elizabeth Scott1+0-0
2010-04-11 02:35Minor usb-storage reliability fixes.Micah Elizabeth Scott2+2-2
2010-04-11 02:35- Minor cleanup - New TX bus drive/release debug flag - New lower-latency and more reliable bus release implementation. Fixes occasional hangs during transmit.Micah Elizabeth Scott1+0-0
2010-04-07 18:08typoMicah Elizabeth Scott1+0-0
2010-04-07 16:40Test both reads and writes in test-storage. Now it shows two problems which make it pretty obvious why FSRW was failing: - Block writes seem to work *except* that the first byte is always 0x33 (?) - A read immediately after a write seems to hang.Micah Elizabeth Scott1+26-6
2010-04-07 11:17Updated USB Storage driver, now with filesystem support (using the FSRW library)Micah Elizabeth Scott4+976-11
2010-04-07 11:17New packet length detector, using SOP/EOP timestamps. Fixes CRC errors with pakets whose CRCs end in several '1' bits.Micah Elizabeth Scott1+0-0
2010-04-06 06:23The short-packet errors I'm seeing are data-dependent. If I have the test app read a different disk sector, it works fine. Do this for now, as a proof of concept.Micah Elizabeth Scott2+10-5
2010-04-06 06:15Initial checkin of a USB mass storage driver. It's basically feature-complete, and it's *almost* working... the host controller is returning 511 bytes for our first 512-byte read.Micah Elizabeth Scott4+70-68
2010-04-06 05:03A little exception handling cleanup, and a new public FrameWait() function.Micah Elizabeth Scott1+0-0
2010-04-05 06:47Add a proxy object that can sit in place of usb-fs-host and log everything to the debug terminal.Micah Elizabeth Scott1+0-0
2010-04-05 06:46Add some convenience functions for endpoints.Micah Elizabeth Scott1+0-0
2010-04-05 02:25More cleanup and optimization: - Overlay all data buffers on the hub memory that was originally used for cog code. This saves lots of RAM, and brings the whole host controller's RAM footprint down to about 4kB. - Use Spin exceptions to propagate errors. This is a great language feature I always forget about. - Minor bug fixesMicah Elizabeth Scott4+10-13
2010-04-05 00:51More cleanup and optimization: - Remove command lists: they're no longer necessary. - Move the command jump table from cog memory to hub memory. Now the command register takes cog memory pointers, not command indices. - Instead of breaking reads/writes into 255-byte chunks, use an out-of-band 32-bit byte count for encode/decode - Refactor control transfers a bit so the SETUP packet can use our generic OUT code.Micah Elizabeth Scott1+0-0
2010-04-04 21:16One round of size optimization and cleanup: - Wait for PORTC to be ready if necessary. Prevents the first Enumerate after Start from failing with a 'device not connected' error. - Use byte rather than long for a few small state variables - Update docs to indicate that the host controller is a singleton object - Use pre-cognew DAT patching instead of par-relative addressing, to save cog memory.Micah Elizabeth Scott1+0-0
2010-04-04 20:23Rewrite the ACK transmitter to use some stupid video generator tricks so it can live on the TX cog instead of a dedicated cog. Now the USB controller only needs 3 cogs rather than 4. Yay.Micah Elizabeth Scott1+0-0
2010-04-02 03:55Fix a missing 'else' that had this spewing timeout errors even when everything was actually fine.Micah Elizabeth Scott1+1-1
2010-04-01 07:23Show nicer blinkenlights: 6 LEDs for buttons, two for scroll wheelMicah Elizabeth Scott1+23-8
2010-04-01 07:06Bump to ver 0.2. Fixes two nasty bugs from the first release: - I forgot to disable a debug feature that wrote ACK trigger pulses to pin P2 - Use UWORD() instead of WORD[] to read VID/PID. Fixes garbled device IDs when the devdesc buffer isn't word-aligned.Micah Elizabeth Scott1+0-0
2010-04-01 05:49Go go gadget basketball botMicah Elizabeth Scott2+124-1
2010-03-31 07:41Replace the 'XXX REALLY BROKEN' with some actual documentation.Micah Elizabeth Scott1+0-0
2010-03-31 07:07USB descriptor parsing. Now the tests can stop hardcoding device-specific endpoint addresses and max packet sizes.Micah Elizabeth Scott5+165-103
2010-03-31 05:04Bulk transfers work. How do I know this? My USB SD card reader just responded to a SCSI INQUIRY command. Yay.Micah Elizabeth Scott2+39-16
2010-03-30 07:47Bulk OUT transfers seem to be working, but not totally sure yet. Testing Bulk I/O using USB Storage, but I haven't successfully received a CSW from the device yet.Micah Elizabeth Scott2+68-0
2010-03-30 06:03Split up the single test apps into separate tests for enumeration and Interrupt IN. Add some blinkenlights to the Interrupt IN test.Micah Elizabeth Scott4+102-0
2010-03-30 05:45Documentation cleanupMicah Elizabeth Scott2+0-0
2010-03-30 05:32Fix the pseudo-EOP masks to properly test every possible combination of CRC-16 bit stuffing lengths. The demo is now receiving properly with no CRC errors.Micah Elizabeth Scott1+0-0
2010-03-30 05:17Fix a subtle bug in the decoder that was causing bit-unstuffing errors. Also tweak the pseudo-EOP timing some more. Now the demo is getting correct CRCs more often than not.Micah Elizabeth Scott2+0-0
2010-03-30 04:51If I make the debug output pretty, you won't notice the CRC errors.Micah Elizabeth Scott1+0-0
2010-03-30 04:48Interrupt IN transfers implemented. The demo is now reading packets from my Logitech MX1100 mouse (a full-speed HID device)Micah Elizabeth Scott2+0-0
2010-03-30 03:54Minor bug workaround to fix control transfers on some devices with a max packet length of 8Micah Elizabeth Scott2+0-0
2010-03-30 03:11Device presence and speed detectionMicah Elizabeth Scott1+0-0
2010-03-30 02:48Fix the bizarre PID errors during DeviceAddress. They were caused by a bad maxPacketLen, which caused DataIN to keep receiving even after the transfer had finished. Since the device just switched addresses, these requests are never answered, and the malformed PID is actaully the SE1 we use to abort RX1/RX2.Micah Elizabeth Scott2+0-0
2010-03-29 06:45This should fix the general-purpose DataIN to work with zero-length packets. Should fix some of the control transfer problems, and DataIN is now used for no-data control transfers too. Sounds great in theory, but I'm getting E_PID during enumeration. Grr.Micah Elizabeth Scott2+0-0
2010-03-29 05:28ACK cleanup, wider psuedo-EOP detector window. Now I'm starting to see successful multi-packet IN transfers.Micah Elizabeth Scott1+0-0
2010-03-29 01:56Implement low-latency ACK responses using a fourth cog. The ACKs themselves work, but the rest of the stack needs some adjustments to use them.Micah Elizabeth Scott1+0-0
2010-03-28 23:10Implemented a cleaner and more robust version of DataIN. But unfortunately this now exposes data toggle errors caused by our hacky ACK support.Micah Elizabeth Scott2+0-0
2010-03-28 22:23Add a schematic showing how to hook the USB host port up to the PropellerMicah Elizabeth Scott2+0-0
2010-03-28 08:31Support for multi-packet IN transfersMicah Elizabeth Scott1+0-0
2010-03-28 07:46Separated control transfers into distinct phases with proper retry. Implemented device enumeration. Still only supports one DATA packet per transfer. Next step: pseudo-EOP detection and support for multiple DATA packets.Micah Elizabeth Scott2+0-0
2010-03-28 05:34Temporary timing hacks for control transfers. These work, but I'm replacing them ASAP with something less ugly.Micah Elizabeth Scott2+0-0
2010-03-28 00:51Control transfers (no-data and read) mostly work! Still getting CRC errors in some cases, but I can successfully retrieve and decode configuration and string descriptors.Micah Elizabeth Scott2+0-0
2010-03-27 10:41RX CRC16 checks, and define hub-memory transmit/receive commands. Zzzzzz....Micah Elizabeth Scott1+0-0
2010-03-27 10:30Automatic SOF generation. The timing is kinda fake, but it works as a keep-alive packet at least.Micah Elizabeth Scott2+0-0
2010-03-27 09:12Successfully receiving and decoding the SYNC and DATA1 PID from a GET_DESCRIPTOR responseMicah Elizabeth Scott2+0-0
2010-03-27 08:04Implement pseudo-EOP detection on the RX2 cog, and signal this 'done' state back to the TX/control and RX1 cogs. Now we don't have to wait 500+ us to fill up the receive buffer even when receiving short packets.Micah Elizabeth Scott1+0-0
2010-03-26 07:59Initial checkin of a work-in-progress USB Host Controller for the Propeller microcontroller. It's implemented entirely in software (bit-banging) and it supports full-speed (12 Mb/s) USB. Currently has medium-level (Chapter 9) support for transmit, and very low-level (NRZI encoded) receive support.Micah Elizabeth Scott2+0-0
2010-03-26 07:57This is an old change I forgot to check in... Prevent the needle from spuriously moving when the pedal is idle in up-down mode.Micah Elizabeth Scott2+7-6
2010-03-06 09:51This time we're cheating at Final Fantasy VII mini-gamesMicah Elizabeth Scott2+97-0
2010-02-05 22:18remove debug code, on Linux (when my bluetooth isn't super-slow) this is actually slowing it down a bit.Micah Elizabeth Scott1+0-2
2010-02-04 05:40Ugly dirty port to Mac OSMicah Elizabeth Scott1+39-15
2010-01-20 10:12Implemented closed-loop servo speed control. There's no UI at all, but othewise this thing is feature complete :)Micah Elizabeth Scott3+31-1
2010-01-19 10:19Stop trying to use the motor brake in the open-loop motion controller. It just ends up making the motor vibrate annoyingly, and it doesn't seem to help at all.Micah Elizabeth Scott1+0-0
2010-01-19 10:12Initial checkin of firmware for my sewing machine. Includes a library which provides pedal input, sensor sampling, shaft angle/speed estimation, and motion control. Including a couple examples of top-level firmware that implements different sewing modes: open-loop speed control, needle up/down, and stop with needle down. To do: Closed-loop speed control :)Micah Elizabeth Scott6+69-0
2010-01-08 08:30Gitaroo Man + DDR = AwesomeMicah Elizabeth Scott2+254-17
2010-01-04 06:54Closed-loop control. Sorta. It kinda sucks.Micah Elizabeth Scott7+277-41
2010-01-04 02:49Initial checkin for a sewing machine speed controller based on a modified AVR Butterfly board. Current version is an ugly proof-of-concept open loop controller. The plan is to have closed-loop speed control and needle up/down control.Micah Elizabeth Scott10+1071-0
2009-12-06 20:34'Stable' bitstream for the twlfpga board. (Capture is totally untested.. but the LEDs, sysclk, and battery control work.Micah Elizabeth Scott1+0-0
2009-12-06 20:29Basic support for the new twlfpga hardware: Turn on the LEDs, added placeholders for several peripherals in the UCF file, fixed clk50, and added software control over the battery power supply.Micah Elizabeth Scott9+372-37
2009-12-06 19:20Archiving the last stable bitstream for the prototype board. Future bitstreams will be for the twlfpga board, unless otherwise marked.Micah Elizabeth Scott1+0-0
2009-12-06 02:35There's a firmware bug which causes control reads to fail on some USB controllers (incuding VMware's virtual controller). Work around this by making these failures non-fatal in the software.Micah Elizabeth Scott1+3-1
2009-12-04 07:27Add support for the twlfpga VID/PIDMicah Elizabeth Scott2+13-3
2009-12-04 07:21Adding an XML template for use with FT_PROG, to initialize the EEPROM on the new twlfpga board.Micah Elizabeth Scott1+79-0
2009-12-04 07:00Allocate a fake USB PID for twlfpgaMicah Elizabeth Scott1+2-0
2009-12-04 05:25Basic changes to get memhost building on Mac OSMicah Elizabeth Scott2+21-8
2009-11-01 23:06Fix crashes on exit.Micah Elizabeth Scott6+33-22
2009-11-01 08:26Build improvements for Mac OS hosts. Also added a Mac icon.Micah Elizabeth Scott5+71-50
2009-10-30 07:00Make it possible to open memory traces by dragging or double-clicking on Mac OS, and use one main window per document.Micah Elizabeth Scott4+50-11
2009-10-30 02:13More bug fixes: Fix crashes on startup with no file open.Micah Elizabeth Scott3+38-35
2009-10-29 07:43Get it building from XCode in Mac OS 10.6Micah Elizabeth Scott14+411-12
2009-10-24 01:14Remove extra debugging code.Micah Elizabeth Scott1+0-3
2009-10-23 23:58fixes to build on os xbushing3+84-2
2009-10-23 23:55Disable interrupts after returning from a BIOS call, since some BIOS calls may re-enable interrupts and leave them on. Naughty BIOS! I tested this with a simple app that enables a PIT timer and runs APM BIOS calls in a tight loop. Without this change, VMware Workstation would detect a triple-fault almost immediately. With this change, it runs correctly.Micah Elizabeth Scott1+8-0
2009-10-20 07:36Type cleanup, and some new data types for block indexing.Micah Elizabeth Scott10+120-100
2009-10-19 06:58Started work on the content viewer table. Some of the architecture is in place, and it displays useless junk.Micah Elizabeth Scott10+538-10
2009-10-19 04:58Several bug and performance fixes. Most notably, another caching layer to reduce the time spent re-rendering slices from the slice cache onto the buffer bitmap, and some edge case fixes which eliminate bugs that caused transfers to be cut off from the beginning and end of the log.Micah Elizabeth Scott9+129-21
2009-10-19 01:28Document the UI shortcutsMicah Elizabeth Scott1+15-7
2009-10-18 22:38Limit how far you can zoom out. The display starts to get very odd once the 64-bit integer math starts overflowing :PMicah Elizabeth Scott1+6-0
2009-10-18 22:20Keyboard navigation and bi-directional selection linkageMicah Elizabeth Scott8+235-39
2009-10-18 20:16New edge emphasis algorithm. This looks much better, and it does a better job of preserving distinctions in pixel intensity.Micah Elizabeth Scott2+73-19
2009-10-18 19:53Hilight transfers on the timeline when they're selected in the transfer table. This linkage will eventually be bidirectional, but first I need index primitives for efficiently looking up the closest transfer to the cursor in 2D.Micah Elizabeth Scott8+317-55
2009-10-18 10:41Tweak the timestep size again, and add a note about making it more dynamic.Micah Elizabeth Scott1+9-1
2009-10-18 10:26Overlays for THDTimeline implemented, added a THDModel which tracks shared mutable data, like the clock frequency and information about the cursor.Micah Elizabeth Scott11+323-131
2009-10-18 08:05Don't update the table continuously while indexing. It totally jams up the UI while indexing...Micah Elizabeth Scott1+6-2
2009-10-18 08:02Bigger timesteps, to keep the index size down.Micah Elizabeth Scott1+1-1
2009-10-18 07:57Condition vars are overkill, and seem buggy on wxMac. Use a semaphore instead.Micah Elizabeth Scott1+4-6
2009-10-18 07:42Revert my ColorRGB fix, I like bushing's better.Micah Elizabeth Scott1+5-5
2009-10-18 07:37Use wxColour instead of ColorRGB, for compatibility with bushing's Mac gcc.Micah Elizabeth Scott1+5-5
2009-10-18 07:20Progress on the overlay label, and added a SetBackgroundStyle() to help portability and performance.Micah Elizabeth Scott3+235-8
2009-10-18 05:06More efficient drawing, and maybe a fix for the bug Bushing was hitting.Micah Elizabeth Scott2+50-22
2009-10-18 04:31Tweak timestamp precisionMicah Elizabeth Scott2+3-2
2009-10-18 04:10Sizing and selection improvements for the transfer table.Micah Elizabeth Scott4+40-20
2009-10-18 03:37Custom table formatting for read, write, and error rows.Micah Elizabeth Scott4+142-21
2009-10-18 02:15Custom cell attribute handling. So far this doesn't do anything you couldn't do with per-column attributes in wxGrid, but the plan is to use this to format transfers differently based on type.Micah Elizabeth Scott6+111-16
2009-10-17 23:59Friendlier labels for MemTransfer typesMicah Elizabeth Scott1+10-8
2009-10-17 23:18Initial support for a table showing summary information for every transfer in the log. This is a wxGrid widget backed by a custom table class which uses LogIndex. So far it's very fast at browsing logs with millions of transactions.Micah Elizabeth Scott8+474-26
2009-10-16 07:47Fix a thread safety bug in the log reader. The indexer thread and the slice cache thread were sharing a reader buffer, and it wasn't protected by the database lock. This patch clones the LogReader in the indexer thread, so it gets its own buffer.Micah Elizabeth Scott2+22-4
2009-10-16 07:27More awesome interactivity- when you zoom or pan the view, we now immediately scale/pan the existing view (at the bitmap layer, rather than the slice layer), to give a low-quality preview instantaneously before the high-quality slices render asynchronously.Micah Elizabeth Scott3+127-7
2009-10-16 06:19More antialiazing!Micah Elizabeth Scott1+1-1
2009-10-16 06:06Fixed several indexing bugs. Added optional debug checks in LogIndex to catch future indexer errors. Implemented supersampled antialiasing in the timeline widget. Added some kinda ugly edge emphasis, to make the graphs easier to read (but not prettier).Micah Elizabeth Scott7+333-79
2009-10-06 22:22New color scheme, and proper vertical scalingMicah Elizabeth Scott6+226-110
2009-10-06 04:56Early work on a bandwidth graph, and some code cleanup. The timeline view needs a better color scheme...Micah Elizabeth Scott4+268-39
2009-10-05 23:05The instant cache is now a new 'fuzzy cache' data type, which has LRU eviction. No more giant memory leak.Micah Elizabeth Scott4+109-75
2009-10-05 22:14The timeline shouldn't get stuck with out-of-date slices during indexing- keep enqueueing slices if the index is building.Micah Elizabeth Scott1+10-3
2009-10-05 22:09Fix an sqlite crash just after indexing. We need to delete any cached commands after committing a transaction with ANALYZE in it.Micah Elizabeth Scott2+18-1
2009-10-05 21:58Adding an inline assembly version of MemPacket_FromBytes() for x86 or x86-64 systems with GCC.Micah Elizabeth Scott1+10-1
2009-10-05 21:57Checking in several patchkit changes I forgot about... this fixes the core dumper uninitialized ELF headers bug, and adds an iohook command to set the system clock frequency.Micah Elizabeth Scott6+28-3
2009-10-05 21:56Fix several bugs: the work queue is no longer bogosorted continuously, which means redraws occur in a more natural order and they're more efficient. Fixed the reverse-iteration bug, so the timeline view should be correct again. Made some performance improvements.Micah Elizabeth Scott8+105-71
2009-10-05 08:07Add a few bugs to the listMicah Elizabeth Scott1+5-0
2009-10-05 02:51Add another giant cache. It's fast, yay.Micah Elizabeth Scott4+296-115
2009-10-05 01:21Keep track of each slice's age, and display the checkerboard placehol;der pattern only if the slice is older than a fixed limit.Micah Elizabeth Scott4+48-17
2009-10-04 07:43Fixed a subtle bug in the varint code which was causing discontinuities at timestep boundaries.Micah Elizabeth Scott3+48-27
2009-10-04 06:38More efficient and responsive work queue implementation for LazyCacheMicah Elizabeth Scott4+278-68
2009-10-04 04:51Use a new 'lazy cache' object to manage the asynchronous rendering of slice data. Now the slice retreival and rendering happens asynchronously, and the UI remains responsive even when the complete image isn't available. The UI will use a placeholder (checkerboard pattern) to represent data that hasn't loaded yet, and it will progressively render until the image is complete.Micah Elizabeth Scott4+284-43
2009-10-04 02:37Implement support for replaying transfers from the original log file while querying for strata. There is no cache for this yet, so it's significantly slower, but now the timeline display has unlimited zoom resolution.Micah Elizabeth Scott3+149-77
2009-10-04 00:59Kinda almost useful implementation of the timeline view. The coloration is a total hack, it isn't generating data asynchronously yet, and it is limited to 1-timestep resolution.. but it kinda works.Micah Elizabeth Scott4+84-17
2009-10-04 00:12First crude but kinda-functional timeline rendering. Rendered timeline slices are stored in a huge LRU cache, copied to the display via wxPixelData and wxBitmap, and they're rendered by querying the index for LogInstants. Rendering is a total hack right now, so the rendered data is totally meaningless, but is unique for each slice.Micah Elizabeth Scott6+322-68
2009-10-03 19:32Project layout and whitespace cleanupMicah Elizabeth Scott38+2189-2105
2009-10-03 19:10Switch build system from make to sconsMicah Elizabeth Scott3+31-49
2009-10-03 09:16Yet another indexing idea- but this one seems to be working. This stores coarse-grained 'strata' in BLOBs of packed variable-width integers, and fine-grained 'blocks' as a larger indexed table. Strata retrieval seems to be fast enough now for interactive scrolling and zooming, while the block table should still give the detail necessary to do the actual hex dump timeline.Micah Elizabeth Scott4+595-129
2009-09-29 09:30Added new data types and glue for tracking log 'instants', or summaries of block state at a particular timestamp. Improved log indexing, but there still isn't any working query code.Micah Elizabeth Scott8+313-208
2009-09-28 02:52Add some more GUI bits: the early beginnings of a timeline widget. The next step is to add some actual query functionality to LogIndex, so we have some data to visualize.Micah Elizabeth Scott4+109-2
2009-09-28 02:27Start some actual GUI bits. There is now a main window, with a custom statusbar that displays the indexing state, current log duration, and a progress bar.Micah Elizabeth Scott13+465-105
2009-09-28 00:26The sqlite-based log indexer is now generating an index, and performance seems to be fairly good. Next step is to add UI widgetry to display indexing progress, and to display a timeline.Micah Elizabeth Scott5+267-33
2009-09-27 20:37Starting work on the log indexer. This reads the log, segments it into manageable blocks (in both space and time), then creates an sqlite3 database as an index.Micah Elizabeth Scott13+2229-22
2009-09-27 09:50Commit some initial work on Temporal Hex Dump (THD), a graphical analysis tool for memory access traces. So far, this includes some infrastructure for reading the log files efficiently and seeking forward/backwards in them.Micah Elizabeth Scott7+529-0
2009-09-27 08:38Add a cast to make g++ happy.Micah Elizabeth Scott1+1-1
2009-09-26 20:38Fix uninitialized data bug in the core-dumper, add dynamic clock frequency to IOHook.Micah Elizabeth Scott5+19-11
2009-09-26 20:01Cleanup: Move shared header files into a top-level 'include' directory. Testing: Clean rebuild of host, patchkit, and decoder.Micah Elizabeth Scott5+4-7
2009-09-25 04:13Add 32-bit read command.Micah Elizabeth Scott2+23-1
2009-09-25 03:51Checking in a stable version of the FPGA bitstream, compiled from top-of-tree.Micah Elizabeth Scott1+0-0
2009-09-25 02:10Move the stub's infinite loops into WRAM.Micah Elizabeth Scott1+11-1
2009-09-25 02:04Add a trivial patch that gets both CPUs stuck in infinite loops.Micah Elizabeth Scott3+17-1
2009-09-25 02:03Flush the last burst at EOF.Micah Elizabeth Scott1+8-0
2009-09-24 17:10Update TODO list with a suggestion and a bug report from segher.Micah Elizabeth Scott1+2-0
2009-09-24 02:39Add configurable stop conditions (time, size, address)Micah Elizabeth Scott4+108-8
2009-09-24 02:00Add sample output for the register-dump patch.Micah Elizabeth Scott1+70-0
2009-09-23 10:02Adding a simple FUSE filesystem for mounting encrypted NAND flash images.Micah Elizabeth Scott2+356-0
2009-09-22 09:40Cleanup and refactoring for patchkit. Added the first working version of a more complex patch. This one takes a live core dump (ELF32 ARM linux format) of all nonzero memory accessible by the CPU. Tested on hardware with a 5 MHz system clock. Runs nicely, and dumps about 80MB of data at about 1 MB/sec.Micah Elizabeth Scott10+3218-273
2009-09-22 08:41Turn off the majority-detect filter, it has outlived its usefulness. Now the tracer/patcher can run much faster- we're limited by USB bandwidth far before the RAM sampler starts missing transfers.Micah Elizabeth Scott2+119-7
2009-09-22 08:19sigh.. 3.5 MHz is pushing it. One of these days I'll fix the clock filter to work at higher frequencies, but for now go back down to 3.0 MHz.Micah Elizabeth Scott2+2-2
2009-09-22 06:05Another simple patch- dump registers and top of stack.Micah Elizabeth Scott2+41-0
2009-09-22 05:34Rename the 'slow' clock to 'default', and add a 1.0 MHz 'slow' clock.Micah Elizabeth Scott1+12-4
2009-09-22 05:32System seems stable at 3.5 MHz. Increase default clock speed from 2.0 to 3.5.Micah Elizabeth Scott1+1-1
2009-09-22 05:28Search for the default FPGA bitstream in the same directory that the binary is located in. Now I can stick a symlink to memhost in my PATH. Yay.Micah Elizabeth Scott2+49-5
2009-09-22 05:10Implement new meanings for ELF segment read/write flags.Micah Elizabeth Scott1+26-9
2009-09-22 05:05Previous fix didn't work. This time a cleaner but slightly more complex solution- use the ELF segment flags to indicate whether a segment is part of the patch or not. No-access segments are excluded from the patch, read-only segments are patched, and read-write segments are not allowed.Micah Elizabeth Scott1+16-15
2009-09-22 04:52Rearrange sections to get rid of harmless but annoying linker warning about .unp_scratchMicah Elizabeth Scott1+12-10
2009-09-21 01:10There are some NVRAM pages we can't program. Make verify errors non-fatal.Micah Elizabeth Scott1+3-4
2009-09-20 22:10Frob the magic numbers yet again. Seems like if I keep the transfer size low, the FTDI header never gets messed up. Maybe this is some quirk of libusb or Linux's EHCI driver?Micah Elizabeth Scott1+1-6
2009-09-20 22:03Revert r12290. This change kinda helped, but now buffer overflows are happening much more frequently.Micah Elizabeth Scott2+12-30
2009-09-20 21:58Add an extra cycle of latency to the USB engine when we need to wait for a FIFO full flag. This slows down the max transfer rate to 20 MB/s, which is kinda lame, but right now reliability is a bit more important.Micah Elizabeth Scott2+30-12
2009-09-20 21:55Work around stupid FTDI packet header crap.Micah Elizabeth Scott1+6-1
2009-09-20 21:55Trivial cleanup (actual_length -> local var)Micah Elizabeth Scott1+1-2
2009-09-20 20:32Add patches for dumping and programming the NVRAM chip.Micah Elizabeth Scott8+235-20
2009-09-20 20:31Until I can fix the USB errors (prolly caused by FT2232H oddities that I'm not handling properly), make them non-fatal. The IO hook still has yet another layer of verification, so we'll catch any errors that actually matter.Micah Elizabeth Scott3+32-32
2009-09-20 19:37Minor cleanups to logging output, support byte-wide hex loggingMicah Elizabeth Scott2+11-3
2009-09-20 19:09Don't clear the status line unnecessarily. The flicker is annoying.Micah Elizabeth Scott1+10-3
2009-09-20 19:06Be less chatty on read/write/seek operations.Micah Elizabeth Scott1+0-4
2009-09-20 18:34Oops.Micah Elizabeth Scott1+1-0
2009-09-20 18:33The VT100 codes aren't working so well. Just print a bunch of spaces to erase the status line when displaying log lines.Micah Elizabeth Scott1+5-3
2009-09-20 18:30Another great laziness feature.. add some hardware and software bits that allow memhost to automatically reset the DSi's CPUs before running a patch or collecting a trace.Micah Elizabeth Scott8+46-17
2009-09-20 10:48Improve size efficiency in patchkit, and fix string alignment bugs.Micah Elizabeth Scott4+50-16
2009-09-20 10:40This is a pretty big change which adds a new "I/O Hook" system, a simple bidirectional RPC mechanism for using the PC's filesystem and console from a patch running on the DSi. This can be used to more easily and reliably load and dump memory which is arbitrarily large, since patches can read, write, and seek within a file.Micah Elizabeth Scott20+1062-92
2009-09-20 00:35Refactoring: Add an even lower-level public interface to the memory trace file format, in the form of a header file that includes data types and inline functions for dealing with memory trace data. This will be used by memhost soon for some real-time processing on memory traffic.Micah Elizabeth Scott3+201-86
2009-09-19 22:39Remove a debug printf I forgot to take out.Micah Elizabeth Scott1+0-1
2009-09-19 22:24Adding my old tool to pack many flat binary files into an ELFMicah Elizabeth Scott1+95-0
2009-09-19 22:11Working ELF file loaderMicah Elizabeth Scott2+90-4
2009-09-19 19:35Adding a really basic skeleton for a sample patch ELF file, which generates loadable segments at useful places in RAM.Micah Elizabeth Scott3+51-0
2009-09-18 09:36New command line interface with spiffy patch-loading awesomeness. Loads flat binary files, and ascii/utf16/hex strings from the command line. ELF support coming soon...Micah Elizabeth Scott3+318-23
2009-09-18 07:40More refactoring. Also implemented a higher-level interface for patching, which handles allocating space in the hardware registers and splitting regions into aligned blocks.Micah Elizabeth Scott6+316-101
2009-09-16 08:30More refactoring- move trace capture to a separate fileMicah Elizabeth Scott5+213-135
2009-09-16 07:54Refactor system clock and config register code into a new hw_common module, and implement a faster multi-register write.Micah Elizabeth Scott4+221-97
2009-09-16 05:47New stable bitstream from top-of-tree. Includes patching metastability fixes.Micah Elizabeth Scott1+0-0
2009-09-16 05:42I think the patch injector corruption is actually fixed this time. Turns out that we were sampling the RAM enable signals without going through the synchronizer/filter. So, normally it would work, but sometimes it would cause nasty metastability conditions to propagate around the patcher logic. Awesome. Now we use the filtered and synchronized control signals, which have a little bit of latency but should be clean. Worst case, we get a tiny bit of bus contention at the end of a read burst, and I don't care.Micah Elizabeth Scott2+16-15
2009-09-16 04:28Fix/workaround an awesome bug where patches that contained words with a lot of '1' bits would get corrupted. My best guess at the root cause is currently that all those simultaneous edges woudl capacitively couple some noise onto CE2, which may have been driven with a weak pull-up by the DSi. If CE2 bounces, we'll cancel the burst and stop driving the data bus, then it will settle at whatever level the FPGA's pin keepers hold it at.Micah Elizabeth Scott2+11-4
2009-09-16 03:16Switch from inferred RAM for patch content to explicit blockram primitives. This doesn't fix the bug I was hoping it would, but it's a bit cleaner.Micah Elizabeth Scott4+93-60
2009-09-16 02:35Clean up some warnings- remove an unused strobe line, set the width for our CAM enable const.Micah Elizabeth Scott3+3-14
2009-09-16 02:01New stable bitstream. This includes patching support, as well as the 240 MHz to 200 MHz frequency synthesizer change.Micah Elizabeth Scott1+0-0
2009-09-15 05:33Just for fun, try a longer patch to the main menu's strings. This one replaces a 2 kB region.Micah Elizabeth Scott1+24-18
2009-09-15 05:19Heavily pipeline the patch store memory. This may fix some of the RAM flakiness, and registering the CAM will give me some peace of mind.Micah Elizabeth Scott5+195-94
2009-09-14 16:43Remove obsolete files, so folks reading Bushing's blog post won't be confused by them.Micah Elizabeth Scott2+0-98
2009-09-14 10:00Patch storage system implemented. Shows some signs of life, but needs a lot of debugging.Micah Elizabeth Scott14+689-10
2009-09-14 07:42Cleaned up the RAM patcher in main.v, factored out the actual patch storage into a new patch_store module. Current patch_store is a proof-of-concept, but the next step is to make a real configurable patch storage system.Micah Elizabeth Scott3+116-24
2009-09-14 05:16Run the system clock synthesizer off our onboard 50 MHz oscillator rather than the FT2232H's clock. This means our internal frequency is only 200 MHz instead of 240 MHz, and the clock no longer glitches as badly while reconfiguring the FPGA.Micah Elizabeth Scott3+19-11
2009-09-13 22:33Add commented-out entries in the UCF file for on-board peripherals that we aren't using yet.Micah Elizabeth Scott1+15-0
2009-09-13 22:14Better filename for the FT2232H EEPROM data.Micah Elizabeth Scott1+0-0
2009-09-13 22:14Add pinout notes to a new 'hardware' directory, and move the EEPROM data there too.Micah Elizabeth Scott2+0-0
2009-09-13 10:02A very simple proof-of-concept for RAM patching. Really all that's missing though is a proper mechanism for storing and retrieving patch data. This could be as simple as a few address registers plus a block-RAM, or it could be a full CAS array...Micah Elizabeth Scott1+47-4
2009-09-13 05:04Checking in a stable version of the FPGA bitstream. This file will be updated periodically, but not necessarily after every change to the RTL.Micah Elizabeth Scott1+0-0
2009-09-13 02:46Add config flags for enabling/disabling read and write traces. Fixed packet alignment at the start of a stream.Micah Elizabeth Scott3+87-32
2009-09-13 02:04Fix a bug in the RAM state machine which was causing all reads to be off by 2 bytes. This may have been partially masked by timing problems earlier, but now the bug is pretty obvious. With this fixed, traces are relatively clean.Micah Elizabeth Scott1+6-7
2009-09-13 01:28Re-add the diode hack for ram_ce1_out. It's cheesy, but it really does work better than the alternatives.Micah Elizabeth Scott2+34-12
2009-09-13 01:08Implemented PC-controlled configuration registers in the USB core, and a new system clock frequency synthesizer. The synthesizer operates at 240 MHz internally, and generates 0-30 MHz output with 0.5 kHz resolution.Micah Elizabeth Scott4+258-73
2009-09-12 21:21The tiniest bit of polish- a usage message, and a copyright headerMicah Elizabeth Scott1+33-3
2009-09-12 21:17Buffer overrun detectionMicah Elizabeth Scott2+40-6
2009-09-12 20:59Reimplemented USB FIFO and state machine. It's ready for bidirectional transfer now, and all of the USB-side data corruption is gone. Transferred a few hundred MB with no CRC errors.Micah Elizabeth Scott5+233-133
2009-09-12 19:39Dumb FT2232H is giving us a junk header at the beginning of the stream. Add a hack that ignores it in software.Micah Elizabeth Scott1+32-21
2009-09-12 17:05Remove unused modulesMicah Elizabeth Scott3+1-137
2009-09-12 10:53Two hardware modifications for improved RAM signal integrity. Now the DSi boots again, hooray.Micah Elizabeth Scott2+16-1
2009-09-12 10:12Catch SIGINT so we can cleanly flush and close the output file when the user exits with ctrl-C.Micah Elizabeth Scott1+16-3
2009-09-12 09:59Fix two more hardware bugs: CE1 was being ignored due to a misnamed wire, and ram_d[2] was stuck high due to sharing a pin with HSWAP.Micah Elizabeth Scott2+2-3
2009-09-12 09:22Fix kernel module detaching. Now you no longer need to manually unload ftdi_sio on linux.Micah Elizabeth Scott3+50-24
2009-09-12 09:02Design is mostly adapted for the new FPGA. Memory tracing is kinda working, but there are buffering glitches and several features are still unimplemented.Micah Elizabeth Scott4+25-17
2009-09-12 05:42Successful high-bandwidth data streaming over the FT2232H from the FPGA. This test is receiving dummy packets from the FPGA at a little over 25 MB/s on my machine.Micah Elizabeth Scott8+410-412
2009-09-12 02:37Prepared UCF file with all usable I/Os on banks 3 and 0.Micah Elizabeth Scott1+106-81
2009-09-12 01:51Working FPGA configuration and clocking. Yay.Micah Elizabeth Scott7+462-74
2009-09-11 10:12Some progress on a host program that speaks to the FT2232H chip and configures the FPGA, but it isn't working yet.Micah Elizabeth Scott7+300-15
2009-09-11 07:50Adding FT2232H EEPROM template from MProgMicah Elizabeth Scott1+85-0
2009-09-11 07:34First bits of success at talking to the FT2232H chip. Not yet using synchronous FIFO mode, but I think I need to reboot into Windows to flash the board's EEPROM first...Micah Elizabeth Scott53+322-21840
2009-09-09 06:03This is a patch from booto which adds an optional third command line option, instructing the decoder to terminate after a particular timestamp when converting a raw log to a memory dump. This makes it possible to generate a snapshot of memory at various points in time using the same raw trace. Thanks!Micah Elizabeth Scott1+22-2
2009-09-07 23:47Fixed segfault on EOFMicah Elizabeth Scott1+10-0
2009-09-05 22:18Actually use the new buffering code. Also make errors non-fatal, and report the file offset where we noticed each error.Micah Elizabeth Scott3+15-10
2009-09-05 21:35Add switch debouncing, and addd a third configuration switch as a global trace enable/disable. This lets you start and stop capture without flushing any of the buffers.Micah Elizabeth Scott3+62-12
2009-09-05 21:31On-the-fly gzip not such a great idea. bzip2 works much better, we'll just do the compression offline.Micah Elizabeth Scott1+1-1
2009-09-05 19:12Add .h and Makefile deps to makefileMicah Elizabeth Scott1+2-0
2009-09-05 18:24Some optimization: File buffering, and -O3Micah Elizabeth Scott3+69-6
2009-09-05 08:20Support log files larger than 2GBMicah Elizabeth Scott1+2-0
2009-09-05 08:20Read trace enable/disable switch, error latch LEDMicah Elizabeth Scott3+21-8
2009-09-05 07:31Accept a filename on the command lineMicah Elizabeth Scott1+1-1
2009-09-05 07:31Redo a few pin assignments to decrease noise and decrease the number of bit errors. Still not perfect, though...Micah Elizabeth Scott2+12-4
2009-09-05 06:54Fixed clock edge for read tracing, tweaked clock edgedetector/filter. This reduces the bit errors quite a bit, but doesn't quite fix them.Micah Elizabeth Scott4+78-19
2009-09-04 19:41Forgot the makefileMicah Elizabeth Scott1+4-0
2009-09-04 10:34Add binary file decoding output, fix some HDL bugs. Still getting occasional bit errors....Micah Elizabeth Scott5+94-208
2009-09-04 09:51Add an on-chip FIFO buffer between the memory trace state machine and the off-chip USB fifo. Much better- no more buffer overflows.Micah Elizabeth Scott1+26-20
2009-09-04 09:36Big refactoring/rewrite of both the HDL and decoder. Includs a new packet format, timestamp, checksums, read traces, and more reusable decoder code.Micah Elizabeth Scott11+1297-185
2009-09-01 06:27Account for write latencyMicah Elizabeth Scott1+52-44
2009-09-01 04:35Fix byte order for ASCII, frob the burst hack.Micah Elizabeth Scott1+2-2
2009-09-01 04:09LB/UB support, a hack for burst writesMicah Elizabeth Scott1+46-20
2009-09-01 02:14Still some corruption to debug, but now it mostly works. yay. It helped to switch to an external 48 MHz IFCLK, even if that required adding a super-ugly jumper wire on my board.Micah Elizabeth Scott4+26-21
2009-08-31 11:08Getting really close, but still not working. Using a synchronous FIFO now, and it's keeping up with the data rate. USB data integrity looks a lot better, but data is still getting lost.Micah Elizabeth Scott4+121-38
2009-08-31 01:47Close to working.. but the USB interface needs debugging.Micah Elizabeth Scott2+98-20
2009-08-30 20:32Starting the HDL for a DS RAM tracer. Also includes a local copy of fx2pipe, which I'm using as the board's firmware currently.Micah Elizabeth Scott53+22351-0
2009-08-26 16:24Move graph output to a separate directory (on tmpfs), temporarily disable voltage graphs.Micah Elizabeth Scott2+33-30
2009-08-16 22:11First cut at an IDC file for Nintendo DS registersMicah Elizabeth Scott1+142-0
2009-08-16 01:56Objcopy was never meant to do crazy things like this. Instead of using objcopy and ld, just write the ELF header manually. Now it works, and the resulting ELF file can be loaded into IDA Pro. Yay!Micah Elizabeth Scott1+73-12
2009-08-16 00:46Add CRC validation, improved response decoding, and clock cycle counts.Micah Elizabeth Scott1+36-10
2009-08-16 00:46Add a 'fill 16-bit words' commandMicah Elizabeth Scott2+13-1
2009-08-13 04:19Add a really dumb MMC command sniffer.Micah Elizabeth Scott5+854-0
2009-08-10 09:58Updated memory dumper. This is the version used to capture twl-vcke-arm7-memMicah Elizabeth Scott3+20-22
2009-08-10 08:53Add a memory dumper tool- identifies nonzero pages, reads them back to the PC. Also added a script to generate .ELF files.Micah Elizabeth Scott4+225-1
2009-08-09 10:45Add a 'cont' command, to continue execution after a hook.Micah Elizabeth Scott2+26-9
2009-08-09 10:05A very bare-bones ARM7 debugger. You can read and write memory from a Python console on the PC.Micah Elizabeth Scott3+437-38
2009-08-09 09:45Yet another SRAM wait state... this seems to give me stable results when reading and writing the emulator memory simultaneously.Micah Elizabeth Scott2+86-38
2009-08-09 07:39Stack dump from the ARM7 ISR, and some notes.Micah Elizabeth Scott2+68-9
2009-08-09 06:41Hello World from the ARM7Micah Elizabeth Scott3+20-14
2009-08-09 06:04Remove non-functional DTCM/ITCM and ISR trampoline code.Micah Elizabeth Scott2+0-38
2009-08-09 06:03Really rough still, but it takes control of the ARM7. Yay.Micah Elizabeth Scott2+122-72
2009-08-09 02:42Optionally hexdump words in little-endian order.Micah Elizabeth Scott1+16-7
2009-08-07 08:10More mostly-uneventful frobbing of camera registers.Micah Elizabeth Scott1+59-4
2009-08-07 07:43Some logging tools for examining FIFO commands, especially those related to the camera.Micah Elizabeth Scott3+27-0
2009-08-07 07:26FIFO word logging kinda works. Also adding a main loop hook, which doesn't work at all. How handy.Micah Elizabeth Scott2+47-24
2009-08-07 06:34Set bus ownership before reading or writing.Micah Elizabeth Scott1+2-0
2009-08-07 06:34A semi-working hook to pick up IRQs and FIFO TX writes while the game is running. The hooks work, but the SPI logging doesn't yet.Micah Elizabeth Scott3+141-3
2009-08-07 03:09Don't hang if the BSS segment is empty.Micah Elizabeth Scott1+4-3
2009-08-07 02:25Sync with the latest spime_nds library.Micah Elizabeth Scott6+141-142
2009-08-07 02:25Add a simple library for accessing the memory emulator in 20-bit mode from the Nintendo DS.Micah Elizabeth Scott2+139-0
2009-08-06 08:04Stub out the game's "Welcome" text, so it doesn't scribble all over our logo.Micah Elizabeth Scott1+12-1
2009-08-06 08:03Fix the .bss section initializationMicah Elizabeth Scott1+3-4
2009-08-06 07:58Add a simple library for reading and writing the SPI memory emulator's buffer. Demonstrate this by dumping about a megabyte of main memory to the emulator buffer.Micah Elizabeth Scott6+156-5
2009-08-06 07:57Add a memory clear command.Micah Elizabeth Scott1+9-0
2009-08-06 06:58The original exploit code is now a bootloader that pulls in an arbitrarily large binary from the SPI emulator FPGA, then stores it in unused RAM and executes it. That binary can be normal C code, using a subset of newlib and libnds. To show off all the extra RAM we have now, added a logo that is decompressed onto the top screen to replace the game's welcome message.Micah Elizabeth Scott8+299-46
2009-08-06 04:22Some polish: - Document the SPI protocol - Add extended SPI commands for 20-bit memory addressing - Split out the serial protocol into a new file - More command line options for spime.pyMicah Elizabeth Scott7+527-579
2009-08-05 07:52Add some useful command line options. Load, save, diff, hexdump.Micah Elizabeth Scott1+44-12
2009-08-05 07:26Timing on the SRAM data input bus was really marginal, since there was no dedicated SRAM input register and there were a couple giant muxes between the SRAM input and the next register. This caused some state-dependent glitches in the data LSB when reading over SPI. This patch adds a dedicated SRAM input buffer. One extra clock cycle of read latency, but well worth it.Micah Elizabeth Scott3+139-30
2009-08-05 06:20Oops.. Memory corruption turned out to be a nice 1-character mistake. The state register for the SRAM controller was 3 bits wide. The S_C2_WR3 state (last write state for client 2) was number 8. So it aliased back to S_IDLE, and the write never finished. The SRAM controller would just keep on writing whatever happened to be on the data bus.Micah Elizabeth Scott1+1-1
2009-08-05 06:11Memory read/write control state machine. This is mostly working- reads seem totally reliable. Writes occasionally spew garbage all over RAM. Yay.Micah Elizabeth Scott2+111-35
2009-08-05 06:11Whitespace cleanup, and fix led_c[7] warnings.Micah Elizabeth Scott1+58-53
2009-08-05 04:43Starting work on a Python tool for interacting with the emulator from a PC. It has an object for sending and receiving low-level packets, and it can almost do a successful memory dump.Micah Elizabeth Scott2+271-31
2009-08-05 02:41Packet header decoder (working) and encoder (who knows...)Micah Elizabeth Scott2+239-43
2009-08-04 09:15Top-level module for UART + escaping. Includes end-to-end loopback testbench.Micah Elizabeth Scott1+135-22
2009-08-04 08:09RFC1622 byte-unstuffing. Tested in simulation.Micah Elizabeth Scott1+132-4
2009-08-04 07:55RFC1622-inspired byte stuffing (escaping) implementation. Verified in simulation, not tested in hardware yet.Micah Elizabeth Scott1+162-1
2009-08-04 06:54I rename a variable, restart ISE, and now it works. Good job, Xilinx.Micah Elizabeth Scott3+16-19
2009-08-04 06:43Add new high-speed 3 MBit UART. Works in simulation, but the Xilinx softare is being finicky..Micah Elizabeth Scott5+377-4
2009-08-04 02:19Remove SASC. In the short term at least, going to switch to a 3 MBit FT232 serial port. That will require a somewhat different UART design...Micah Elizabeth Scott6+4-681
2009-08-03 08:59Add the SASC UART core from OpenCores. Receive is working, transmit not so much.Micah Elizabeth Scott7+700-4
2009-08-03 04:22Release Djblets 0.5.1.Christian Hammond2+20-1
2009-08-02 20:36Adding Verilog source for an SPI EEPROM emulator. So far this is successfully emulating reads and writes to the EEPROM. Still to-do is adding a serial port which allows the PC to read/write the emulated EEPROM at the same time. This is designed for the Digilent Spartan 3 board.Micah Elizabeth Scott7+1319-0
2009-07-26 02:21Fix a typo that broke the patch... name offset is 8 bytes from the beginning of the save block.Micah Elizabeth Scott1+1-1
2009-07-26 01:19Build system cleanup.Micah Elizabeth Scott4+84-66
2009-07-25 19:04Make a note of the original ROM's SHA-1 hash.Micah Elizabeth Scott1+4-0
2009-07-25 11:36Another to-do note.Micah Elizabeth Scott1+4-0
2009-07-25 11:28Accidentally committed this.Micah Elizabeth Scott1+0-77
2009-07-25 11:27First working version of a Cooking Coach exploit which can inject code then resume execution.Micah Elizabeth Scott6+690-0
2009-07-18 21:48Add djblets.util.filesystem.is_exe_in_path, which will check if the specified executable is in the executable search path.Christian Hammond2+50-1
2009-06-21 03:55Fix the version string generation when not a final or RC release.Christian Hammond1+1-1
2009-06-21 02:04Bump to Djblets 0.5.1alpha1.dev.Christian Hammond1+3-3
2009-06-21 01:57Release 0.5 final.Christian Hammond3+56-4
2009-06-16 20:17Remove the old jQuery. We don't use it anymore.Christian Hammond1+0-33
2009-06-14 01:41Bump to Djblets 0.5rc3.dev.Christian Hammond1+2-2
2009-06-14 00:14Release 0.5 RC 2.Christian Hammond2+28-1
2009-06-12 09:13Add a concept of "in progress" to queues.Christian Hammond1+27-9
2009-06-07 23:53Optimize our datagrid queries when sorting data.Christian Hammond1+60-5
2009-06-06 02:16Go back to using select_related only when needed. While it would save queries per row, it means triggering more expensive, time-conusming queries up-front that aren't always as optimized as the subsequent, smaller queries.Christian Hammond1+11-3
2009-05-28 04:35Patch by Paolo Borelli to fix a typo in a variable name when receiving an unexpected value type in JSONField.Christian Hammond1+1-1
2009-05-28 04:33Patch by Paolo Borelli to fix logging when unable to write to the specified log file. It will now fall back on stderr.Christian Hammond2+15-6
2009-05-25 03:04Nicer transitions for the game save UIMicah Elizabeth Scott8+84-30
2009-05-24 07:10Cleaned up saved game list, implemented nicer live previewsMicah Elizabeth Scott19+354-167
2009-05-24 03:50Fix a stack overflow. Now the save file preview test works on real hardware.Micah Elizabeth Scott3+16-26
2009-05-22 06:57Proof-of-concept (messy hack) for previewing save games on the top screen while picking them on the bottom screen.Micah Elizabeth Scott7+80-23
2009-05-21 06:27More save file implementation: read, write, get level name, automatic slot name for new file.Micah Elizabeth Scott5+178-58
2009-05-19 06:59Teach the build system to build libnds and libfat ourselves, from the svn:externals snapshot. Now we have debug symbols for everything, we have the upstream fix for the sprite allocator crash, and libfat's stat() works again. Hooray.Micah Elizabeth Scott2+68-118
2009-05-19 03:38Fixed the license in setup.py. We listed it as GPL when we meant MIT.Christian Hammond1+16-12
2009-05-18 09:05Model for saved game files. Includes workaround for libfat stat() bug.Micah Elizabeth Scott10+435-35
2009-05-18 00:30Stylus input for UIListMicah Elizabeth Scott5+150-18
2009-05-17 23:30Lots of debugging later, I now have a working robot on my file list, and a fix for a memory corruption bug in libnds.Micah Elizabeth Scott10+3798-32
2009-05-17 23:21libnds sprite allocator + fix for its memory corruption bug.Micah Elizabeth Scott1+298-0
2009-05-17 10:49Better animation for the file list.Micah Elizabeth Scott3+50-12
2009-05-17 10:25Implemented rendering for the UIFileListItem, made a handful of cleanups and performance enhancements.Micah Elizabeth Scott14+305-92
2009-05-17 06:03Start some infrastructure for a list UI, which will be used for loading and saving games and chips. Current demo shows 1000 lines of text scrolling up and down in a UIList with low enough CPU usage that the load meter can't measure it.Micah Elizabeth Scott7+266-14
2009-05-17 05:08Add a load meter, to determine how much CPU time we're using for the UI's vblank ISR. Fixed some clipping bugs.Micah Elizabeth Scott5+51-9
2009-05-17 04:38Several optimizations and bug fixes in MSprite and UIText. Now message boxes are smooth again, and they're utilizing the new vertical scrolling and clipping mechanism.Micah Elizabeth Scott9+155-100
2009-05-16 10:46New text renderer with vertical clipping and support for virtually unlimited hardware-accelerated vertical scrolling. Kinda works, still has some vsync glitches.Micah Elizabeth Scott8+413-326
2009-05-16 03:00Remove leftover debug code for sub-screen fade to black.Micah Elizabeth Scott1+0-9
2009-05-14 06:48Mockup for a load/save UIMicah Elizabeth Scott1+0-0
2009-05-14 03:24Render text in two passes, so we can allow vertical glyph overlap and decrease the line spacing to a reasonable distance.Micah Elizabeth Scott3+88-52
2009-05-14 03:02Add a UI object for hardware-accelerated fade-to-black/whiteMicah Elizabeth Scott5+115-23
2009-05-13 07:48Message boxes, complete with animation.Micah Elizabeth Scott13+366-21
2009-05-13 05:53A more reliable way of detecting whether the remote control is on.Micah Elizabeth Scott1+1-1
2009-05-11 05:02Lots of cleanup and bugfixes, with the aim of making sub-screen UI's dynamic. The current demo destroys and reallocates the sub-screen UI every 16 frames. So far so good.Micah Elizabeth Scott11+220-96
2009-05-11 02:21Better default cursor position. 0,0 is bad, because the font border will extend past the edge of the framebuffer.Micah Elizabeth Scott1+1-1
2009-05-11 01:22Clean up and enhance the text rendering code. Now there is a UITextLayer class which can render opaque or transparent double-buffered text, as well as borders which will be used for message boxes.Micah Elizabeth Scott12+833-345
2009-05-10 03:31Detect cycles in the room linked list in ROWorld::removeObjectFromRoom(), so we don't get into an infinite loop if we try to render uninitialized world data.Micah Elizabeth Scott1+14-1
2009-05-10 03:23Stub out the file picker functions at translation time, so we always load and save chips to a constant filename. The demo can load a saved game file from gbfs now.Micah Elizabeth Scott9+133-22
2009-05-09 10:11That'll teach me to test on the emulator and not real hardware... All the double-size sprites were causing it to hit the hardware limit on sprites per scanline. This patch teaches UISpriteButton to use double-size only when it really needs to, and now it works on real hardware again.Micah Elizabeth Scott5+41-8
2009-05-09 09:55Combine the robot icon and battery icon, in a UIRobotStatus container.Micah Elizabeth Scott2+41-2
2009-05-09 09:41Cleaned up the robot icon implementation. Now there is a nice UIRobotIcon class.Micah Elizabeth Scott19+302-114
2009-05-09 07:53Clean up the top-level subscreen initialization. Now the whole thing is pretty clean aside from the robot sprite, which is currently disabled.Micah Elizabeth Scott36+303-182
2009-05-09 05:31More sensible semantics for sprite showing, hiding, and position/matrix updates. This fixes a glitch where the wrong sprite may show for one frame when a button is first pressed.Micah Elizabeth Scott5+30-48
2009-05-09 05:14Implemented toolbox and soldering buttons.Micah Elizabeth Scott10+135-9
2009-05-09 04:26Rename buttons.xcf.gz. This won't have all buttons in it, just the 32x32 buttons.Micah Elizabeth Scott1+0-0
2009-05-09 04:18Replaced the prototype remote control button with a clean implementation based on UIObject and MSprite.Micah Elizabeth Scott10+321-103
2009-05-08 07:16Artwork tweaks for the 'remote' button, plus new object infrastructure for sprite-backed buttons and arrays of sprite animation frames.Micah Elizabeth Scott9+366-53
2009-05-07 09:07Prototype for the animation of a UI button for toggling the robot remote control.Micah Elizabeth Scott2+61-18
2009-05-07 08:25Implement an animated marquee effect that can hilight the remote control button when it's active.Micah Elizabeth Scott9+286-10
2009-05-07 07:02More UI work: some very basic UI object classes, and some experimenting with visual design for the UI buttons.Micah Elizabeth Scott10+310-36
2009-05-07 02:58Tweak font metrics, don't cut off the bottom pixel of the border around 'g' and 'j'Micah Elizabeth Scott1+9-1
2009-05-06 09:23Implement a simple bitmap font engine, with a pixel font that looks pretty good on the DS. Also fleshed out some of the undefined data in roData.h, including Robot Odyssey's internal battery discharge accumulators. The current demo shows Scanner's battery discharge accumulator using the text renderer.Micah Elizabeth Scott15+782-29
2009-05-05 18:10Fix outdated comments in chip simulation patching.Micah Elizabeth Scott1+23-13
2009-05-05 09:30New multi-OBJ sprite abstraction. Use it to put a black border around the robot sprites, in hardware.Micah Elizabeth Scott6+386-69
2009-05-05 07:35Faster implementation of VideoConvert::CGAWideto16ColorTilesMicah Elizabeth Scott4+62-156
2009-05-05 06:19Add a background image for the lower screen.Micah Elizabeth Scott6+38-15
2009-05-04 04:54Bump to 0.5rc2.dev.Christian Hammond1+2-2
2009-05-04 04:33Tag Djblets 0.5 RC1 for release (r12090)Christian Hammond95+11427-0
2009-05-04 03:41Release 0.5 RC 1.Christian Hammond2+29-2
2009-05-04 02:46Demo of using SpriteScraper on the player sprite. Added some potential background artwork for the sub screen.Micah Elizabeth Scott6+17-2
2009-05-04 00:21HwSpriteScraper class: An SBTHardware implementation that scrapes rectangular regions of the framebuffer into NDS hardware sprites. The demo now shows each robot as a separate NDS sprite, and you can drag Scanner with the touchscreen.Micah Elizabeth Scott6+313-127
2009-05-03 22:26Add a new VideoConvert routine to filter CGA wide-pixels into a 10-color NDS-compatible sprite. After this filtering step, the DS's hardware scaling looks okay.Micah Elizabeth Scott5+211-29
2009-05-03 21:44Mostly-unsuccessful experiments in using the NDS/GBA sprite engine for interpolated scaling.Micah Elizabeth Scott2+21-6
2009-05-03 20:13Fixed grabber translation. Experimenting with NDS hardware sprites: Scaling quality is pretty bad, I'll probably just end up writing yet another software scaler...Micah Elizabeth Scott7+93-29
2009-05-03 12:11Add a new rendering backend for the sub screen which uses the NDS's sprite engine.Micah Elizabeth Scott6+194-2
2009-05-03 11:04Abbreviate SBTHardware subclass namesMicah Elizabeth Scott15+677-670
2009-05-03 10:47More reverse engineering & infrastructure for properly copying robot data to the renderer process. Sub-screen robot icons now working pretty robustly, with full support for grabbers.Micah Elizabeth Scott9+214-61
2009-05-03 09:03The sub-screen process suffered from several bugs related to having two game engines poking at the same world data. This patch solves those problems by adding a new SBT86 script to generate a 'renderer' process, which is a stripped down version of GAME.EXE that can only draw, not modify, the world.Micah Elizabeth Scott8+140-64
2009-05-03 06:51More progress toward live robot icons: SBT86 support for identifying data addresses, added per-robot data class.Micah Elizabeth Scott13+288-73
2009-05-03 02:25NDS file iconMicah Elizabeth Scott5+67-10
2009-05-03 00:11Add an ROData class, for manipulating the game's in-memory data. Nearly the whole world file is decoded, and there are accessor functions for manipulating the object room linked lists safely. The main program is now a mostly-working proof of concept for the live robot icons on the secondary screen.Micah Elizabeth Scott12+509-193
2009-05-02 21:22First working dual-screen rendering. Gameplay on top, inside Scanner on the bottom.Micah Elizabeth Scott11+110-79
2009-05-02 10:53Some early experimentation with an SBTHardware implementation which renders via the sub engine.Micah Elizabeth Scott6+136-26
2009-05-02 09:39Lots more cleanup. Split off hardware emulation backends into an abstract base class, a basic DOS/BIOS emulation class, then finally a class which is specific to running the main instance of the game. The current demo runs two instances of the game at once, and lets you switch between interacting with the two.Micah Elizabeth Scott12+663-333
2009-05-02 06:55Demo of multiple copies of Robot Odyssey running concurrently, rendering alternate frames.Micah Elizabeth Scott6+73-11
2009-05-02 05:01Big code reorganization/cleanup. Ported SBT86 to C++, laid the groundwork for supporting multiple emulated processes.Micah Elizabeth Scott13+1006-797
2009-04-30 08:03Add a TODO list.Micah Elizabeth Scott1+12-0
2009-04-30 06:54Double-buffered video. Also, instead of using BG3 Mode 5, use Mode 6 to assign VRAM directly to the LCD controller. This is simpler, and might be more power-efficient.Micah Elizabeth Scott1+13-61
2009-04-30 06:16Sound emulation works on the DS!Micah Elizabeth Scott4+103-53
2009-04-30 05:08Remove old ARM7 stub.Micah Elizabeth Scott1+0-27
2009-04-30 05:06Convert all non-SBT sources to C++. Started work on the sound engine. Moved video scaling code to ITCM/DTCM memory, to improve performance.Micah Elizabeth Scott9+975-582
2009-04-30 03:13Minor cleanups: Add 'R' to keymap, replace printf with iprintfMicah Elizabeth Scott2+22-19
2009-04-29 06:49Move SBT86 prototype to 'abandoned'. I don't think the SDL backend is terribly useful at the moment, I plan to continue development only on the Nintendo DS branch.Micah Elizabeth Scott12+0-3236
2009-04-29 06:40Shiny new build system! It builds both ARM7 and ARM9 binaries (We'll need ARM7 for sound), and it is now fairly painless to do a pristine build from original Robot Odyssey binaries- just dump a zip file from your favorite abandonware site in the 'original' directory, and the build system will SHA1 everything and pull out the files it needs.Micah Elizabeth Scott11+341-157
2009-04-28 04:45Cleanups for the lab and game translation scripts, to support the new build system.Micah Elizabeth Scott4+5-6
2009-04-28 04:04Add a fairly optimized software scaler which converts from CGA 320x192 to 16bpp 256x192 in one step.Micah Elizabeth Scott2+150-32
2009-04-28 00:58Fix some issues in setting the timezone. We had two variables for settings.TIME_ZONE, and one was clobbering the other. We also now set the TZ environment variable just like Django does.Christian Hammond1+7-1
2009-04-27 04:07This is pretty rough- the video, keyboard, and build system code all needs a lot of work. But, it runs! Yay! This will replace the 'sbt86' directory pretty soon. The binary translator itself has been updated to support ARM's memory alignment requirements. For all I/O, SDL has been replaced by libnds. Sound still isn't ported over.Micah Elizabeth Scott10+3285-0
2009-04-26 09:12Initial revision of the Robot Odyssey Chip DisassemblerMicah Elizabeth Scott1+492-0
2009-04-25 22:16Chip bytecode format reverse engineered.Micah Elizabeth Scott2+0-0
2009-04-25 20:26Stack overflow protectionMicah Elizabeth Scott1+7-2
2009-04-25 20:04More disassembly revealed the problem with chip simulation. In the function I've labeled chipsim_store_gate_result, they rely on inc/dec to leave CF unaffected. The translator was treating inc/dec as add/sub by 1, which was incorrect. Now the wallhugger works!Micah Elizabeth Scott5+9-4
2009-04-25 10:31Found the code responsible for simulating one chip. Looks less hairy than I thought- the code is "clever" in places, but the algorithm looks straightforward.Micah Elizabeth Scott1+0-0
2009-04-25 10:07The remaining problem with chips seems to be that gates work, but flip-flops don't. I used dosbox's debugger to track down the code that is supposed to modify flip-flop state. It uses the stack in a way that SBT86 doesn't support. This patch adds stack validation, to catch errors like this at runtime. It also adds some hook functions that work around this particular problem. But alas, my chips are still broken.Micah Elizabeth Scott8+198-39
2009-04-25 08:31This is seriously not pretty, but the binary translator now has some basic support for partially automating the process of patching self-modifying code prior to binary translation. Chips are starting to kinda work now. The simple 'pulse' chip in the tutorial works fine. Wallhugger no longer catastrophically fails, but still doesn't work properly.Micah Elizabeth Scott7+258-127
2009-04-23 08:37Memory traces continue to be an invaluable debugging tool.. Added a debug trace which detects self-modifying code. Turns out that there's a really scary-looking chunk of self-modifying code which seems to be responsible for electrical simulation of chips, which explains why no chips were working correctly. This patch just adds debug tools, reverse engineering this code will wait for another day.Micah Elizabeth Scott8+216-165
2009-04-23 07:24Implemented a new world-databace-tracing debug feature. Used it to find the robot grabber bug. It turned out to be a dynamic branch that I didn't patch completely. Implemented a new dynamic branch mechanism that makes it easy to handle any number of branch targets, and detects unhandled targets at runtime.Micah Elizabeth Scott7+279-29
2009-04-22 07:54Translator cleanup, faster translation (larger icache blocks), and debug cleanup.Micah Elizabeth Scott5+28-13
2009-04-22 07:21More space savings: RLE compression to eliminate zeroed portions of the data segment. (Why not zlib? This scheme is dead simple, it preserves compression ratios for other forms of binary packing later on, and it preserves copyright strings from the original binary.) The x86-64 binary for the tutorial is down to 144K b.Micah Elizabeth Scott4+89-7
2009-04-22 06:01Keep registers in a global static non-aliased struct. This produces much smaller code than the pass-by-value approach. For this to work, we must *never* take the address of 'reg', even for a memset.Micah Elizabeth Scott2+15-12
2009-04-22 05:51Several cleanups and size optimizations. Most notably, (1) new GCC flags, and (2) cached pointers to memory segmentsMicah Elizabeth Scott6+652-590
2009-04-21 22:14Fixes for newer versions of nasmMicah Elizabeth Scott1+20-2
2009-04-21 08:22One more bug down: The sprite corruption on the first logic gate was caused by lazy memory mapping. Instead of relocating the EXE file, I ran it at offset zero so it didn't need relocation. Turns out, this puts the BIOS Data Area right in the middle of the game's object tables. Every time it tries to clear the keyboard buffer, it corrupts some of the sprites. The fix was to implement real EXE relocation. This unfortunately doesn't help the grabber or wall-hugger bugs.Micah Elizabeth Scott5+93-25
2009-04-21 06:49Use a much larger audio buffer. There currently isn't a good way to slow down the CPU if the audio emulation gets too far ahead, so the buffer needs to be large enough to store the longest sound effect in the game. I think that's the transporter noise.Micah Elizabeth Scott2+22-5
2009-04-21 06:25Tweak audio sample rate. Seems to sound best at 11 kHZMicah Elizabeth Scott1+1-3
2009-04-21 06:20Authentic sound effects! All it took was a cycle counter, timestamped I/O, and some ring buffer and multithreading glue...Micah Elizabeth Scott3+275-15
2009-04-20 10:13Always use select_related(depth=1) when fetching items in a DataGrid.Christian Hammond1+3-11
2009-04-20 02:17Did I change anything? Who can tell with these binary files, anyway?Micah Elizabeth Scott1+0-0
2009-04-20 01:36Implemented a machine code pattern matching utility, used it to factor out common patches (present in all game binaries) and make them relocatable. The other binaries (main game, innvoation lab) now mostly work!Micah Elizabeth Scott9+300-121
2009-04-20 00:52Prevent the default action when clicking the edit icon for an inline editor. This prevents the page from scrolling in some browsers.Christian Hammond1+1-0
2009-04-19 22:55Add support for memory tracing, and use that as a temporary hack for implementing screen updates in MENU.EXEMicah Elizabeth Scott6+273-67
2009-04-19 21:13Patch the self-modifying code in the text renderer. We have text now.Micah Elizabeth Scott3+59-11
2009-04-19 20:12Cleanup: Add real source copyright headers, split off sbt86.c/py/h and add bt_tutorial.py to contain patches specific to TUT.EXE.Micah Elizabeth Scott6+669-440
2009-04-19 10:14Found and patched a dynamic branch which was responsible for the broken grabbing. You can now pick up objects. Remaining problems: Text is disabled (unpatched self-modifying code), can't solder (unknown cause), corrupted OR gate sprite (unknown cause).Micah Elizabeth Scott2+20-3
2009-04-19 09:42Checking in work-in-progress annotated disassembly of TUT.EXEMicah Elizabeth Scott1+0-0
2009-04-19 09:12Make the subroutine prolog/epilog a bit more efficient by using pass-by-value on Regs. The optimized 32-bit code that gcc produces isn't too bad at the moment.. and size-wise, it's only about a 3x bloat over the original 16-bit code.Micah Elizabeth Scott3+60-59
2009-04-18 10:19New implementation of arithmetic flags. Code size is a good bit smaller now, and the collision detection bug is fixed.Micah Elizabeth Scott3+180-223
2009-04-18 07:53Per-subroutine analysis and code generation. The result doesn't really work any better, and the binary is actually even larger now, but I'm rid of the setjmp/longjmp optimization minefields.Micah Elizabeth Scott3+142-85
2009-04-18 06:04It's full of hacks, but the tutorial mostly runs now. Yay.Micah Elizabeth Scott2+60-11
2009-04-18 03:36Pre-analysis patches for the tutorial binary, and new implementations of several instructions. It now renders the playfield and largetext correctly. Sprites render correctly, but at the wrong coordinates.Micah Elizabeth Scott2+58-30
2009-04-17 07:44Better interrupt and keyboard infrastructure, and some more instruction tweaking.Micah Elizabeth Scott3+354-241
2009-04-17 06:19The graphics may be messed up and the resulting binary may be almost a megabyte, but technically it runs Robot Odyssey now. Yay.Micah Elizabeth Scott3+34-14
2009-04-17 04:31Implemented DOS Int21 AH=6 keyboard input. Now you can (sort of) navigate the menu. If you start the game, the intro animation plays.Micah Elizabeth Scott1+51-32
2009-04-17 04:12Add a super-experimental static binary translator from 8086+CGA to C+SDL. So far, it can run Robot Odyssey's intro screens.Micah Elizabeth Scott3+1189-0
2009-04-17 04:11Trivial cleanup, remove PNM debug outputMicah Elizabeth Scott1+0-1
2009-04-17 01:42Random toy: An interactive auto-aligning interactive binary visualizer.Micah Elizabeth Scott1+176-0
2009-04-13 02:53Bump copyright datesMicah Elizabeth Scott23+23-23
11151 more commits remaining, fetch the repository