ds: move things off of $9000 so everything fits

BLURGH lots of hard-coded $9000s everywhere
This commit is contained in:
Vince Weaver 2019-11-07 11:44:05 -05:00
parent 226798be95
commit 3ef490be2d
15 changed files with 250 additions and 199 deletions

View File

@ -7,8 +7,8 @@ appleII_intro:
;===================
; init screen
jsr TEXT
jsr HOME
; jsr TEXT
; jsr HOME
bit KEYRESET
;===================

View File

@ -2,7 +2,7 @@
; Autogenerates code that does interleaved Page0/Page1 lores mode
; but leaving room for 14 pixels/line of per-scanline color
UPDATE_START = $9000
UPDATE_START = $9800
DEFAULT_COLOR = $0

View File

@ -2,9 +2,9 @@
; Autogenerates code for Type2 (escape)
; First 9 (?) lines = text mode
;
;
UPDATE2_START = $9000
UPDATE2_START = $9800
;DEFAULT_COLOR = $0
@ -62,50 +62,50 @@ setup_update_type2:
; add call to TEXT
lda #$2c ; bit C051 ; 4
sta $9003
sta UPDATE2_START+3 ; $9003
lda #$51
sta $9004
sta UPDATE2_START+4 ; $9004
lda #$c0
sta $9005
sta UPDATE2_START+5 ; $9005
lda #$A5 ; lda ZERO ; 3
sta $9006
sta UPDATE2_START+6 ; $9006
lda #$FA
sta $9007
sta UPDATE2_START+7 ; $9007
lda #$A2 ; ldx, 1 ; 3
sta $9008
sta UPDATE2_START+8 ; $9008
lda #$01
sta $9009
sta UPDATE2_START+9 ; $9009
; set first 9 lines to PAGE0
lda #$54
sta $9030
sta $908E
sta $90EC
sta $914A
sta UPDATE2_START+$30 ; $9030
sta UPDATE2_START+$8E ; $908E
sta UPDATE2_START+$EC ; $90EC
sta UPDATE2_START+$14A ; $914A
; add call to GRAPHICS
; line 9 (91a7)
lda #$2c ; bit C051 ; 4
sta $91aa
sta UPDATE2_START+$1aa ; $91aa
lda #$50
sta $91ab
sta UPDATE2_START+$1ab ; $91ab
lda #$c0
sta $91ac
sta UPDATE2_START+$1ac ; $91ac
lda #$A5 ; lda ZERO ; 3
sta $91ad
sta UPDATE2_START+$1ad ; $91ad
lda #$FA
sta $91ae
sta UPDATE2_START+$1ae ; $91ae
lda #$A2 ; ldx, 1 ; 3
sta $91af
sta UPDATE2_START+$1af ; $91af
lda #$01
sta $91b0
sta UPDATE2_START+$1b0 ; $91b0
;====================
;====================

View File

@ -8,8 +8,8 @@ credits:
;===================
; init screen
jsr TEXT
jsr HOME
; jsr TEXT
; jsr HOME
bit KEYRESET
;===================
@ -37,24 +37,24 @@ credits:
; 0 34 78 12 5 4 78 12 56 9
; 11 1 2 22 33 33 3
lda #$54
sta $9001+(49*3)
sta $9001+(49*7)
sta $9001+(49*11)
sta $9001+(49*15)
sta $9001+(49*27)
sta $9001+(49*31)
sta $9001+(49*35)
sta $9001+(49*39)
sta UPDATE_START+1+(49*3)
sta UPDATE_START+1+(49*7)
sta UPDATE_START+1+(49*11)
sta UPDATE_START+1+(49*15)
sta UPDATE_START+1+(49*27)
sta UPDATE_START+1+(49*31)
sta UPDATE_START+1+(49*35)
sta UPDATE_START+1+(49*39)
lda #$55
sta $9001+(49*0)
sta $9001+(49*4)
sta $9001+(49*8)
sta $9001+(49*12)
sta $9001+(49*24)
sta $9001+(49*28)
sta $9001+(49*32)
sta $9001+(49*36)
sta UPDATE_START+1+(49*0)
sta UPDATE_START+1+(49*4)
sta UPDATE_START+1+(49*8)
sta UPDATE_START+1+(49*12)
sta UPDATE_START+1+(49*24)
sta UPDATE_START+1+(49*28)
sta UPDATE_START+1+(49*32)
sta UPDATE_START+1+(49*36)
;=============================
@ -158,7 +158,7 @@ tloopB: dex ; 2
credits_loop:
jsr $9000
jsr $9800
;======================================================
; We have 4550 cycles in the vblank, use them wisely

View File

@ -18,14 +18,21 @@ demosplash2019:
jsr clear_ay_both
jsr pt3_init_song
;====================================
; turn on language card
; enable read/write, use 1st 4k bank
; lda $C08B
; lda $C08B
;====================================
; generate 4 patterns worth of music
; at address $9000
; at address $D000-$FC00
; page offset
lda #0
sta FRAME_PAGE
; offset within page
lda #0
sta FRAME_OFFSET
@ -35,27 +42,64 @@ frame_decode_loop:
jsr pt3_write_frame
inc FRAME_OFFSET
lda FRAME_OFFSET
cmp #59 ; FIXME: make this depend on song
; hardcoding for 59 for our song
bne frame_decode_loop
inc r0_wrsmc+2 ; 6
inc r1_wrsmc+2 ; 6
inc r2_wrsmc+2 ; 6
inc r4_wrsmc+2 ; 6
inc r13_wrsmc+2 ; 6
inc r6_wrsmc+2 ; 6
inc r7_wrsmc+2 ; 6
inc r8_wrsmc+2 ; 6
inc r9_wrsmc+2 ; 6
inc r11_wrsmc+2 ; 6
inc r12_wrsmc+2 ; 6
; add 11 to all of the output pointers
.if 0
clc
lda r0_wrsmc+2
adc #$b
sta r0_wrsmc+2
lda r1_wrsmc+2
adc #$b
sta r1_wrsmc+2
lda r2_wrsmc+2
adc #$b
sta r2_wrsmc+2
lda r4_wrsmc+2
adc #$b
sta r4_wrsmc+2
lda r13_wrsmc+2
adc #$b
sta r13_wrsmc+2
lda r6_wrsmc+2
adc #$b
sta r6_wrsmc+2
lda r7_wrsmc+2
adc #$b
sta r7_wrsmc+2
lda r8_wrsmc+2
adc #$b
sta r8_wrsmc+2
lda r9_wrsmc+2
adc #$b
sta r9_wrsmc+2
lda r11_wrsmc+2
adc #$b
sta r11_wrsmc+2
lda r12_wrsmc+2
adc #$b
sta r12_wrsmc+2
.endif
inc FRAME_PAGE
lda FRAME_PAGE
cmp #3
cmp #4
bne frame_decode_loop
lda #0
@ -113,7 +157,8 @@ frame_decode_loop:
; start irq music
;========================
cli ; enable interrupts
nop
; cli ; enable interrupts
;===========================
; opening book scene

View File

@ -9,8 +9,8 @@ escape:
;===================
; init screen
jsr TEXT
jsr HOME
; jsr TEXT
; jsr HOME
bit KEYRESET
;===================
@ -173,7 +173,7 @@ loopRR: dex ; 2
sprites_display_loop:
jsr $9000
jsr $9800
;.include "sprites_screen.s"
;======================================================
@ -1540,8 +1540,6 @@ escape_keys:
.byte ' '+$80,30
.byte 27+$80,2
escape_keys_after:
.assert >escape_keys_before = >escape_keys_after, error, "keys crosses page"

View File

@ -6,6 +6,8 @@
//#define START 40
#define START 48
#define OFFSET 0x9800
int main(int argc, char **argv) {
int i;
@ -15,7 +17,7 @@ int main(int argc, char **argv) {
for(i=0;i<NUMBER;i++) {
if (i%8==0) printf(".byte\t");
//printf(">(smc%3d+1)",i+START);
printf(">($%4X)",0x9000+(i+START)*49+4);
printf(">($%4X)",OFFSET+(i+START)*49+4);
if (i%8!=7) printf(",");
else printf("\n");
}
@ -23,7 +25,7 @@ int main(int argc, char **argv) {
for(i=0;i<NUMBER;i++) {
if (i%8==0) printf(".byte\t");
//printf("<(smc%3d+1)",i+START);
printf("<($%4X)",0x9000+(i+START)*49+4);
printf("<($%4X)",OFFSET+(i+START)*49+4);
if (i%8!=7) printf(",");
else printf("\n");
}

View File

@ -6,6 +6,8 @@
//#define START 40
//#define START 48
#define OFFSET 0x9800
int main(int argc, char **argv) {
int i;
@ -15,7 +17,7 @@ int main(int argc, char **argv) {
for(i=0;i<NUMBER;i++) {
if (i%8==0) printf(".byte\t");
//printf(">(smc%3d+1)",i+START);
printf(">($%4X)",0x9000+(i+START)*47+4);
printf(">($%4X)",OFFSET+(i+START)*47+4);
if (i%8!=7) printf(",");
else printf("\n");
}
@ -23,7 +25,7 @@ int main(int argc, char **argv) {
for(i=0;i<NUMBER;i++) {
if (i%8==0) printf(".byte\t");
//printf("<(smc%3d+1)",i+START);
printf("<($%4X)",0x9000+(i+START)*47+4);
printf("<($%4X)",OFFSET+(i+START)*47+4);
if (i%8!=7) printf(",");
else printf("\n");
}

View File

@ -23,28 +23,32 @@ PADDLE_BUTTON0 = $C061
PADDL0 = $C064
PTRIG = $C070
; Language card
; C080
; C08B
;; BASIC ROUTINES
NORMAL = $F273
;NORMAL = $F273
;; MONITOR ROUTINES
HLINE = $F819 ;; HLINE Y,$2C at A
VLINE = $F828 ;; VLINE A,$2D at Y
CLRSCR = $F832 ;; Clear low-res screen
CLRTOP = $F836 ;; clear only top of low-res screen
SETCOL = $F864 ;; COLOR=A
TEXT = $FB36
TABV = $FB5B ;; VTAB to A
BELL = $FBDD ;; ring the bell
BASCALC = $FBC1 ;;
VTAB = $FC22 ;; VTAB to CV
HOME = $FC58 ;; Clear the text screen
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
SETINV = $FE80 ;; INVERSE
SETNORM = $FE84 ;; NORMAL
COUT = $FDED ;; output A to screen
COUT1 = $FDF0 ;; output A to screen
;HLINE = $F819 ;; HLINE Y,$2C at A
;VLINE = $F828 ;; VLINE A,$2D at Y
;CLRSCR = $F832 ;; Clear low-res screen
;CLRTOP = $F836 ;; clear only top of low-res screen
;SETCOL = $F864 ;; COLOR=A
;TEXT = $FB36
;TABV = $FB5B ;; VTAB to A
;BELL = $FBDD ;; ring the bell
;BASCALC= $FBC1 ;;
;VTAB = $FC22 ;; VTAB to CV
;HOME = $FC58 ;; Clear the text screen
;WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
;SETINV = $FE80 ;; INVERSE
;SETNORM= $FE84 ;; NORMAL
;COUT = $FDED ;; output A to screen
;COUT1 = $FDF0 ;; output A to screen

View File

@ -8,8 +8,8 @@ missing_intro:
;===================
; init screen
jsr TEXT
jsr HOME
; jsr TEXT
; jsr HOME
bit KEYRESET
;===================
@ -135,7 +135,7 @@ mloopB: dex ; 2
missing_display_loop:
jsr $9000 ; update_type1
jsr $9800 ; update_type1
;.include "missing_screen_update.s"
;======================================================

View File

@ -1,34 +1,34 @@
y_lookup_h:
.byte >($9934),>($9965),>($9996),>($99C7),>($99F8),>($9A29),>($9A5A),>($9A8B)
.byte >($9ABC),>($9AED),>($9B1E),>($9B4F),>($9B80),>($9BB1),>($9BE2),>($9C13)
.byte >($9C44),>($9C75),>($9CA6),>($9CD7),>($9D08),>($9D39),>($9D6A),>($9D9B)
.byte >($9DCC),>($9DFD),>($9E2E),>($9E5F),>($9E90),>($9EC1),>($9EF2),>($9F23)
.byte >($9F54),>($9F85),>($9FB6),>($9FE7),>($A018),>($A049),>($A07A),>($A0AB)
.byte >($A0DC),>($A10D),>($A13E),>($A16F),>($A1A0),>($A1D1),>($A202),>($A233)
.byte >($A264),>($A295),>($A2C6),>($A2F7),>($A328),>($A359),>($A38A),>($A3BB)
.byte >($A3EC),>($A41D),>($A44E),>($A47F),>($A4B0),>($A4E1),>($A512),>($A543)
.byte >($A574),>($A5A5),>($A5D6),>($A607),>($A638),>($A669),>($A69A),>($A6CB)
.byte >($A6FC),>($A72D),>($A75E),>($A78F),>($A7C0),>($A7F1),>($A822),>($A853)
.byte >($A884),>($A8B5),>($A8E6),>($A917),>($A948),>($A979),>($A9AA),>($A9DB)
.byte >($AA0C),>($AA3D),>($AA6E),>($AA9F),>($AAD0),>($AB01),>($AB32),>($AB63)
.byte >($AB94),>($ABC5),>($ABF6),>($AC27),>($AC58),>($AC89),>($ACBA),>($ACEB)
.byte >($AD1C),>($AD4D),>($AD7E),>($ADAF),>($ADE0),>($AE11),>($AE42),>($AE73)
.byte >($AEA4),>($AED5),>($AF06),>($AF37),>($AF68),>($AF99),>($AFCA),>($AFFB)
.byte >($B02C),>($B05D),>($B08E),>($B0BF),>($B0F0),>($B121),>($B152),>($B183)
.byte >($A134),>($A165),>($A196),>($A1C7),>($A1F8),>($A229),>($A25A),>($A28B)
.byte >($A2BC),>($A2ED),>($A31E),>($A34F),>($A380),>($A3B1),>($A3E2),>($A413)
.byte >($A444),>($A475),>($A4A6),>($A4D7),>($A508),>($A539),>($A56A),>($A59B)
.byte >($A5CC),>($A5FD),>($A62E),>($A65F),>($A690),>($A6C1),>($A6F2),>($A723)
.byte >($A754),>($A785),>($A7B6),>($A7E7),>($A818),>($A849),>($A87A),>($A8AB)
.byte >($A8DC),>($A90D),>($A93E),>($A96F),>($A9A0),>($A9D1),>($AA02),>($AA33)
.byte >($AA64),>($AA95),>($AAC6),>($AAF7),>($AB28),>($AB59),>($AB8A),>($ABBB)
.byte >($ABEC),>($AC1D),>($AC4E),>($AC7F),>($ACB0),>($ACE1),>($AD12),>($AD43)
.byte >($AD74),>($ADA5),>($ADD6),>($AE07),>($AE38),>($AE69),>($AE9A),>($AECB)
.byte >($AEFC),>($AF2D),>($AF5E),>($AF8F),>($AFC0),>($AFF1),>($B022),>($B053)
.byte >($B084),>($B0B5),>($B0E6),>($B117),>($B148),>($B179),>($B1AA),>($B1DB)
.byte >($B20C),>($B23D),>($B26E),>($B29F),>($B2D0),>($B301),>($B332),>($B363)
.byte >($B394),>($B3C5),>($B3F6),>($B427),>($B458),>($B489),>($B4BA),>($B4EB)
.byte >($B51C),>($B54D),>($B57E),>($B5AF),>($B5E0),>($B611),>($B642),>($B673)
.byte >($B6A4),>($B6D5),>($B706),>($B737),>($B768),>($B799),>($B7CA),>($B7FB)
.byte >($B82C),>($B85D),>($B88E),>($B8BF),>($B8F0),>($B921),>($B952),>($B983)
y_lookup_l:
.byte <($9934),<($9965),<($9996),<($99C7),<($99F8),<($9A29),<($9A5A),<($9A8B)
.byte <($9ABC),<($9AED),<($9B1E),<($9B4F),<($9B80),<($9BB1),<($9BE2),<($9C13)
.byte <($9C44),<($9C75),<($9CA6),<($9CD7),<($9D08),<($9D39),<($9D6A),<($9D9B)
.byte <($9DCC),<($9DFD),<($9E2E),<($9E5F),<($9E90),<($9EC1),<($9EF2),<($9F23)
.byte <($9F54),<($9F85),<($9FB6),<($9FE7),<($A018),<($A049),<($A07A),<($A0AB)
.byte <($A0DC),<($A10D),<($A13E),<($A16F),<($A1A0),<($A1D1),<($A202),<($A233)
.byte <($A264),<($A295),<($A2C6),<($A2F7),<($A328),<($A359),<($A38A),<($A3BB)
.byte <($A3EC),<($A41D),<($A44E),<($A47F),<($A4B0),<($A4E1),<($A512),<($A543)
.byte <($A574),<($A5A5),<($A5D6),<($A607),<($A638),<($A669),<($A69A),<($A6CB)
.byte <($A6FC),<($A72D),<($A75E),<($A78F),<($A7C0),<($A7F1),<($A822),<($A853)
.byte <($A884),<($A8B5),<($A8E6),<($A917),<($A948),<($A979),<($A9AA),<($A9DB)
.byte <($AA0C),<($AA3D),<($AA6E),<($AA9F),<($AAD0),<($AB01),<($AB32),<($AB63)
.byte <($AB94),<($ABC5),<($ABF6),<($AC27),<($AC58),<($AC89),<($ACBA),<($ACEB)
.byte <($AD1C),<($AD4D),<($AD7E),<($ADAF),<($ADE0),<($AE11),<($AE42),<($AE73)
.byte <($AEA4),<($AED5),<($AF06),<($AF37),<($AF68),<($AF99),<($AFCA),<($AFFB)
.byte <($B02C),<($B05D),<($B08E),<($B0BF),<($B0F0),<($B121),<($B152),<($B183)
.byte <($A134),<($A165),<($A196),<($A1C7),<($A1F8),<($A229),<($A25A),<($A28B)
.byte <($A2BC),<($A2ED),<($A31E),<($A34F),<($A380),<($A3B1),<($A3E2),<($A413)
.byte <($A444),<($A475),<($A4A6),<($A4D7),<($A508),<($A539),<($A56A),<($A59B)
.byte <($A5CC),<($A5FD),<($A62E),<($A65F),<($A690),<($A6C1),<($A6F2),<($A723)
.byte <($A754),<($A785),<($A7B6),<($A7E7),<($A818),<($A849),<($A87A),<($A8AB)
.byte <($A8DC),<($A90D),<($A93E),<($A96F),<($A9A0),<($A9D1),<($AA02),<($AA33)
.byte <($AA64),<($AA95),<($AAC6),<($AAF7),<($AB28),<($AB59),<($AB8A),<($ABBB)
.byte <($ABEC),<($AC1D),<($AC4E),<($AC7F),<($ACB0),<($ACE1),<($AD12),<($AD43)
.byte <($AD74),<($ADA5),<($ADD6),<($AE07),<($AE38),<($AE69),<($AE9A),<($AECB)
.byte <($AEFC),<($AF2D),<($AF5E),<($AF8F),<($AFC0),<($AFF1),<($B022),<($B053)
.byte <($B084),<($B0B5),<($B0E6),<($B117),<($B148),<($B179),<($B1AA),<($B1DB)
.byte <($B20C),<($B23D),<($B26E),<($B29F),<($B2D0),<($B301),<($B332),<($B363)
.byte <($B394),<($B3C5),<($B3F6),<($B427),<($B458),<($B489),<($B4BA),<($B4EB)
.byte <($B51C),<($B54D),<($B57E),<($B5AF),<($B5E0),<($B611),<($B642),<($B673)
.byte <($B6A4),<($B6D5),<($B706),<($B737),<($B768),<($B799),<($B7CA),<($B7FB)
.byte <($B82C),<($B85D),<($B88E),<($B8BF),<($B8F0),<($B921),<($B952),<($B983)

View File

@ -1,34 +1,34 @@
y_lookup2_h:
.byte >($95E4),>($9613),>($9642),>($9671),>($96A0),>($96CF),>($96FE),>($972D)
.byte >($975C),>($978B),>($97BA),>($97E9),>($9818),>($9847),>($9876),>($98A5)
.byte >($98D4),>($9903),>($9932),>($9961),>($9990),>($99BF),>($99EE),>($9A1D)
.byte >($9A4C),>($9A7B),>($9AAA),>($9AD9),>($9B08),>($9B37),>($9B66),>($9B95)
.byte >($9BC4),>($9BF3),>($9C22),>($9C51),>($9C80),>($9CAF),>($9CDE),>($9D0D)
.byte >($9D3C),>($9D6B),>($9D9A),>($9DC9),>($9DF8),>($9E27),>($9E56),>($9E85)
.byte >($9EB4),>($9EE3),>($9F12),>($9F41),>($9F70),>($9F9F),>($9FCE),>($9FFD)
.byte >($A02C),>($A05B),>($A08A),>($A0B9),>($A0E8),>($A117),>($A146),>($A175)
.byte >($A1A4),>($A1D3),>($A202),>($A231),>($A260),>($A28F),>($A2BE),>($A2ED)
.byte >($A31C),>($A34B),>($A37A),>($A3A9),>($A3D8),>($A407),>($A436),>($A465)
.byte >($A494),>($A4C3),>($A4F2),>($A521),>($A550),>($A57F),>($A5AE),>($A5DD)
.byte >($A60C),>($A63B),>($A66A),>($A699),>($A6C8),>($A6F7),>($A726),>($A755)
.byte >($A784),>($A7B3),>($A7E2),>($A811),>($A840),>($A86F),>($A89E),>($A8CD)
.byte >($A8FC),>($A92B),>($A95A),>($A989),>($A9B8),>($A9E7),>($AA16),>($AA45)
.byte >($AA74),>($AAA3),>($AAD2),>($AB01),>($AB30),>($AB5F),>($AB8E),>($ABBD)
.byte >($ABEC),>($AC1B),>($AC4A),>($AC79),>($ACA8),>($ACD7),>($AD06),>($AD35)
.byte >($9DE4),>($9E13),>($9E42),>($9E71),>($9EA0),>($9ECF),>($9EFE),>($9F2D)
.byte >($9F5C),>($9F8B),>($9FBA),>($9FE9),>($A018),>($A047),>($A076),>($A0A5)
.byte >($A0D4),>($A103),>($A132),>($A161),>($A190),>($A1BF),>($A1EE),>($A21D)
.byte >($A24C),>($A27B),>($A2AA),>($A2D9),>($A308),>($A337),>($A366),>($A395)
.byte >($A3C4),>($A3F3),>($A422),>($A451),>($A480),>($A4AF),>($A4DE),>($A50D)
.byte >($A53C),>($A56B),>($A59A),>($A5C9),>($A5F8),>($A627),>($A656),>($A685)
.byte >($A6B4),>($A6E3),>($A712),>($A741),>($A770),>($A79F),>($A7CE),>($A7FD)
.byte >($A82C),>($A85B),>($A88A),>($A8B9),>($A8E8),>($A917),>($A946),>($A975)
.byte >($A9A4),>($A9D3),>($AA02),>($AA31),>($AA60),>($AA8F),>($AABE),>($AAED)
.byte >($AB1C),>($AB4B),>($AB7A),>($ABA9),>($ABD8),>($AC07),>($AC36),>($AC65)
.byte >($AC94),>($ACC3),>($ACF2),>($AD21),>($AD50),>($AD7F),>($ADAE),>($ADDD)
.byte >($AE0C),>($AE3B),>($AE6A),>($AE99),>($AEC8),>($AEF7),>($AF26),>($AF55)
.byte >($AF84),>($AFB3),>($AFE2),>($B011),>($B040),>($B06F),>($B09E),>($B0CD)
.byte >($B0FC),>($B12B),>($B15A),>($B189),>($B1B8),>($B1E7),>($B216),>($B245)
.byte >($B274),>($B2A3),>($B2D2),>($B301),>($B330),>($B35F),>($B38E),>($B3BD)
.byte >($B3EC),>($B41B),>($B44A),>($B479),>($B4A8),>($B4D7),>($B506),>($B535)
y_lookup2_l:
.byte <($95E4),<($9613),<($9642),<($9671),<($96A0),<($96CF),<($96FE),<($972D)
.byte <($975C),<($978B),<($97BA),<($97E9),<($9818),<($9847),<($9876),<($98A5)
.byte <($98D4),<($9903),<($9932),<($9961),<($9990),<($99BF),<($99EE),<($9A1D)
.byte <($9A4C),<($9A7B),<($9AAA),<($9AD9),<($9B08),<($9B37),<($9B66),<($9B95)
.byte <($9BC4),<($9BF3),<($9C22),<($9C51),<($9C80),<($9CAF),<($9CDE),<($9D0D)
.byte <($9D3C),<($9D6B),<($9D9A),<($9DC9),<($9DF8),<($9E27),<($9E56),<($9E85)
.byte <($9EB4),<($9EE3),<($9F12),<($9F41),<($9F70),<($9F9F),<($9FCE),<($9FFD)
.byte <($A02C),<($A05B),<($A08A),<($A0B9),<($A0E8),<($A117),<($A146),<($A175)
.byte <($A1A4),<($A1D3),<($A202),<($A231),<($A260),<($A28F),<($A2BE),<($A2ED)
.byte <($A31C),<($A34B),<($A37A),<($A3A9),<($A3D8),<($A407),<($A436),<($A465)
.byte <($A494),<($A4C3),<($A4F2),<($A521),<($A550),<($A57F),<($A5AE),<($A5DD)
.byte <($A60C),<($A63B),<($A66A),<($A699),<($A6C8),<($A6F7),<($A726),<($A755)
.byte <($A784),<($A7B3),<($A7E2),<($A811),<($A840),<($A86F),<($A89E),<($A8CD)
.byte <($A8FC),<($A92B),<($A95A),<($A989),<($A9B8),<($A9E7),<($AA16),<($AA45)
.byte <($AA74),<($AAA3),<($AAD2),<($AB01),<($AB30),<($AB5F),<($AB8E),<($ABBD)
.byte <($ABEC),<($AC1B),<($AC4A),<($AC79),<($ACA8),<($ACD7),<($AD06),<($AD35)
.byte <($9DE4),<($9E13),<($9E42),<($9E71),<($9EA0),<($9ECF),<($9EFE),<($9F2D)
.byte <($9F5C),<($9F8B),<($9FBA),<($9FE9),<($A018),<($A047),<($A076),<($A0A5)
.byte <($A0D4),<($A103),<($A132),<($A161),<($A190),<($A1BF),<($A1EE),<($A21D)
.byte <($A24C),<($A27B),<($A2AA),<($A2D9),<($A308),<($A337),<($A366),<($A395)
.byte <($A3C4),<($A3F3),<($A422),<($A451),<($A480),<($A4AF),<($A4DE),<($A50D)
.byte <($A53C),<($A56B),<($A59A),<($A5C9),<($A5F8),<($A627),<($A656),<($A685)
.byte <($A6B4),<($A6E3),<($A712),<($A741),<($A770),<($A79F),<($A7CE),<($A7FD)
.byte <($A82C),<($A85B),<($A88A),<($A8B9),<($A8E8),<($A917),<($A946),<($A975)
.byte <($A9A4),<($A9D3),<($AA02),<($AA31),<($AA60),<($AA8F),<($AABE),<($AAED)
.byte <($AB1C),<($AB4B),<($AB7A),<($ABA9),<($ABD8),<($AC07),<($AC36),<($AC65)
.byte <($AC94),<($ACC3),<($ACF2),<($AD21),<($AD50),<($AD7F),<($ADAE),<($ADDD)
.byte <($AE0C),<($AE3B),<($AE6A),<($AE99),<($AEC8),<($AEF7),<($AF26),<($AF55)
.byte <($AF84),<($AFB3),<($AFE2),<($B011),<($B040),<($B06F),<($B09E),<($B0CD)
.byte <($B0FC),<($B12B),<($B15A),<($B189),<($B1B8),<($B1E7),<($B216),<($B245)
.byte <($B274),<($B2A3),<($B2D2),<($B301),<($B330),<($B35F),<($B38E),<($B3BD)
.byte <($B3EC),<($B41B),<($B44A),<($B479),<($B4A8),<($B4D7),<($B506),<($B535)

View File

@ -1,17 +1,17 @@
; ZZ points to offset from pointer
;0 $9000,$9100,$9200 = A Low (reg0)
;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
;2 $9600,$9700,$9800 = B Low (reg2)
;3 $9900,$9A00,$9B00 = C Low (reg4)
;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
;6 $A200,$A300,$A400 = Enable (r7)
;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
;9 $AB00,$AC00,$AD00 = ENV low (r11)
;a $AE00,$AF00,$B000 = ENV high (r12)
;D000 ;0 $9000,$9100,$9200 = A Low (reg0)
;D100 ;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
;D200 ;2 $9600,$9700,$9800 = B Low (reg2)
;D300 ;3 $9900,$9A00,$9B00 = C Low (reg4)
;D400 ;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
;D500 ;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
;D600 ;6 $A200,$A300,$A400 = Enable (r7)
;D700 ;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
;D800 ;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
;D900 ;9 $AB00,$AC00,$AD00 = ENV low (r11)
;DA00 ;a $AE00,$AF00,$B000 = ENV high (r12)
; 3+ 72 + 72 + 83 + 74 + 72 + 77 + 19 + 70 + 74 + 72 +
; 77 + 18 + 82 + 85 + 72 + 72 + 8 + 72 + 6 = 1180
@ -23,7 +23,7 @@ play_frame_compressed:
; Register 0: A fine
ldx #0 ; 2
r0_smc:
lda $9000,Y ; 4+
lda $D000,Y ; 4+
jsr play_mb_write ; 6+60
;======
; 72
@ -31,7 +31,7 @@ r0_smc:
; Register 2: B fine
ldx #2 ; 2
r2_smc:
lda $9600,Y ; 4+
lda $9200,Y ; 4+
jsr play_mb_write ; 6+60
;======
; 72
@ -39,7 +39,7 @@ r2_smc:
; Register 1: A coarse
ldx #1 ; 2
r1_smc:
lda $9300,Y ; 4+
lda $9100,Y ; 4+
pha ; 3
lsr ; 2
lsr ; 2
@ -59,7 +59,7 @@ r1_smc:
; Register 4: C fine
ldx #4 ; 2
r4_smc:
lda $9900,Y ; 4+
lda $D300,Y ; 4+
jsr play_mb_write ; 6+60
;=======
; 72
@ -67,7 +67,7 @@ r4_smc:
; Register 5: C coarse
ldx #5 ; 2
r5_smc:
lda $9C00,Y ; 4+
lda $9400,Y ; 4+
pha ; 3
and #$f ; 2
jsr play_mb_write ; 6+60
@ -82,7 +82,7 @@ r5_smc:
lsr ; 2
r13_smc:
ldx $9F00,Y ; check for env update ; 4
ldx $D500,Y ; check for env update ; 4
bmi skip_envelope_write ; 3
;============
; 19
@ -107,7 +107,7 @@ done_envelope_write:
; Register 6: Noise
ldx #6 ; 2
r6_smc:
lda $9F00,Y ; 4+
lda $D500,Y ; 4+
and #$1f ; 2
jsr play_mb_write ; 6+60
;=======
@ -116,7 +116,7 @@ r6_smc:
; Register 7: Enable
ldx #7 ; 2
r7_smc:
lda $A200,Y ; 4+
lda $D600,Y ; 4+
jsr play_mb_write ; 6+60
;========
; 72
@ -124,7 +124,7 @@ r7_smc:
; Register 8: a-amp
ldx #8 ; 2
r8_smc:
lda $A500,Y ; 4+
lda $D700,Y ; 4+
pha ; 3
and #$1f ; 2
jsr play_mb_write ; 6+60
@ -144,7 +144,7 @@ r8_smc:
; Register 9: b-amp (bottom)
ldx #9 ; 2
r9_smc:
lda $A800,Y ; 4+
lda $D800,Y ; 4+
pha ; 3
and #$f ; 2
ora AY_REGISTERS ; 3
@ -169,7 +169,7 @@ r9_smc:
; Register 11: E fine
ldx #11 ; 2
r11_smc:
lda $AB00,Y ; 4+
lda $D900,Y ; 4+
jsr play_mb_write ; 6+60
;======
; 72
@ -177,7 +177,7 @@ r11_smc:
; Register 12: E coarse
ldx #12 ; 2
r12_smc:
lda $AE00,Y ; 4+
lda $DA00,Y ; 4+
jsr play_mb_write ; 6+60
;======
; 72

View File

@ -1,17 +1,17 @@
; ZZ points to offset from pointer
;0 $9000,$9100,$9200 = A Low (reg0)
;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
;2 $9600,$9700,$9800 = B Low (reg2)
;3 $9900,$9A00,$9B00 = C Low (reg4)
;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
;6 $A200,$A300,$A400 = Enable (r7)
;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
;9 $AB00,$AC00,$AD00 = ENV low (r11)
;a $AE00,$AF00,$B000 = ENV high (r12)
;D000 ;0 $9000,$9100,$9200 = A Low (reg0)
;D100 ;1 $9300,$9400,$9500 = A high (reg1) [top], B high (reg3) [bottom]
;D200 ;2 $9600,$9700,$9800 = B Low (reg2)
;D300 ;3 $9900,$9A00,$9B00 = C Low (reg4)
;D400 ;4 $9C00,$9D00,$9E00 = Envelope Shape (r13) [top], C high (reg5) [bot]
;D500 ;5 $9F00,$A000,$A100 = Noise (r6), bit7 = don't change envelope
;D600 ;6 $A200,$A300,$A400 = Enable (r7)
;D700 ;7 $A500,$A600,$A700 = A amp (r8), bit 5 of r8,r9,r10
;D800 ;8 $A800,$A900,$AA00 = C amp (r10) [top], B amp (r9) [bottom]
;D900 ;9 $AB00,$AC00,$AD00 = ENV low (r11)
;DA00 ;a $AE00,$AF00,$B000 = ENV high (r12)
pt3_write_frame:
@ -22,7 +22,7 @@ pt3_write_frame:
; Register 0: A fine
lda A_FINE_TONE
r0_wrsmc:
sta $9000,Y
sta $D000,Y
;==========================
; Register 1/3: A/B coarse
@ -33,13 +33,13 @@ r0_wrsmc:
asl
ora B_COARSE_TONE
r1_wrsmc:
sta $9300,Y
sta $D100,Y
;====================
; Register 2: B fine
lda B_FINE_TONE
r2_wrsmc:
sta $9600,Y
sta $D200,Y
;====================
; Register 3: B coarse already done
@ -49,7 +49,7 @@ r2_wrsmc:
; Register 4: C fine
lda C_FINE_TONE
r4_wrsmc:
sta $9900,Y
sta $D300,Y
;=======================================
; Register 5: Envelope Shape [top] / C coarse [bottom]
@ -81,7 +81,7 @@ done_envelope:
lda C_COARSE_TONE
r13_wrsmc:
sta $9C00,Y
sta $D400,Y
;=====================
@ -90,13 +90,13 @@ r13_wrsmc:
and #$1f
ora ENVELOPE_SHAPE
r6_wrsmc:
sta $9F00,Y
sta $D500,Y
;=====================
; Register 7: Enable
lda ENABLE
r7_wrsmc:
sta $A200,Y
sta $D600,Y
;=====================
; Register 8: a-amp
@ -117,7 +117,7 @@ r7_wrsmc:
asl
ora A_VOLUME
r8_wrsmc:
sta $A500,Y
sta $D700,Y
;============================
; Register 9/10: b-amp (bottom) , c-amp (top)
@ -133,7 +133,7 @@ r8_wrsmc:
asl
ora B_VOLUME
r9_wrsmc:
sta $A800,Y
sta $D800,Y
;=====================
; Register 10: c-amp already handled
@ -143,13 +143,13 @@ r9_wrsmc:
; Register 11: E fine
lda ENVELOPE_FINE
r11_wrsmc:
sta $AB00,Y
sta $D900,Y
;=======================
; Register 12: E coarse
lda ENVELOPE_COARSE
r12_wrsmc:
sta $AE00,Y
sta $DA00,Y
;=============================
; Register 13: already handled

View File

@ -9,8 +9,8 @@ end_book:
;===================
; init screen
jsr TEXT
jsr HOME
; jsr TEXT
; jsr HOME
bit KEYRESET
;===================
@ -133,7 +133,7 @@ loopR: dex ; 2
book_loop:
jsr $9000 ; cycle-counted page0/page1 flip code
jsr $9800 ; cycle-counted page0/page1 flip code
;======================================================
; We have 4550 cycles in the vblank, use them wisely