---- star_blazer.asm0 2022-06-22 10:57:12.584038329 +1000
-+++ star_blazer.asm 2022-06-22 11:03:50.524042406 +1000
+--- star_blazer.asm0 2022-06-22 12:37:18.308006037 +1000
++++ star_blazer.asm 2022-06-22 12:41:24.552008560 +1000
@@ -1,3 +1,8 @@
-+ALIGN = 0
-+DHGR = 1
++ALIGN = 1
++DHGR = 0
+PIXEL_SHAPE = 0
+SHAPE = 1
+
ora hw_pb1 ; 17d4 -> 17d6 -> 17d9 r
bpl 1$ ; 17d6 -> 17d9 -> 17f2 r n=0
+.if DHGR ; language card
-+ lda hw_lc_bank1_rom_we
++ sta hw_lc_bank2_rom_we
+.endif
ldx #0x01 ; 17db r
0$: jsr rom_pread ; 17dd r
cpy #0xff ; 17e0 r
-@@ -1995,18 +2039,14 @@
+@@ -1995,18 +2039,15 @@
sta bvar_179e ; 17e9 r
sta bvar_17a3 ; 17ec r
sta bvar_1e0e ; 17ef r
- .db 0x00 ; 17ff
+1$:
+.if DHGR ; language card
-+ lda hw_lc_bank1_ram_we
++ sta hw_lc_bank2_ram_we
++ sta hw_lc_bank2_ram_we
+.endif
+ jmp [vec_init_game] ; 17d9 -> 17f2 -> 1708 r
+.if ALIGN
divide_a_by_y:
sta *accumulator + 1 ; 0a90,0aa0,0ab5,0ad5 -> 1800 -> 1802 r
lda #0x00 ; 1800 -> 1802 -> 1804 r
-@@ -2071,10 +2111,12 @@
+@@ -2071,10 +2112,12 @@
lda *result + 1 ; 186e r
ldy *result + 2 ; 1870 r
rts ; 1872 r
random_init:
lda *random_seed ; 16ae -> 187a -> 187c r
ora #0x01 ; 187a -> 187c -> 187e r
-@@ -2233,16 +2275,31 @@
+@@ -2233,16 +2276,31 @@
ldx #>hires_screen ; 199b -> 199d -> 199f r
stx *video_line_ptr + 1 ; 199d -> 199f -> 19a1 r
tay ; 199f -> 19a1 -> 19a2 r
rts ; 19b5 -> 19b8 -> 1713 r s=fd
video_clear_rectangle:
ldx *clip_y0 ; 1064 -> 19b9 -> 19bb r
-@@ -2252,7 +2309,13 @@
+@@ -2252,7 +2310,13 @@
sta *video_line_ptr + 1 ; 19c0 -> 19c3 -> 19c5 r
ldy *clip_x0 ; 19c3 -> 19c5 -> 19c7 r
lda #0x00 ; 19c5 -> 19c7 -> 19c9 r
iny ; 19c9 -> 19cb -> 19cc r
cpy *clip_x1 ; 19cb -> 19cc -> 19ce r y=6d..94
bcc 1$ ; 19cc -> 19ce -> 19c9,19d0 r c=0..1
-@@ -2300,6 +2363,7 @@
+@@ -2300,6 +2364,7 @@
sta object1080_y0 - 0x10,x ; 1a1b -> 1a1e -> 1a21 r x=10..7f
adc #0x01 ; 1a1e -> 1a21 -> 1a23 r c=0..1 d=0
sta object1080_y1 - 0x10,x ; 1a21 -> 1a23 -> 1a26 r x=10..7f
rts ; 1a23 -> 1a26 -> 1076,1179,1602 r s=f1..f9,02
pixel_data_table_left:
.db 0x83 ; 1a27 r
-@@ -2382,14 +2446,17 @@
+@@ -2382,14 +2447,17 @@
lda object1080_onscreen_shape_ptr_hi - 0x10,x ; 1aa5 -> 1aa7 -> 1aaa r x=20..4f
ora [*video_line_ptr],y ; 1aa7 -> 1aaa -> 1aac r y=6d..93,02
sta [*video_line_ptr],y ; 1aaa -> 1aac -> 1aae r y=6d..93,02
lda object1080_y0 - 0x10,x ; 1ab9 -> 1abb -> 1abe r x=14..77
cmp object1080_y1 - 0x10,x ; 1abb -> 1abe -> 1ac1 r a=11..d4 x=14..77
bcs rts_1aae ; 1abe -> 1ac1 -> 1ac3 r c=0
-@@ -2453,8 +2520,14 @@
+@@ -2453,8 +2521,14 @@
cmp *draw_x1 ; 1b49 -> 1b4b -> 1b4d r a=94
bcc 8$ ; 1b4b -> 1b4d -> 1b4f,1b83 r c=0..1
lda object1080_onscreen_shape_ptr_lo - 0x10,x ; 1b4d -> 1b4f -> 1b52 r x=14..77
sta 7$ + 1 ; 1b55 -> 1b58 -> 1b5b r
ldx #0x00 ; 1b58 -> 1b5b -> 1b5d r
ldy *draw_y ; 1b5b -> 1b5d -> 1b5f r
-@@ -2463,7 +2536,17 @@
+@@ -2463,7 +2537,17 @@
lda video_line_table_hi - 0x20,y ; 1b62 -> 1b64 -> 1b67 r y=28..cf
sta *video_line_ptr + 1 ; 1b64 -> 1b67 -> 1b69 r
ldy *draw_x0 ; 1b67 -> 1b69 -> 1b6b r
7$: .dw shape_12_exhaust0 + 0x12 ; 1b6c rw
ora [*video_line_ptr],y ; 1b6b -> 1b6e -> 1b70 r y=6c..93
sta [*video_line_ptr],y ; 1b6e -> 1b70 -> 1b72 r y=6c..93
-@@ -2479,14 +2562,23 @@
+@@ -2479,14 +2563,23 @@
rts ; 1b80 -> 1b82 -> 15cd r s=fb
8$: inc object1080_onscreen_clipped - 0x10,x ; 1b3b,1b41,1b47,1b4d -> 1b83 -> 1b86 r x=14..77
lda object1080_onscreen_shape_ptr_lo - 0x10,x ; 1b83 -> 1b86 -> 1b89 r x=14..77
sta *video_line_ptr + 1 ; 1b9b -> 1b9e -> 1ba0 r
ldy *draw_x0 ; 1b9e -> 1ba0 -> 1ba2 r
10$: lda *draw_y ; 1ba0,1bbf -> 1ba2 -> 1ba4 r
-@@ -2498,11 +2590,23 @@
+@@ -2498,11 +2591,23 @@
bcc 12$ ; 1bac -> 1bae -> 1bb0,1bbb r c=0..1
cpy *clip_x1 ; 1bae -> 1bb0 -> 1bb2 r y=6c..a4
bcs 12$ ; 1bb0 -> 1bb2 -> 1bb4,1bbb r c=0..1
iny ; 1bbb -> 1bbc -> 1bbd r
cpy *draw_x1 ; 1bbc -> 1bbd -> 1bbf r y=5c..a5
bcc 10$ ; 1bbd -> 1bbf -> 1ba2,1bc1 r c=0..1
-@@ -2511,6 +2615,7 @@
+@@ -2511,6 +2616,7 @@
cpy *draw_y1 ; 1bc3 -> 1bc5 -> 1bc7 r y=12..d9
bcc 9$ ; 1bc5 -> 1bc7 -> 1b96,1bc9 r c=0..1
ldx *x_save ; 1bc7 -> 1bc9 -> 1bcb r
rts ; 1bc9 -> 1bcb -> 15cd r s=fb
erase_pixel_object:
lda #0x00 ; 1c12 -> 1bcc -> 1bce r
-@@ -2542,12 +2647,15 @@
+@@ -2542,12 +2648,15 @@
eor #0xff ; 1c03 -> 1c06 -> 1c08 r
and [*video_line_ptr],y ; 1c06 -> 1c08 -> 1c0a r y=6d..93,02
sta [*video_line_ptr],y ; 1c08 -> 1c0a -> 1c0c r y=6d..93,02
lda #0x00 ; 1c12 -> 1c14 -> 1c16 r
sta object1080_onscreen - 0x10,x ; 1c14 -> 1c16 -> 1c19 r x=14..77
lda object1080_onscreen_x0 - 0x10,x ; 1c16 -> 1c19 -> 1c1c r x=14..77
-@@ -2562,8 +2670,14 @@
+@@ -2562,8 +2671,14 @@
stx *x_save ; 1c2d -> 1c30 -> 1c32 r
bne 3$ ; 1c30 -> 1c32 -> 1c34,1c6a r z=0..1
lda object1080_onscreen_shape_ptr_lo - 0x10,x ; 1c32 -> 1c34 -> 1c37 r x=14..77
sta 2$ + 1 ; 1c3a -> 1c3d -> 1c40 r
ldx #0x00 ; 1c3d -> 1c40 -> 1c42 r
ldy *draw_y ; 1c40 -> 1c42 -> 1c44 r
-@@ -2572,7 +2686,18 @@
+@@ -2572,7 +2687,18 @@
lda video_line_table_hi - 0x20,y ; 1c47 -> 1c49 -> 1c4c r y=28..cf
sta *video_line_ptr + 1 ; 1c49 -> 1c4c -> 1c4e r
ldy *draw_x0 ; 1c4c -> 1c4e -> 1c50 r
2$: .dw shape_12_exhaust0 + 6 ; 1c51 rw
eor #0xff ; 1c50 -> 1c53 -> 1c55 r
and [*video_line_ptr],y ; 1c53 -> 1c55 -> 1c57 r y=6c..93
-@@ -2588,14 +2713,23 @@
+@@ -2588,14 +2714,23 @@
ldx *x_save ; 1c65 -> 1c67 -> 1c69 r
rts ; 1c67 -> 1c69 -> 1076,16a8 r s=f3..f9,02
3$: lda object1080_onscreen_shape_ptr_lo - 0x10,x ; 1c32 -> 1c6a -> 1c6d r x=14..77
sta *video_line_ptr + 1 ; 1c7f -> 1c82 -> 1c84 r
ldy *draw_x0 ; 1c82 -> 1c84 -> 1c86 r
5$: lda *draw_y ; 1c84,1ca5 -> 1c86 -> 1c88 r
-@@ -2607,12 +2741,25 @@
+@@ -2607,12 +2742,25 @@
bcc 7$ ; 1c90 -> 1c92 -> 1c94,1ca1 r c=0..1
cpy *clip_x1 ; 1c92 -> 1c94 -> 1c96 r y=6c..a4
bcs 7$ ; 1c94 -> 1c96 -> 1c98,1ca1 r c=0..1
iny ; 1ca1 -> 1ca2 -> 1ca3 r
cpy *draw_x1 ; 1ca2 -> 1ca3 -> 1ca5 r y=5c..a5
bcc 5$ ; 1ca3 -> 1ca5 -> 1c86,1ca7 r c=0..1
-@@ -2626,8 +2773,17 @@
+@@ -2626,8 +2774,17 @@
stx *x_save ; 1db0 -> 1cb2 -> 1cb4 r
tay ; 1cb2 -> 1cb4 -> 1cb5 r
lda shape_data_ptr_lo,y ; 1cb4 -> 1cb5 -> 1cb8 r y=16..ff
sta 3$ + 1 ; 1cbb -> 1cbe -> 1cc1 r
lda shape_width_bytes,y ; 1cbe -> 1cc1 -> 1cc4 r y=16..ff
clc ; 1cc1 -> 1cc4 -> 1cc5 r
-@@ -2636,6 +2792,11 @@
+@@ -2636,6 +2793,11 @@
lda *draw_x0 ; 1cc7 -> 1cc9 -> 1ccb r
lsr a ; 1cc9 -> 1ccb -> 1ccc r
bcc 0$ ; 1ccb -> 1ccc -> 1cce,1cd4 r c=0..1
lda *draw_misc_mask ; 1ccc -> 1cce -> 1cd0 r
eor *draw_misc_mask_xor ; 1cce -> 1cd0 -> 1cd2 r
sta *draw_misc_mask ; 1cd0 -> 1cd2 -> 1cd4 r
-@@ -2651,6 +2812,10 @@
+@@ -2651,6 +2813,10 @@
lda video_line_table_hi,y ; 1ce5 -> 1ce7 -> 1cea r y=00..bc
adc #0x00 ; 1ce7 -> 1cea -> 1cec r c=0..1 d=0
sta *video_line_ptr + 1 ; 1cea -> 1cec -> 1cee r
lda *draw_misc_mask ; 1cec -> 1cee -> 1cf0 r
sta *draw_misc_mask_temp ; 1cee -> 1cf0 -> 1cf2 r
ldy *draw_x0 ; 1cf0 -> 1cf2 -> 1cf4 r
-@@ -2659,13 +2824,30 @@
+@@ -2659,13 +2825,30 @@
bcs 4$ ; 1cf6 -> 1cf8 -> 1cfa r c=0
cpy #0x28 ; 1cf8 -> 1cfa -> 1cfc r y=00..2d
bcs 4$ ; 1cfa -> 1cfc -> 1cfe,1d05 r c=0..1
inx ; 1d09 -> 1d0b -> 1d0c r
iny ; 1d0b -> 1d0c -> 1d0d r
cpy *draw_x1 ; 1d0c -> 1d0d -> 1d0f r y=01..2e
-@@ -2686,7 +2868,7 @@
+@@ -2686,7 +2869,7 @@
asl a ; 1d23 -> 1d24 -> 1d25 r
sta *draw_misc_ptr ; 1d24 -> 1d25 -> 1d27 r
lda #0x00 ; 1d25 -> 1d27 -> 1d29 r
sta *draw_misc_ptr + 1 ; 1d29 -> 1d2b -> 1d2d r
lda *half_dimension ; 1d2b -> 1d2d -> 1d2f r
lsr a ; 1d2d -> 1d2f -> 1d30 r
-@@ -2695,6 +2877,12 @@
+@@ -2695,6 +2878,12 @@
lsr a ; 1d31 -> 1d32 -> 1d33 r
lsr a ; 1d32 -> 1d33 -> 1d34 r
tay ; 1d33 -> 1d34 -> 1d35 r
lda draw_misc_mask_table,y ; 1d34 -> 1d35 -> 1d38 r y=00..06
sta *draw_misc_mask ; 1d35 -> 1d38 -> 1d3a r
lda draw_misc_mask_xor_table,y ; 1d38 -> 1d3a -> 1d3d r y=00..06
-@@ -2771,6 +2959,62 @@
+@@ -2771,6 +2960,62 @@
ldy *draw_misc_y_save ; 1d1b -> 1db3 -> 1db5 r
rts_1db5:
rts ; 1da1,1db3 -> 1db5 -> 1076,1d61,1d7d,1d82,1d87 r s=ee..f7
draw_misc_mask_table:
.db 0xff ; 1db6 r
.db 0x00 ; 1db7 r
-@@ -2781,72 +3025,18 @@
+@@ -2781,72 +3026,18 @@
.db 0xd5 ; 1dbc r
.db 0xff ; 1dbd r
draw_misc_mask_xor_table:
sub_1e00:
jmp loc_1e2a ; 15dc -> 1e00 -> 1e2a r
test_player_fire:
-@@ -3005,77 +3195,8 @@
+@@ -3005,77 +3196,8 @@
adc #0x01 ; 1f32 -> 1f33 -> 1f35 r c=0 d=0
sta object1080_velocity_x_hi + 0x50 ; 1f33 -> 1f35 -> 1f38 r
rts ; 1f35 -> 1f38 -> 15df r s=f9
barr_1f80:
.db 0x43 ; 1f80 r
.db 0x02 ; 1f81 r
-@@ -3212,9 +3333,20 @@
+@@ -3212,9 +3334,20 @@
.db 0x00 ; 1ffd r
.db 0x00 ; 1ffe r
.db 0x00 ; 1fff r
shape_data_ptr_lo:
.db <shape_23_bomb3 + 0x28 ; 4000 r
.db <shape_23_bomb3 + 0x28 ; 4001 r
-@@ -4757,6 +4889,9 @@
+@@ -4757,6 +4890,9 @@
.db 0x01 ; 45fd r
.db 0x01 ; 45fe r
.db 0x04 ; 45ff r
draw_misc_table:
.db 0x01 ; 4600 r
.db 0x07 ; 4601 r
-@@ -9432,6 +9567,15 @@
+@@ -9432,6 +9568,15 @@
.dw 0x0000 ; 5bfa r
.dw 0x0000 ; 5bfc r
.dw 0x0000 ; 5bfe r
shape_20_bomb0:
.db 0x5c ; 5c00 r
.db 0x02 ; 5c01 r
-@@ -21852,510 +21996,12 @@
+@@ -21852,510 +21997,12 @@
.db 0xe0 ; 8c05 r
.db 0x83 ; 8c06 r
.db 0x9e ; 8c07 r
microcode_table_5560_data_8e00:
.db 0x30 ; 8e00 r
.db 0x0f ; 8e01
-@@ -26926,33 +26572,156 @@
+@@ -26926,33 +26573,156 @@
.db 0x7c ; 9dea
.db 0x98 ; 9deb
.db 0x00 ; 9dec
- .area udata2
+.if DHGR
-+ .ds 0xf100 - 0xd000 - (. - data1_start)
++ .ds 0xf000 - 0xd000 - (. - data1_start)
+barr_1f80:
+ .db 0x43 ; 1f80 r
+ .db 0x02 ; 1f81 r
+; put the address here so the DHGR build can use the ordinary Makefile
+; .area udata2
+.if DHGR
-+ .ds 0xf200 - 0xd000 - (. - data1_start)
++ .ds 0xf100 - 0xd000 - (. - data1_start)
+.else
+ .ds 0xa800 - 0x4000 - (. - data0_start)
+.endif
# file was constructed from a memory dump after copy protected loader ran
# after loading at 0x0300:
-# [0x0300, 0x0a00) is not used except for a jump to crack loader at 0x3f00
+# [0x0300, 0x0303) is jump to crack loader
+# [0x0303, 0x0a00) is junk
# [0x0a00, 0x2000) is program
# [0x2000, 0x4000) is hi-res screen 0 which is reused by the crack loader:
# [0x2000, 0x27ed) is end of program which is copied to 0x9600
# [0x27ed, 0x3200) is junk copied after end of program at 0x9ded
# [0x3200, 0x3c00) is junk copied to end of memory at 0xb600
# [0x3c00, 0x3f00) is junk copied to start of memory at 0x0000, except:
-# [0x3c20, 0x3c22) is vec_start (duplicated in crack loader, kept anyway)
+# [0x3c20, 0x3c22) is vec_start (duplicated in crack loader, not used)
# [0x3c22, 0x3c24) is vec_init_game
# [0x3c24, 0x3c26) is vec_start_game
# [0x3c28, 0x3c2a) is vec_calculate_object_shape
# [0x3c4e, 0x3c50) is vec_draw_misc_from_table
# [0x3e00, 0x3e02) is vec_restart
-# [0x3f00, 0x4000) is junk except the crack loader at [0x3f00, 0x3f79)
+# [0x3f00, 0x3f79) is crack loader
+# [0x3f79, 0x4000) is junk
# [0x4000, 0x8c08) is program
# [0x8c08, 0x8e00) is junk which I think is from the shape editor he used
-# [0x8e00, 0x9580) is program
-# [0x9580, 0x9600) is padding to a page boundary
+# [0x8e00, 0x9600) is program
[0x0022, 0x0024) # vec_init_game
[0x0024, 0x0026) # vec_start_game
[0x0028, 0x002a) # vec_calculate_object_shape
[0x004e, 0x0050) # vec_draw_misc_from_table
[0x0200, 0x0202) # vec_restart
[0x0a00, 0x17f5)
-[0x1803, 0x1dc9)
-[0x1e03, 0x1f3c)
-[0x1f83, 0x2003)
+[0x1800, 0x1dc6)
+[0x1e00, 0x1f39)
+[0x1f80, 0x2000)
[0x4000, 0x8c08)
[0x8e00, 0x9ded)