diff --git a/Makefile b/Makefile index fb1d9c9..97f0a57 100644 --- a/Makefile +++ b/Makefile @@ -5,11 +5,14 @@ export PATH := $(PATH):/home/nick/code/nes/go-fds/bin all: dasm/ bins/ \ dasm/disksys.asm \ dasm/dk3_file4.asm \ - dasm/dk3_file4-post-copy.asm + dasm/dk3_file4-post-copy.asm \ + dasm/sf_rom-qd_file1_precopy.asm \ + dasm/sf_rom-qd_file1_postcopy.asm dasm/dk3_file4.asm: bins/dk3_file4.bin dk3_file4.cfg labels.cfg dasm/dk3_file4-post-copy.asm: bins/dk3_file4.bin dk3_file4-post-copy.cfg labels.cfg -dasm/disksys.asm: disksys.cfg labels.cfg +dasm/sf_rom-qd_file1_precopy.asm: bins/sf_rom-qd_file1.bin +dasm/sf_rom-qd_file1_postcopy.asm: bins/sf_rom-qd_file1.bin clean: -rm dasm/* bins/* @@ -26,5 +29,5 @@ dasm/%.asm: %.cfg.tmp bins/dk3_file4.bin: roms/sf_dk3.fds fdsextract --side 0 --file-num 4 --output $@ $^ -#bin/dk3_file4.bin: -# fdsextract --side 0 --file-num 4 --output $@ +bins/sf_rom-qd_file1.bin: roms/sf_rom-qd.fds + fdsextract --side 0 --file-num 1 --output $@ $^ diff --git a/dk3_file4-post-copy.cfg b/dk3_file4-post-copy.cfg index df27783..0ffbbc6 100644 --- a/dk3_file4-post-copy.cfg +++ b/dk3_file4-post-copy.cfg @@ -6,29 +6,31 @@ global { comments 3; }; -label { addr $4C00; name "SF_4C00"; }; - label { addr $7C47; name "L7C47"; paramsize 3; }; label { addr $7C5F; name "L7C5F_loop"; }; label { addr $7D83; name "L7D83_loop"; }; label { addr $7DCA; name "SF_disable_fds_io"; }; +# "cv" prefix == "code var" (self modifying code) label { addr $7C6B; name "cv7C6B"; }; label { addr $7C6C; name "cv7C6C"; }; label { addr $7C7F; name "cv7C7F"; }; label { addr $7C80; name "cv7C80"; }; +label { addr $7C87; name "L7C87_loop"; }; +label { addr $7CB7; name "L7CB7_next"; }; + label { addr $7C8C; name "cv7C8C"; }; label { addr $7C8D; name "cv7C8D"; }; label { addr $7CE2; name "cv7CE2"; }; label { addr $7CE5; name "cv7CE5"; }; -label { addr $7D2E; name "cv7D2E"; }; +label { addr $7D2E; name "cv7D2E"; comment "lda immediate value"; }; label { addr $7D3B; name "cv7D3B"; }; -label { addr $7D88; name "cv7D88"; }; +label { addr $7D88; name "cv7D88"; comment "sta addr high byte"; }; label { addr $7D75; name "cv7D75"; }; range { start $7C47; end $7DB1; type code; }; diff --git a/dk3_file4.cfg b/dk3_file4.cfg index c03abdc..436335d 100644 --- a/dk3_file4.cfg +++ b/dk3_file4.cfg @@ -7,13 +7,6 @@ global { comments 3; }; -range { - name "vectors"; - type addrtable; - start $DFF6; - end $DFFF; -}; - range { start $DDF1; end $DEFF; type bytetable; }; range { start $DF39; end $DFD8; type bytetable; }; range { start $DFE3; end $DFEF; type bytetable; }; diff --git a/labels.cfg b/labels.cfg index 985c982..679e1cb 100644 --- a/labels.cfg +++ b/labels.cfg @@ -1,6 +1,33 @@ label { addr $0100; name "FDS_nmi_flags"; }; label { addr $0101; name "FDS_irq_flags"; }; + +label { addr $4020; name "FDS_4020_TimerIRQReloadLow"; }; +label { addr $4021; name "FDS_4021_TimerIRQReloadHigh"; }; +label { addr $4022; name "FDS_4022_TimerIRQControl"; }; +label { addr $4023; name "FDS_4023_MasterIO"; }; +label { addr $4024; name "FDS_4024_WriteData"; }; +label { addr $4025; name "FDS_4025_Control"; }; +label { addr $4026; name "FDS_4026_Ext"; }; +label { addr $4030; name "FDS_4030_DiskStatus"; }; +label { addr $4031; name "FDS_4031_ReadData"; }; +label { addr $4032; name "FDS_4032_DriveStatus"; }; +label { addr $4033; name "FDS_4032_ExtRead"; }; + +label { addr $E161; name "FDS_disable_drawing"; }; +label { addr $E153; name "FDS_delay"; }; +label { addr $E185; name "FDS_enable_bg"; }; label { addr $E1B2; name "FDS_wait_for_vblank"; }; +label { addr $E237; name "FDS_append_file"; paramsize 4; }; label { addr $E7BB; name "FDS_write_vram_data"; paramsize 2; }; label { addr $EAEA; name "FDS_set_scroll_and_nametable"; }; +label { addr $F431; name "FDS_F431"; }; # ??? + +range { start $DFF6; end $DFFF; type addrtable; }; +label { addr $DFF6; name "FDS_Vector_DiskNMI1"; size 2; }; +label { addr $DFF8; name "FDS_Vector_DiskNMI2"; size 2; }; +label { addr $DFFA; name "FDS_Vector_DiskNMI3"; size 2; }; +label { addr $DFFC; name "FDS_Vector_DiskReset"; size 2; }; +label { addr $DFFE; name "FDS_Vector_DiskIRQ"; size 2; }; + +label { addr $4C00; name "SF_4C00"; }; diff --git a/sf_rom-qd_file1_postcopy.cfg b/sf_rom-qd_file1_postcopy.cfg new file mode 100644 index 0000000..2acedf1 --- /dev/null +++ b/sf_rom-qd_file1_postcopy.cfg @@ -0,0 +1,56 @@ +global { + cpu "6502"; + inputname "bins/sf_rom-qd_file1.bin"; + startaddr $5000; + inputoffs $0800; + commentcolumn 50; + comments 3; +}; + +range { start $5FC0; end $5FE0; type bytetable; name "precopy_loop"; }; +range { start $5FE1; end $5FF7; type bytetable; }; + +range { start $5739; end $57DF; type bytetable; }; +label { addr $57C0; name "precopy_loop"; }; + +range { start $57E0; end $57F5; type bytetable; }; + +range { start $57F6; end $57FF; type addrtable; }; +label { addr $57F6; name "FDS_VectorMirror_DiskNMI1"; size 2; }; +label { addr $57F8; name "FDS_VectorMirror_DiskNMI2"; size 2; }; +label { addr $57FA; name "FDS_VectorMirror_DiskNMI3"; size 2; }; +label { addr $57FC; name "FDS_VectorMirror_DiskReset"; size 2; }; +label { addr $57FE; name "FDS_VectorMirror_DiskIRQ"; size 2; }; + +label { addr $5441; name "L5441_draw_screen"; }; +label { addr $5436; name "L5436_ResetFDSIO"; }; +label { addr $510A; name "L510A_wait_for_eject"; }; +label { addr $555C; name "L555C_write_text"; comment "the inline arguments are rewritten before calling this routine (sometimes)"; }; +label { addr $5567; name "L5567_text_data_addr"; size 2; }; +label { addr $5584; name "L5584_write_selection_attr"; }; + +range { start $555A; end $555B; type addrtable; }; +range { start $51FA; end $51FB; type addrtable; }; +range { start $512D; end $512E; type addrtable; }; +range { start $5196; end $5197; type addrtable; }; + +# VRAM structs +range { start $5493; end $54A6; name "vram_data_01"; type bytetable; comment "palettes"; }; +range { start $54A7; end $54C1; name "vram_data_02"; type bytetable; comment "tiles"; }; +range { start $54C2; end $54DD; name "vram_data_03"; type bytetable; comment "tiles"; }; +range { start $54DE; end $54F9; name "vram_data_04"; type bytetable; comment "tiles"; }; +range { start $54FA; end $5514; name "vram_data_05"; type bytetable; comment "tiles"; }; +range { start $5515; end $5524; name "vram_data_06"; type bytetable; comment "tiles"; }; +range { start $5525; end $5530; name "vram_data_07"; type bytetable; comment "attributes"; }; +range { start $5531; end $553C; name "vram_data_08"; type bytetable; comment "attributes"; }; + +range { start $556C; end $5583; name "vram_data_09"; type bytetable; comment "eject disk card text"; }; +range { start $51FC; end $5213; name "vram_data_10"; type bytetable; comment "select scroll text"; }; +label { addr $5211; name "vram_data_10_value"; comment "$11 or $1F for H or V"; }; +range { start $5597; end $559B; name "vram_data_11"; type bytetable; comment "selection attr"; }; +label { addr $559A; name "vram_data_11_value"; }; + +range { start $512F; end $5146; name "vram_data_12"; type bytetable; }; +range { start $5198; end $51AF; name "vram_data_13"; type bytetable; comment "set new disk card text"; }; + +range { start $5253; end $525C; name "DiskID_5253"; type bytetable; }; diff --git a/sf_rom-qd_file1_precopy.cfg b/sf_rom-qd_file1_precopy.cfg new file mode 100644 index 0000000..5c460e7 --- /dev/null +++ b/sf_rom-qd_file1_precopy.cfg @@ -0,0 +1,35 @@ +global { + cpu "6502"; + inputname "bins/sf_rom-qd_file1.bin"; + startaddr $D000; + commentcolumn 50; + comments 3; +}; + + +#range { +# name "vectors"; +# type addrtable; +# start $DFF6; +# end $DFFF; +#}; + +range { start $DFE3; end $DFEF; type bytetable; }; +range { start $DFC0; end $DFE0; type code; name "LDFC0_reset"; }; +range { start $DF00; end $DF1B; type code; }; + +# Code that's copied to a lower address +range { start $D000; end $DEFF; type bytetable; }; + +range { start $DF1E; end $DFBF; type bytetable; }; +range { start $DFF1; end $DFF5; type bytetable; }; + +label { addr $DF07; name "LDF07_inner"; }; +label { addr $DF05; name "LDF05_outer"; }; + +label { addr $DF09; name "cvDF09"; }; +label { addr $DF0C; name "cvDF0C"; }; + +# Uses NMI vector as a reset vector +label { addr $DFF0; name "LDFF0_irq"; }; +