| informationsyndicateUTC clock | event counters The last message was received 3.09 years ago at 22:16 on Apr 25, 2009 0 messages so far today, 0 messages yesterday 0 messages so far this week, 0 messages last week 0 messages so far this month, 0 messages last month 29 messages since the first one, 3.11 years ago, for an average of 1.31 months between messages recent messages date | project | content | link |
|---|
| 22:16 on Apr 25, 2009 | navi-misc | Commit by micah :: r12059 sbt86/ (2 files): Chip bytecode format reverse engineered. | # | | 20:26 on Apr 25, 2009 | navi-misc | Commit by micah :: r12058 sbt86/sbt86.h: Stack overflow protection | # | | 20:04 on Apr 25, 2009 | navi-misc | Commit by micah :: r12057 sbt86/ (5 files): More 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! | # | | 10:31 on Apr 25, 2009 | navi-misc | Commit by micah :: r12056 sbt86/robot_odyssey_lab.idb: Found the code responsible for simulating one chip. Looks less hairy than I thought- the code is "clever" in places, but the algorithm looks straightforward. | # | | 10:07 on Apr 25, 2009 | navi-misc | Commit by micah :: r12055 sbt86/ (8 files): The 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. | # | | 08:31 on Apr 25, 2009 | navi-misc | Commit by micah :: r12054 sbt86/ (7 files): This 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. | # | | 07:24 on Apr 23, 2009 | navi-misc | Commit by micah :: r12052 sbt86/ (7 files): Implemented 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. | # | | 07:54 on Apr 22, 2009 | navi-misc | Commit by micah :: r12051 sbt86/ (5 files): Translator cleanup, faster translation (larger icache blocks), and debug cleanup. | # | | 07:21 on Apr 22, 2009 | navi-misc | Commit by micah :: r12050 sbt86/ (emulator.c sbt86.h Makefile sbt86.py): More 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. | # | | 06:01 on Apr 22, 2009 | navi-misc | Commit by micah :: r12049 sbt86/ (sbt86.py bt_common.py): Keep 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. | # | | 05:51 on Apr 22, 2009 | navi-misc | Commit by micah :: r12048 sbt86/ (6 files): Several cleanups and size optimizations. Most notably, (1) new GCC flags, and (2) cached pointers to memory segments | # | | 22:14 on Apr 21, 2009 | navi-misc | Commit by micah :: r12047 sbt86/sbt86.py: Fixes for newer versions of nasm | # | | 08:22 on Apr 21, 2009 | navi-misc | Commit by micah :: r12046 sbt86/ (5 files): One 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. | # | | 06:49 on Apr 21, 2009 | navi-misc | Commit by micah :: r12045 sbt86/ (sbt86.c robot_odyssey_tutorial.idb): Use 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. | # | | 06:25 on Apr 21, 2009 | navi-misc | Commit by micah :: r12044 sbt86/sbt86.c: Tweak audio sample rate. Seems to sound best at 11 kHZ | # | | 06:20 on Apr 21, 2009 | navi-misc | Commit by micah :: r12043 sbt86/ (sbt86.c sbt86.h sbt86.py): Authentic sound effects! All it took was a cycle counter, timestamped I/O, and some ring buffer and multithreading glue... | # | | 02:17 on Apr 20, 2009 | navi-misc | Commit by micah :: r12041 sbt86/robot_odyssey_tutorial.idb: Did I change anything? Who can tell with these binary files, anyway? | # | | 01:36 on Apr 20, 2009 | navi-misc | Commit by micah :: r12040 sbt86/ (9 files): Implemented 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! | # | | 21:13 on Apr 19, 2009 | navi-misc | Commit by micah :: r12037 sbt86/ (sbt86.c sbt86.py bt_tutorial.py): Patch the self-modifying code in the text renderer. We have text now. | # | | 10:14 on Apr 19, 2009 | navi-misc | Commit by micah :: r12035 sbt86/ (sbt86.py robot_odyssey_tutorial.idb): Found 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). | # |
|