Nick Downing [Sat, 25 Jun 2022 03:07:10 +0000 (13:07 +1000)]
Rationalize the addresses file, implement more sections to avoid need for ALIGN
Nick Downing [Sat, 25 Jun 2022 01:01:30 +0000 (11:01 +1000)]
Move all graphical utilities into /shape
Nick Downing [Fri, 24 Jun 2022 14:27:06 +0000 (00:27 +1000)]
Very very preliminary ucode disassembler
Nick Downing [Fri, 24 Jun 2022 12:55:57 +0000 (22:55 +1000)]
Make ucode strings be words, except collision_test and animate_shape strings
Nick Downing [Fri, 24 Jun 2022 12:30:38 +0000 (22:30 +1000)]
Add object names to the labels for the ucode strings
Nick Downing [Fri, 24 Jun 2022 10:42:20 +0000 (20:42 +1000)]
More analysis about decimal routines in ucode
Nick Downing [Fri, 24 Jun 2022 10:27:53 +0000 (20:27 +1000)]
Standardize on uppercase for = defines in asxxxx source, HW_XXX not IO_XXX for soft switches in /emu_65c02, and ucode_XXX instead of microcode_XXX in /disasm
Nick Downing [Fri, 24 Jun 2022 09:46:07 +0000 (19:46 +1000)]
Make my modifications to asxv5pxx more proper for sending to upstream
Nick Downing [Fri, 24 Jun 2022 07:39:36 +0000 (17:39 +1000)]
More analysis identifying the different microcode tables and naming the objects
Nick Downing [Fri, 24 Jun 2022 06:54:27 +0000 (16:54 +1000)]
More analysis about when the different microcode tables are used
Nick Downing [Fri, 24 Jun 2022 04:05:07 +0000 (14:05 +1000)]
More analysis of the microcode opcode format
Nick Downing [Thu, 23 Jun 2022 08:13:07 +0000 (18:13 +1000)]
More analysis about how the microcode tables work
Nick Downing [Thu, 23 Jun 2022 02:48:09 +0000 (12:48 +1000)]
Fix DHGR starfield bug by setting PIXEL_SHAPE=1
Nick Downing [Thu, 23 Jun 2022 00:20:01 +0000 (10:20 +1000)]
Dark green lowlights for tree and cactus, improve the explosion3 slightly
Nick Downing [Wed, 22 Jun 2022 16:54:36 +0000 (02:54 +1000)]
Change colours of some game objects just for variety (use dark green more, etc)
Nick Downing [Wed, 22 Jun 2022 16:35:32 +0000 (02:35 +1000)]
Add shape_mono_to_grey.py (similar to shape_versions.py), make some shapes grey
Nick Downing [Wed, 22 Jun 2022 16:13:35 +0000 (02:13 +1000)]
Reinstate my graphics for haystack, house, tree and cactus, improve explosions
Nick Downing [Wed, 22 Jun 2022 15:05:47 +0000 (01:05 +1000)]
Emulate HGR pixel shift so that title text colour cycling looks the same as the original game, temporarily overwrite shape_dhgr.png with mostly original graphics (keeps the revised projectiles and adds pixel-shifted version of title text)
Nick Downing [Wed, 22 Jun 2022 14:06:49 +0000 (00:06 +1000)]
Implement DHGR overflow pixel to left (from high bit of first main byte in row)
Nick Downing [Wed, 22 Jun 2022 12:48:21 +0000 (22:48 +1000)]
Improve DHGR drawing slightly, temporarily revert DHGR to original shape data
Nick Downing [Wed, 22 Jun 2022 11:51:19 +0000 (21:51 +1000)]
New approach to DHGR which does not change the game geometry (except for the house and pylon which I manually modified), and loads aux shape data in other bank
Nick Downing [Wed, 22 Jun 2022 04:20:35 +0000 (14:20 +1000)]
Move a2_hex2bin.py from /disasm where it is no longer used to /loader, create matching a2_bin2hex.py, in /disasm fix hard coded entry point (needed for DHGR)
Nick Downing [Wed, 22 Jun 2022 02:54:11 +0000 (12:54 +1000)]
Fix language card bank swap, fix incorrect dejunk at 0x9580 giving differences
Nick Downing [Wed, 22 Jun 2022 01:05:08 +0000 (11:05 +1000)]
First cut at making a2_pack.py support language card
Nick Downing [Wed, 22 Jun 2022 00:17:02 +0000 (10:17 +1000)]
Unify the a2_pack.py --(rev|fwd) code slightly, fix a fixup bug in uncompressed
Nick Downing [Tue, 21 Jun 2022 10:25:09 +0000 (20:25 +1000)]
Unify a2_pack_*.py into a2_pack.py (--rev|--fwd)
Nick Downing [Tue, 21 Jun 2022 09:50:48 +0000 (19:50 +1000)]
Make a2_pack_*.py use the same LZSS compressor, rev flag controls the direction
Nick Downing [Tue, 21 Jun 2022 09:33:29 +0000 (19:33 +1000)]
In a2_pack_*.py make the loader be constructed in order of execution (always bottom to top due to 6502 hardware) and payload be constructed in corresponding order (bottom to top for a2_pack_fwd.py, but top to bottom for a2_pack_rev.py)
Nick Downing [Tue, 21 Jun 2022 09:01:31 +0000 (19:01 +1000)]
Make a2_pack_fwd.py have the mini-linker from a2_pack_rev.py
Nick Downing [Tue, 21 Jun 2022 08:52:27 +0000 (18:52 +1000)]
In a2_pack_*.py implement fixup flags (makes the two mini-linkers more similar)
Nick Downing [Tue, 21 Jun 2022 08:31:45 +0000 (18:31 +1000)]
In a2_pack_*.py make each section be a variable instead of accessed by indexing
Nick Downing [Tue, 21 Jun 2022 05:04:32 +0000 (15:04 +1000)]
Add a2_pack_rev.py and lzss_unpack_rev.py (loads game without clobbering DOS)
Nick Downing [Tue, 21 Jun 2022 03:40:49 +0000 (13:40 +1000)]
Rename a2_pack.py to a2_pack_fwd.py and lzss_unpack.asm to lzss_unpack_fwd.asm
Nick Downing [Tue, 21 Jun 2022 03:34:09 +0000 (13:34 +1000)]
In a2_pack.py implement a mini linker based on end addresses of sections, change to build the sections downwards so that end address can be specified not start
Nick Downing [Tue, 21 Jun 2022 01:53:41 +0000 (11:53 +1000)]
In a2_pack.py unpack in address order (rather than compressed then uncompressed) and reinitialize the src pointer each time, saves src += 5 - 0x100 at runtime
Nick Downing [Mon, 20 Jun 2022 17:09:39 +0000 (03:09 +1000)]
Implement /loader/a2_pack.py which can convert ihx file with arbitrary segments into a self-extracting loader (in future may support language card, aux memory)
Nick Downing [Mon, 20 Jun 2022 08:29:19 +0000 (18:29 +1000)]
In /emu_65c02 implement a chice of *.bin, *.a2bin or *.ihx load format, in /loader implement a2_load.py which converts *.a2bin to *.ihx by running the embedded loader under emulation until a specified starting location, in /text implement dhr2hex.py which converts a *.dhr file into a *.ihx file which loads the main and aux screens via extended linear addresses recognized by the emulator, in /disasm add a forgotten update to star_blazer.asm.patch, change most *.bin to *.a2bin
Nick Downing [Mon, 20 Jun 2022 05:11:42 +0000 (15:11 +1000)]
Implement a default lowercase font for Apple IIe, from John Macdougall's LCA
Nick Downing [Sun, 19 Jun 2022 08:11:57 +0000 (18:11 +1000)]
In /emu_65c02, rationalize character generator to support either CG ROM, video ROM, or fallback which is generated from an old Signetics 2513 datasheet -- less likely to have copyright problems than Apple CG ROM, and is useful in cases where the character set isn't critical, e.g. DHGR or 128K games that don't use text
Nick Downing [Sat, 18 Jun 2022 16:52:59 +0000 (02:52 +1000)]
In /emu_65c02, extend the mem[] array to include a read-only area for the ROMs (allows MEM_TRACE to work for ROMs), implement Applesoft ROMs for Apple II+, fix various issues so the emulator can be booted to Applesoft without an image
Nick Downing [Fri, 17 Jun 2022 13:33:50 +0000 (23:33 +1000)]
Speed up LZSS encoding
Nick Downing [Fri, 17 Jun 2022 13:15:50 +0000 (23:15 +1000)]
Re-tune LZSS since it now has to handle a longer run of 0s in the hires screen
Nick Downing [Fri, 17 Jun 2022 12:34:46 +0000 (22:34 +1000)]
Remove the hires loader since the LZSS loader doesn't care about hires gap
Nick Downing [Fri, 17 Jun 2022 12:16:15 +0000 (22:16 +1000)]
Remove the RLE, RLE2 and tree loaders since LZSS is much better
Nick Downing [Fri, 17 Jun 2022 12:13:47 +0000 (22:13 +1000)]
Optimizations to how the bit buffer is initialized in LZSS loader
Nick Downing [Fri, 17 Jun 2022 11:49:45 +0000 (21:49 +1000)]
Add LZSS loader
Nick Downing [Thu, 16 Jun 2022 08:27:30 +0000 (18:27 +1000)]
Add readme.txt and export.sh, disable DHGR again, fix minor glitches
Nick Downing [Tue, 14 Jun 2022 16:55:16 +0000 (02:55 +1000)]
Save a byte in tree decoder routine by recycling sentinel bit via cf
Nick Downing [Tue, 14 Jun 2022 15:15:58 +0000 (01:15 +1000)]
Hacking to make DHGR build playable in the emulator (language card tree loader)
Nick Downing [Tue, 14 Jun 2022 14:26:15 +0000 (00:26 +1000)]
Add the ability to remove a jump to the real entry point when encoding and reinstate it later when decoding (the loader jumps directly to the real entry point)
Nick Downing [Tue, 14 Jun 2022 11:00:56 +0000 (21:00 +1000)]
Refactor encoders and decoders to work stackwise, allows Python to keep track of the position in each stream and avoids having to estimate the size of output
Nick Downing [Tue, 14 Jun 2022 09:16:39 +0000 (19:16 +1000)]
In tree loader, eliminate the high table (pairs of left bit-8 and right bit-8), by using a gray code to make tokens with same pair of bit-8 values consecutive
Nick Downing [Tue, 14 Jun 2022 08:00:05 +0000 (18:00 +1000)]
Make tree loader faster by inlining (at the expense of size)
Nick Downing [Mon, 13 Jun 2022 16:56:17 +0000 (02:56 +1000)]
Add tree_loader (tokenizer), saves quite a lot more bytes, but work in progress
Nick Downing [Mon, 13 Jun 2022 13:50:37 +0000 (23:50 +1000)]
Nasty hacks to account for dhgr delay wrt hgr, but the high score display is wrong, and gameplay will be affected as horizontal collision bounds will increase
Nick Downing [Mon, 13 Jun 2022 12:26:14 +0000 (22:26 +1000)]
Add rle2_loader (pair runs), does save some bytes although it's not dramatic
Nick Downing [Mon, 13 Jun 2022 06:23:02 +0000 (16:23 +1000)]
Rename my_loader to hires_loader, implement rle_loader (needed so as not to overwrite DOS when BLOADing the DHGR build)
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