X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=hexed%2Fhexed.s;h=9a5f380508c2b1d9ca9b223be7f8b3390f87afb4;hb=3c2e737f8ed7731286b24a2a81794084e2807592;hp=418ca5c4069ab4a9a387c5e8b17c85c122bc49fb;hpb=8682b7ce22bd03b72af1ccaf65a71046e5303f73;p=megadrive.git diff --git a/hexed/hexed.s b/hexed/hexed.s index 418ca5c..9a5f380 100644 --- a/hexed/hexed.s +++ b/hexed/hexed.s @@ -203,7 +203,8 @@ sprite_data_end: predef_addrs: dc.l 0x000000, 0x200000, 0x400000, 0xa00000, 0xa10000 - dc.l 0xa11100, 0xa12000, 0xa13000, 0xa14000, 0xc00000 + dc.l 0xa11100, 0xa12000, 0xa13000, 0xa14000, 0xa15100 + dc.l 0xc00000 predef_addrs_end: safe_addrs: @@ -214,6 +215,10 @@ safe_addrs: dc.l 0xa12000, 0xa120ff dc.l 0xa13000, 0xa130ff safe_addrs_end: + dc.l 0xa15100, 0xa1513f +safe_addrs_end_32x: + dc.l 0xa15180, 0xa153ff +safe_addrs_end_32x_vdp: sizeof_bin: dc.l _edata @@ -275,6 +280,33 @@ main: tst.w (0xc00004).l no_tmss: + /* want to do early PC transfer (with RAM/VRAM intact and such)? + * also give time PC to see start condition */ + move.l #0x2000,d0 +0: dbra d0,0b + + move.l #0xa10005,a0 + btst.b #5,(a0) + bne no_early_transfer +move.b #1,(0) + move.b #0x40,(0xa1000b).l /* port 2 ctrl */ + move.b #0x00,(a0) /* port 2 data - start with TH low */ + move.l #0x2000,d0 +0: + btst.b #4,(a0) + beq do_early_transfer + dbra d0,0b + +move.b #2,(0) + move.b #0,(0xa1000b).l + bra no_early_transfer /* timeout */ + +do_early_transfer: +move.b #9,(0) + bsr do_transfer + +no_early_transfer: + .if COPY_TO_EXP /* copy to expansion device if magic number is set */ move.l #0x400000,a1 @@ -1327,7 +1359,8 @@ wait_tl_low0: bne wait_tl_low0 menu_text txt_working, 13, 13, 0 - bra do_transfer + bsr do_transfer + bra return_to_main # go back to main mode return_to_main: @@ -1374,6 +1407,19 @@ get_safety_mask: lsr.l #8,d1 lea (safe_addrs,pc),a1 move.w #(safe_addrs_end - safe_addrs)/8-1,d2 + cmp.l #0x4D415253,(0xa130ec) /* 'MARS' */ + bne no_32x + move.w #(safe_addrs_end_32x - safe_addrs)/8-1,d2 + move.w (0xa15100),d0 + and.w #3,d0 + cmp.w #3,d0 /* ADEN and nRES */ + bne no_32x_vdp + btst.b #7,d0 /* FM */ + bne no_32x_vdp + move.w #(safe_addrs_end_32x_vdp - safe_addrs)/8-1,d2 +no_32x_vdp: +no_32x: + 0: move.l (a1)+,d0 cmp.l d0,d1