Nick Downing [Mon, 13 Jun 2022 02:38:16 +0000 (12:38 +1000)]
Tune areas to put more into language card, implement language card in /emu_65c02 (this is necessary because after the tuning, data1 overlays rom_pread)
Nick Downing [Mon, 13 Jun 2022 01:30:36 +0000 (11:30 +1000)]
For DHGR, implement language card support for the loader and call to rom_pread
Nick Downing [Mon, 13 Jun 2022 01:08:18 +0000 (11:08 +1000)]
Make pack.py handle the case where relocate address falls between segments
Nick Downing [Mon, 13 Jun 2022 00:10:11 +0000 (10:10 +1000)]
Make pack.py utility understand intelhex directly (will be needed for segments)
Nick Downing [Sun, 12 Jun 2022 23:49:28 +0000 (09:49 +1000)]
Merge udata2 into data so that we do not have to specify its address in Makefile, tune the split around address c000 in DHGR build to load into language card
Nick Downing [Sun, 12 Jun 2022 23:40:35 +0000 (09:40 +1000)]
For DHGR build, don't move data at 1f80 to end, as it's not necessary anymore
Nick Downing [Sun, 12 Jun 2022 23:23:52 +0000 (09:23 +1000)]
Trim disassembly bounds slightly, improve .ds output for non-referenced address, fix a bug in non-DHGR shape compiler, can now rebuild original binary again
Nick Downing [Sun, 12 Jun 2022 13:57:10 +0000 (23:57 +1000)]
Introduce my (improved?) graphics in the PIXEL_SHAPE = 1 and DHGR = 1 builds
Nick Downing [Sun, 12 Jun 2022 13:38:38 +0000 (23:38 +1000)]
Implement DHGR shape compiler, and many hacks to get things to fit in memory
Nick Downing [Sun, 12 Jun 2022 12:38:43 +0000 (22:38 +1000)]
wip hacks
Nick Downing [Sun, 12 Jun 2022 11:56:03 +0000 (21:56 +1000)]
Implement DHGR colour cycling for the STAR BLAZER title animation
Nick Downing [Sun, 12 Jun 2022 11:19:06 +0000 (21:19 +1000)]
Use 80STORE (aka 80COL) switch instead of WRCARDRAM to access aux memory (fixes the read-modify-write cycle for graphics drawing), and implement in /emu_65c02
Nick Downing [Sun, 12 Jun 2022 09:59:43 +0000 (19:59 +1000)]
Add PIXEL_SHAPE = 1 to draw pixels via the regular shape table instead of special code, remove DHGR porting from the special code as it will not be supported
Nick Downing [Sun, 12 Jun 2022 09:06:51 +0000 (19:06 +1000)]
Make ALIGN = 0 squash things to save space (simpler than using DHGR = 1)
Nick Downing [Sun, 12 Jun 2022 06:47:39 +0000 (16:47 +1000)]
Insert most analysis from commit
f031b692 (the parts I'm more confident about)
Nick Downing [Sun, 12 Jun 2022 05:51:41 +0000 (15:51 +1000)]
More analysis, to identify all object-related structures (some are for subsets)
Nick Downing [Sun, 12 Jun 2022 04:04:03 +0000 (14:04 +1000)]
Initial DHGR patches to game code (it doesn't have DHGR source data yet)
Nick Downing [Sun, 12 Jun 2022 02:09:43 +0000 (12:09 +1000)]
Basic /emu_65c02 DHGR support, displays zebra (SETDHIRES not implemented yet)
Nick Downing [Sun, 12 Jun 2022 01:04:39 +0000 (11:04 +1000)]
Preliminary Apple IIe support in /emu_65c02, just loading the ROMs so far, but it means we can call rom_auxmove without a crash and can partially display zebra
Nick Downing [Sun, 12 Jun 2022 00:15:05 +0000 (10:15 +1000)]
Base disassembly on dejunked image (fill value 0), add ALIGN and SHAPE options
Nick Downing [Sat, 11 Jun 2022 18:03:22 +0000 (04:03 +1000)]
Update /emu_65c02/emu_65c02.c to applesoft_basic.git commit
5036792d, with the part specific to star blazer ported over to the new code and the delays reverted
Nick Downing [Sat, 11 Jun 2022 17:42:13 +0000 (03:42 +1000)]
Remove copyrighted material from the repo (make it download each time), add /util submodule for creating a bootable DOS disk, add /linapple-pie submodule which is needed for /util, add /disasm/star_blazer.dsk as a convenience for testing
Nick Downing [Sat, 11 Jun 2022 16:47:25 +0000 (02:47 +1000)]
Implement shape compiler which can convert the mono png image back to source code, improve shape extractor for consistency with compiler, put .include in patch
Nick Downing [Sat, 11 Jun 2022 12:28:25 +0000 (22:28 +1000)]
Add patching ability via the Makefile (for now, later do it via the txt file)
Nick Downing [Sat, 11 Jun 2022 11:55:33 +0000 (21:55 +1000)]
Insert friendly names for some of the more newly discovered data structures
Nick Downing [Sat, 11 Jun 2022 10:07:39 +0000 (20:07 +1000)]
More dejunking, manual analysis to cover some pointers not found automatically
Nick Downing [Sat, 11 Jun 2022 07:28:27 +0000 (17:28 +1000)]
Implement extra syntax for manual descriptions (extra_types, local_label, writeable, mate), add manual descriptions (but extra syntax wasn't needed in the end)
Nick Downing [Sat, 11 Jun 2022 07:06:39 +0000 (17:06 +1000)]
Fix bugs in local variable handling
Nick Downing [Sat, 11 Jun 2022 06:07:47 +0000 (16:07 +1000)]
Add macro2 to detect lo/hi pairs in immediate operands, and < > for immediates
Nick Downing [Sat, 11 Jun 2022 04:05:45 +0000 (14:05 +1000)]
Implement larr_NNNN and harr_NNNN (lo and hi parts of a word) and < > operators
Nick Downing [Sat, 11 Jun 2022 02:37:02 +0000 (12:37 +1000)]
Recognize macros by regexen again (more flexible), but using raw disassembly output (more reliable than processed output), split out addressing mode handlers for consistency with macro handlers (code to interpret a match placed is placed underneath regex), implement 65c02 zero page indirect non-indexed addressing mode
Nick Downing [Sat, 11 Jun 2022 02:10:05 +0000 (12:10 +1000)]
Make regexen match disassembler output directly (without asxxxx syntax)
Nick Downing [Sat, 11 Jun 2022 01:51:44 +0000 (11:51 +1000)]
Create items for the operand parts instructions (allow for self-modifying code)
Nick Downing [Sat, 11 Jun 2022 01:36:47 +0000 (11:36 +1000)]
Implement partial instruction disassembly, to deal with code that jumps partway into an instruction or self-modifying code (code item is now only the opcode)
Nick Downing [Sat, 11 Jun 2022 01:13:35 +0000 (11:13 +1000)]
Implement writeable flag, improve addr chain and read/write comments slightly
Nick Downing [Fri, 10 Jun 2022 13:38:49 +0000 (23:38 +1000)]
Implement rts table detection and output, some manual analysis, finds all code
Nick Downing [Fri, 10 Jun 2022 12:45:28 +0000 (22:45 +1000)]
Implement local labels
Nick Downing [Fri, 10 Jun 2022 11:46:01 +0000 (21:46 +1000)]
Implement named fields for area info and item info (makes code more readable)
Nick Downing [Fri, 10 Jun 2022 10:17:37 +0000 (20:17 +1000)]
Recognize common sequences by opcode rather than regex (more reliable), fix bugs in .dw label emission, add rts_NNNN labels to more easily see the control flow
Nick Downing [Fri, 10 Jun 2022 07:38:31 +0000 (17:38 +1000)]
More memory analysis (find pointer arrays)
Nick Downing [Fri, 10 Jun 2022 06:44:02 +0000 (16:44 +1000)]
More memory analysis (implement all addressing modes)
Nick Downing [Fri, 10 Jun 2022 04:49:35 +0000 (14:49 +1000)]
Add comments giving relevant register values from trace, start memory analysis
Nick Downing [Fri, 10 Jun 2022 00:38:00 +0000 (10:38 +1000)]
Make my loader origin 09fd not 0a00 to avoid overlaying first 3 bytes of original code (confuses the prevs/nexts), add prevs/nexts display in assembly output
Nick Downing [Thu, 9 Jun 2022 11:54:39 +0000 (21:54 +1000)]
DHGR headquarters and radar
Nick Downing [Thu, 9 Jun 2022 10:48:29 +0000 (20:48 +1000)]
Add /disasm/shape_versions.py which can quickly generate different colour schemes for an object by shifting, implement DHGR haystack, house, tree and cactus
Nick Downing [Thu, 9 Jun 2022 05:54:34 +0000 (15:54 +1000)]
Add /disasm/shape_dhgr.png with initial DHGR version of the graphics
Nick Downing [Thu, 9 Jun 2022 04:38:05 +0000 (14:38 +1000)]
Redraw projectiles (bomb, missile) in a more principled way
Nick Downing [Wed, 8 Jun 2022 16:48:16 +0000 (02:48 +1000)]
Use less filtering in /disasm/shape_color_to_mono.py, allows to fix hole in 4
Nick Downing [Wed, 8 Jun 2022 14:35:43 +0000 (00:35 +1000)]
Improve mono rounding, reinstate auto-detection of mono based on LSB of width, manually fix the mono items with precise pixels (parachute, fuel, derrick, 4, 7), minor pixel tweaks to a few of the ground objects (missile launchers, house)
Nick Downing [Wed, 8 Jun 2022 12:57:40 +0000 (22:57 +1000)]
Completely new unfringing and rounding method that creates less artifacts and deals with half-pixel shifts more intelligently, reset shape.png to generated one
Nick Downing [Wed, 8 Jun 2022 07:57:25 +0000 (17:57 +1000)]
Make the front of player's ship and the top of ICBM slightly more rounded
Nick Downing [Wed, 8 Jun 2022 07:47:42 +0000 (17:47 +1000)]
Revert to the mono digits and STAR BLAZER text, edit the digits
Nick Downing [Wed, 8 Jun 2022 07:05:00 +0000 (17:05 +1000)]
Revert to mono versions of bombs, missiles and radars, then manually colourize
Nick Downing [Wed, 8 Jun 2022 05:26:17 +0000 (15:26 +1000)]
Manually fill in the gaps in coloured text
Nick Downing [Wed, 8 Jun 2022 05:11:01 +0000 (15:11 +1000)]
Improve enhancement of text slightly, add a new shape.png which contains manual enhancements -- for now it is just taking the enhanced mono images of the parachute and derrick and enhanced colour of the others, also add shape0[ab].png which are the compiled output and difference from original respectively (interestingly, it found a way to use hibit-set lines to improve the look of the parachute)
Nick Downing [Wed, 8 Jun 2022 04:23:51 +0000 (14:23 +1000)]
Add --hgr switch to /disasm/shape_color_to_mono.py to force it to use 6 colours
Nick Downing [Wed, 8 Jun 2022 03:24:37 +0000 (13:24 +1000)]
Create rounded and enhanced mono shapes as well as colour (for a few items such as the fuel boxes and pylons, that use position for detail rather than colour)
Nick Downing [Wed, 8 Jun 2022 03:08:18 +0000 (13:08 +1000)]
Implement /disasm/shape_enhance.py which is a kind of search-and-replace for the rounded images, helps to remove some jaggies and connect the letters
Nick Downing [Wed, 8 Jun 2022 02:05:55 +0000 (12:05 +1000)]
Change switches to /disasm/shape_extract.py into separate programs
Nick Downing [Tue, 7 Jun 2022 16:46:27 +0000 (02:46 +1000)]
Reorganize the shape compiler code, tune slightly
Nick Downing [Tue, 7 Jun 2022 12:13:42 +0000 (22:13 +1000)]
Modifications to extraction and compilation to recover after --unfringe/--round
Nick Downing [Tue, 7 Jun 2022 10:22:11 +0000 (20:22 +1000)]
Implement initial shape compiler (just converts back to a monochrome image)
Nick Downing [Tue, 7 Jun 2022 08:11:13 +0000 (18:11 +1000)]
Add a rounding algorithm for extracted shapes, to use extra vertical resolution
Nick Downing [Tue, 7 Jun 2022 06:34:49 +0000 (16:34 +1000)]
Improve mono shape extraction to be surrounded by grey not stripes, perform all extractions of mono, fringed and unfringed into shape[012].png for reference
Nick Downing [Tue, 7 Jun 2022 04:15:02 +0000 (14:15 +1000)]
Implement --unfringe algorithm in /disasm/shape_extract.py (spatially symmetrical, but favours white over black by spreading white by +/-2 and black by +/-1)
Nick Downing [Tue, 7 Jun 2022 01:54:59 +0000 (11:54 +1000)]
Tidy up /disasm/shape_extract.py so that the checkerboard is generated natively
Nick Downing [Tue, 7 Jun 2022 01:29:04 +0000 (11:29 +1000)]
Make /disasm/shape_extract.py produce a palettized image
Nick Downing [Wed, 25 May 2022 17:26:56 +0000 (03:26 +1000)]
Improve emulator graphics with latest code from applesoft project
Nick Downing [Fri, 13 May 2022 00:38:40 +0000 (10:38 +1000)]
Label subroutines, locations and variables (with 16-bit direct addressing only)
Nick Downing [Thu, 12 May 2022 07:27:36 +0000 (17:27 +1000)]
Add ability to read the trace and disassemble traced or reachable instructions
Nick Downing [Thu, 12 May 2022 03:27:12 +0000 (13:27 +1000)]
Define a new addrs.txt file format, start to rewrite disasm.py completely
Nick Downing [Wed, 11 May 2022 07:39:25 +0000 (17:39 +1000)]
Implement a new pc-pair and register min-max trace, save a reasonable trace in /disasm/trace.txt where I ran the demo mode for a while and then attempted each level (I used a level-cheat to enter at levels 4/5 so trace may be inconsistent)
Nick Downing [Tue, 10 May 2022 17:06:02 +0000 (03:06 +1000)]
Add DHGR test program and image in /test, change $(...) in Makefiles to ${...}
Nick Downing [Tue, 10 May 2022 13:59:54 +0000 (23:59 +1000)]
Truncate loaded image at 0x9ded, after last byte of referenced data identified by the disassembly process with pointers, still works as far as I can determine
Nick Downing [Tue, 10 May 2022 13:45:32 +0000 (23:45 +1000)]
Add support for pointers, this makes it much clearer what data is referred to
Nick Downing [Tue, 10 May 2022 12:40:18 +0000 (22:40 +1000)]
Add word support (a bit roughly)
Nick Downing [Tue, 10 May 2022 11:36:00 +0000 (21:36 +1000)]
Improve the appearance of the generated code for branching and rts instructions
Nick Downing [Tue, 10 May 2022 11:22:29 +0000 (21:22 +1000)]
Remove the seeding pass altogether and perform disassembly passes until stable
Nick Downing [Tue, 10 May 2022 11:08:46 +0000 (21:08 +1000)]
Temporarily remove the extraction of vector tables for seeding the disassembly
Nick Downing [Tue, 10 May 2022 11:06:02 +0000 (21:06 +1000)]
Make automatic labels be added immediately and updated progressively, instead of just prior to disassembly (preparing for disassembly to do its own labelling)
Nick Downing [Tue, 10 May 2022 10:39:32 +0000 (20:39 +1000)]
Make disassembly pass follow items list strictly, based on code/data item type
Nick Downing [Tue, 10 May 2022 10:24:31 +0000 (20:24 +1000)]
In /disasm, move items list out to a text file (makes disasm.py more generic)
Nick Downing [Tue, 10 May 2022 10:11:36 +0000 (20:11 +1000)]
In /disasm, move inessential files to /test, move loading code to load.py and have it save a new mem.bin image for the disassembler and shape extractor to use
Nick Downing [Tue, 10 May 2022 07:59:42 +0000 (17:59 +1000)]
In /disasm rename star_disasm.py to disasm.py, collapse outer and inner loops (looking for area sentinels then processing address range of the area) to combined loops which simply step through the items one at a time and deal with them
Nick Downing [Tue, 10 May 2022 06:50:44 +0000 (16:50 +1000)]
Change to disassembling and then recreating /loader/star_blazer_my_loader.bin
Nick Downing [Tue, 10 May 2022 01:07:53 +0000 (11:07 +1000)]
Move most of /orig to /loader and most of / to /disasm
Nick Downing [Tue, 10 May 2022 00:58:50 +0000 (10:58 +1000)]
Make dos33fsprogs be a submodule (this also incorporates my binary save bugfix)
Nick Downing [Mon, 9 May 2022 08:34:52 +0000 (18:34 +1000)]
Implement a dejunked crack loader which reduces image from 37636 to 32343 bytes
Nick Downing [Mon, 9 May 2022 07:15:55 +0000 (17:15 +1000)]
Modify disk extraction, emulator and all other utilities to keep the DOS 3.3 header at the start of the binary image, so that emulator can run any DOS 3.3 file
Nick Downing [Mon, 9 May 2022 06:49:00 +0000 (16:49 +1000)]
Add DOS 3.3 disk extraction and crack-loader dejunking routine in /orig
Nick Downing [Mon, 9 May 2022 04:07:17 +0000 (14:07 +1000)]
Integrate areas with items (roughly)
Nick Downing [Sun, 8 May 2022 04:50:26 +0000 (14:50 +1000)]
Implement a list of items by bisection rather than a hash of labels (so we can search for the item containing a given address, then automatically offset it)
Nick Downing [Sun, 8 May 2022 03:54:01 +0000 (13:54 +1000)]
Add some cheats in emu_65c02, for fun and also to aid testing I suppose
Nick Downing [Sun, 8 May 2022 02:52:39 +0000 (12:52 +1000)]
Trace the drawing of objects, determine player is 0x61
Nick Downing [Sun, 8 May 2022 02:19:52 +0000 (12:19 +1000)]
Identify score and demo mode variables by tracing
Nick Downing [Sat, 7 May 2022 15:22:32 +0000 (01:22 +1000)]
Make emu_65c02 playable, use trace log to check for unreached code (none found)
Nick Downing [Sat, 7 May 2022 14:13:17 +0000 (00:13 +1000)]
Discovering more about collision detection, I think
Nick Downing [Sat, 7 May 2022 13:38:13 +0000 (23:38 +1000)]
More analysis (about score and miscellaneous drawing)
Nick Downing [Sat, 7 May 2022 09:55:51 +0000 (19:55 +1000)]
More analysis (collisions and sound but rough)
Nick Downing [Sat, 7 May 2022 08:45:51 +0000 (18:45 +1000)]
More analysis (mainly about game physics)