diff --git a/res/DEMO/BATTLEZONE b/res/DEMO/BATTLEZONE index 6a8bc0d84..95ebf8ab3 100755 Binary files a/res/DEMO/BATTLEZONE and b/res/DEMO/BATTLEZONE differ diff --git a/res/DEMO/BATTLEZONE.1 b/res/DEMO/BATTLEZONE.1 deleted file mode 100755 index 09e83dd87..000000000 Binary files a/res/DEMO/BATTLEZONE.1 and /dev/null differ diff --git a/res/DEMO/BB b/res/DEMO/BB index ab882ea8a..671a2ceda 100755 Binary files a/res/DEMO/BB and b/res/DEMO/BB differ diff --git a/res/DEMO/BUZZARD.BAIT b/res/DEMO/BUZZARD.BAIT index 0b1e7977f..a7438ec16 100755 Binary files a/res/DEMO/BUZZARD.BAIT and b/res/DEMO/BUZZARD.BAIT differ diff --git a/res/DEMO/BUZZARD.BAIT.1 b/res/DEMO/BUZZARD.BAIT.1 deleted file mode 100755 index 4c331613e..000000000 Binary files a/res/DEMO/BUZZARD.BAIT.1 and /dev/null differ diff --git a/res/DEMO/CRIME.WAVE b/res/DEMO/CRIME.WAVE index 08e894ee8..d99255a9c 100755 Binary files a/res/DEMO/CRIME.WAVE and b/res/DEMO/CRIME.WAVE differ diff --git a/res/DEMO/CRIME.WAVE.1 b/res/DEMO/CRIME.WAVE.1 deleted file mode 100755 index 7e8203837..000000000 Binary files a/res/DEMO/CRIME.WAVE.1 and /dev/null differ diff --git a/res/DEMO/GAMMA.GOBLINS b/res/DEMO/GAMMA.GOBLINS index fefbea140..cd52363e7 100755 Binary files a/res/DEMO/GAMMA.GOBLINS and b/res/DEMO/GAMMA.GOBLINS differ diff --git a/res/DEMO/GAMMA.GOBLINS.1 b/res/DEMO/GAMMA.GOBLINS.1 deleted file mode 100755 index ba43d50e1..000000000 Binary files a/res/DEMO/GAMMA.GOBLINS.1 and /dev/null differ diff --git a/res/DEMO/NI b/res/DEMO/NI index abd719654..503814f65 100755 Binary files a/res/DEMO/NI and b/res/DEMO/NI differ diff --git a/res/DEMO/NIGHTMARE.1 b/res/DEMO/NIGHTMARE.1 deleted file mode 100755 index 25572b62b..000000000 Binary files a/res/DEMO/NIGHTMARE.1 and /dev/null differ diff --git a/res/DEMO/ROBOTRON.1 b/res/DEMO/ROBOTRON.1 deleted file mode 100755 index f29151d47..000000000 Binary files a/res/DEMO/ROBOTRON.1 and /dev/null differ diff --git a/res/DEMO/ROBOTRON.2084 b/res/DEMO/ROBOTRON.2084 index ecb5983ef..164c8fb02 100644 Binary files a/res/DEMO/ROBOTRON.2084 and b/res/DEMO/ROBOTRON.2084 differ diff --git a/res/DEMO/SPACE.EGGS b/res/DEMO/SPACE.EGGS index 3e15aa41b..0fc2ea7eb 100755 Binary files a/res/DEMO/SPACE.EGGS and b/res/DEMO/SPACE.EGGS differ diff --git a/res/DEMO/SPACE.EGGS.1 b/res/DEMO/SPACE.EGGS.1 deleted file mode 100755 index bc90a4303..000000000 Binary files a/res/DEMO/SPACE.EGGS.1 and /dev/null differ diff --git a/res/DEMO/_FileInformation.txt b/res/DEMO/_FileInformation.txt index ef4851728..4e64a94b6 100644 --- a/res/DEMO/_FileInformation.txt +++ b/res/DEMO/_FileInformation.txt @@ -10,10 +10,9 @@ AQUATRON=Type(06),AuxType(BD00),Access(C3) AXIS.ASSASSIN=Type(06),AuxType(0300),Access(C3) AXIS.ASSASSIN.1=Type(F1),AuxType(0000),Access(C3) BATTLEZONE=Type(06),AuxType(0300),Access(C3) -BATTLEZONE.1=Type(F1),AuxType(0000),Access(C3) BEER.RUN=Type(06),AuxType(0300),Access(C3) BELLHOP=Type(06),AuxType(3FFD),Access(C3) -BB=Type(06),AuxType(1FFD),Access(C3) +BB=Type(06),AuxType(0300),Access(C3) BOLO=Type(06),AuxType(0300),Access(C3) BK=Type(06),AuxType(0300),Access(C3) BU=Type(06),AuxType(3E97),Access(C3) @@ -23,7 +22,6 @@ BURGERTIME.3=Type(F1),AuxType(2000),Access(C3) BURGERTIME.4=Type(F1),AuxType(0C00),Access(C3) BURGERTIME.5=Type(F1),AuxType(6000),Access(C3) BUZZARD.BAIT=Type(06),AuxType(0300),Access(C3) -BUZZARD.BAIT.1=Type(F1),AuxType(0000),Access(C3) CB=Type(06),AuxType(3000),Access(C3) CANNONBALL.BL.1=Type(F1),AuxType(0000),Access(C3) CEILING.ZERO=Type(06),AuxType(0300),Access(C3) @@ -41,8 +39,7 @@ CIDER.SPIDER.9=Type(F1),AuxType(0000),Access(C3) CIDER.SPIDER.Z=Type(F1),AuxType(0000),Access(C3) CONAN=Type(06),AuxType(0300),Access(C3) CONAN.1=Type(F1),AuxType(0000),Access(C3) -CRIME.WAVE=Type(06),AuxType(3000),Access(C3) -CRIME.WAVE.1=Type(F1),AuxType(0000),Access(C3) +CRIME.WAVE=Type(06),AuxType(BE00),Access(C3) CYCLOD=Type(06),AuxType(0300),Access(C3) DIG.DUG=Type(06),AuxType(0300),Access(C3) DINO.EGGS=Type(06),AuxType(0300),Access(C3) @@ -54,8 +51,7 @@ FIREBIRD=Type(06),AuxType(0300),Access(C3) FIREBIRD.1=Type(F1),AuxType(0000),Access(C3) FIREBUG=Type(06),AuxType(0200),Access(C3) FLIP.OUT=Type(06),AuxType(0300),Access(C3) -GAMMA.GOBLINS=Type(06),AuxType(0300),Access(C3) -GAMMA.GOBLINS.1=Type(F1),AuxType(0000),Access(C3) +GAMMA.GOBLINS=Type(06),AuxType(B000),Access(C3) THE.GOONIES=Type(06),AuxType(1000),Access(C3) GOONIES.1=Type(F1),AuxType(4C63),Access(C3) GOONIES.2=Type(F1),AuxType(4C63),Access(C3) @@ -105,7 +101,6 @@ MC=Type(06),AuxType(3FE7),Access(C3) MOON.PATROL=Type(06),AuxType(0200),Access(C3) NIGHT.STALKER=Type(06),AuxType(A000),Access(C3) NI=Type(06),AuxType(0300),Access(C3) -NIGHTMARE.1=Type(F1),AuxType(0000),Access(C3) N.O.R.A.D=Type(06),AuxType(0300),Access(C3) NORAD.1=Type(F1),AuxType(0000),Access(C3) NIBBLER=Type(06),AuxType(0300),Access(C3) @@ -122,8 +117,7 @@ PHASER.FIRE.1=Type(F1),AuxType(0000),Access(C3) POOYAN=Type(06),AuxType(0300),Access(C3) REPTON=Type(06),AuxType(0300),Access(C3) REPTON.1=Type(F1),AuxType(0000),Access(C3) -ROBOTRON.2084=Type(06),AuxType(3000),Access(C3) -ROBOTRON.1=Type(F1),AuxType(0000),Access(C3) +ROBOTRON.2084=Type(06),AuxType(BF70),Access(C3) SAMMY.LIGHTFOOT=Type(06),AuxType(0300),Access(C3) SAMMY.1=Type(F1),AuxType(0000),Access(C3) SAMMY.2=Type(F1),AuxType(0000),Access(C3) @@ -137,7 +131,6 @@ SNAKE.BYTE=Type(06),AuxType(0300),Access(C3) SNAKE.BYTE.1=Type(F1),AuxType(0000),Access(C3) SNEAKERS=Type(06),AuxType(0300),Access(C3) SPACE.EGGS=Type(06),AuxType(0300),Access(C3) -SPACE.EGGS.1=Type(F1),AuxType(0000),Access(C3) SPACE.QUARKS=Type(06),AuxType(B000),Access(C3) SPARE.CHANGE=Type(06),AuxType(2700),Access(C3) SPARE.CHANGE.A=Type(F1),AuxType(8E00),Access(C3) diff --git a/src/demo/battlezone.a b/src/demo/battlezone.a new file mode 100644 index 000000000..082f53199 --- /dev/null +++ b/src/demo/battlezone.a @@ -0,0 +1,86 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/BATTLEZONE",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + +READ_ROM_NO_WRITE + + lda #$60 + sta $201e + jsr $2000 ; decompress + + lda #0 + sta $0811 + lda #1 + sta $0816 ; reset vector patch + + lda #$EA + sta $1632 + sta $1632+1 + sta $1632+2 ; disable clearing keyboard strobe + + lda #$4C + sta $0872 + sta $161A + sta $7661 + sta $766C + sta $7693 + sta $0B6A + sta $73A7 + sta $168F+4 + lda #0 + sta $0872+1 + sta $161A+1 + sta $7661+1 + sta $766C+1 + sta $7693+1 + sta $0B6A+1 + sta $73A7+1 + sta $168F+5 + lda #1 + sta $0872+2 + sta $161A+2 + sta $7661+2 + sta $766C+2 + sta $7693+2 + sta $0B6A+2 + sta $73A7+2 + sta $168F+6 + lda #$C9 + sta $168F + lda #$FF + sta $168F+1 + lda #$F0 + sta $168F+2 + lda #$16 + sta $168F+3 ; set exits + + lda #$D0 + sta $7733 + sta $774D + sta $78B8 + sta $78BB + sta $7815 + sta $5180 + sta $5576 + sta $0B8E ; disable sound + + +DISABLE_ACCEL + + jmp $810 + +title !byte x_e-x_b +x_b !text "X/BATTLEZONE/BATTLEZONE" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/brainteaserblvd.a b/src/demo/brainteaserblvd.a new file mode 100644 index 000000000..33062dc28 --- /dev/null +++ b/src/demo/brainteaserblvd.a @@ -0,0 +1,69 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/BB",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + lda #$60 + sta $0813 + jsr $0800 ; decompress + lda #$60 + sta $363F + jsr $3600 ; memory move + + lda #0 + sta $0A01 + lda #$2C + sta $0A05 + lda #$A4 + sta $0A09 ; reset vector patch + + lda #$2C + sta $0C3E + sta $0C45 + sta $0C48 ; skip inputs + + lda #$4C + sta $15CC + sta $0ED2 + sta $159A + lda #0 + sta $15CC+1 + sta $0ED2+1 + sta $159A+1 + lda #1 + sta $15CC+2 + sta $0ED2+2 + sta $159A+2 ; set exits + + lda #$D0 + sta $170F + sta $0B61 + sta $0B80 + sta $0B9C + sta $0BBB + sta $1604 + sta $1628 + sta $1647 + sta $0A95 + sta $0AD4 ; disable sound + + +DISABLE_ACCEL + + jmp $0A00 + +title !byte x_e-x_b +x_b !text "X/BB/BB" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/buzzard.bait.a b/src/demo/buzzard.bait.a new file mode 100644 index 000000000..a6ca634a9 --- /dev/null +++ b/src/demo/buzzard.bait.a @@ -0,0 +1,48 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/BUZZARD.BAIT",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + lda #$60 + sta $0827 + jsr $0800 ; decompress + + lda #$4C + sta $1067 + sta $1B31 + sta $7A6B + sta $80DD + sta $81FE + lda #0 + sta $1067+1 + sta $1B31+1 + sta $7A6B+1 + sta $80DD+1 + sta $81FE+1 + lda #1 + sta $1067+2 + sta $1B31+2 + sta $7A6B+2 + sta $80DD+2 + sta $81FE+2 ; set exits + + +DISABLE_ACCEL + + jmp $8000 + +title !byte x_e-x_b +x_b !text "X/BUZZARD.BAIT/BUZZARD.BAIT" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/crime.wave.a b/src/demo/crime.wave.a new file mode 100644 index 000000000..2c0e948d9 --- /dev/null +++ b/src/demo/crime.wave.a @@ -0,0 +1,53 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/CRIME.WAVE",plain +*=$BE00 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +;+LOAD_FILE_KEEP_DIR + ldx #0 ; read to main memory + stx ldrhi + stx ldrlo + +LDADDR title + jsr iLoadFileDirect + + ldx #13-1 ; we also need to copy the length byte +- lda newpath,x + sta $BFD0,x + dex + bpl - + + lda #$60 + sta $244B + jsr $2400 ; decompress + + ldx #15-1 +- lda patch, x + sta $9B7E, x + dex + bpl - ; exit on keypress or after 3 demo cycles + + +DISABLE_ACCEL + + jmp $0800 + +patch !byte $4C,$84,$9B,$4C,$00,$01,$CE,$8C,$9B,$F0,$F8,$4C,$48,$9B,$03 + +newpath + !byte 12 + !text "X/CRIME.WAVE" + +title !byte x_e-x_b +x_b !text "X/CRIME.WAVE/CRIME.WAVE" +x_e + +!if * > $BEFF { + !error "code is too large, ends at ", * +} diff --git a/src/demo/gamma.goblins.a b/src/demo/gamma.goblins.a new file mode 100644 index 000000000..1456d2f6c --- /dev/null +++ b/src/demo/gamma.goblins.a @@ -0,0 +1,48 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/GAMMA.GOBLINS",plain +*=$B000 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + lda #$60 + sta $2034 + jsr $2000 ; decompress + + +RESET_VECTOR $100 + + lda #$4C + sta $5B9A + sta $7ECC + sta $50CB + sta $50B5 + lda #0 + sta $5B9A+1 + sta $7ECC+1 + sta $50CB+1 + sta $50B5+1 + lda #1 + sta $5B9A+2 + sta $7ECC+2 + sta $50CB+2 + sta $50B5+2 ; set exits + + +DISABLE_ACCEL + lda #$00 + tay + jmp $2035 + +title !byte x_e-x_b +x_b !text "X/GAMMA.GOBLINS/GAMMA.GOBLINS" +x_e + +!if * > $BFFF { + !error "code is too large, ends at ", * +} diff --git a/src/demo/nightmare.a b/src/demo/nightmare.a new file mode 100644 index 000000000..ee08836ae --- /dev/null +++ b/src/demo/nightmare.a @@ -0,0 +1,67 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/NI",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +;+LOAD_FILE_KEEP_DIR + ldx #0 ; read to main memory + stx ldrhi + stx ldrlo + +LDADDR title + jsr iLoadFileDirect + + ldx #5-1 ; we also need to copy the length byte +- lda newpath,x + sta $BFD0,x + dex + bpl - + + lda #$60 + sta $404B + jsr $4000 ; decompress + + lda #$4C + sta $8C24 + sta $8C35 + sta $1669 + lda #0 + sta $8C24+1 + sta $8C35+1 + lda #1 + sta $8C24+2 + sta $8C35+2 ; set exits + + lda #<(count+1) + sta $1669+1 + lda #>(count+1) + sta $1669+2 ; decrement custom counter after demo cycle and eventually exit + + +DISABLE_ACCEL + + jmp $1206 + +count !byte $03 + dec count + beq + + jmp $128E ++ jmp $100 + +newpath + !byte 4 + !text "X/NI" + +title !byte x_e-x_b +x_b !text "X/NI/NI" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/robotron.a b/src/demo/robotron.a new file mode 100644 index 000000000..40f5ea566 --- /dev/null +++ b/src/demo/robotron.a @@ -0,0 +1,51 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/ROBOTRON.2084",plain +*=$BF70 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + lda #callback + sta $141D+2 + jmp $1400 ; decompress + +callback +RESET_VECTOR $100 + + ldx #6-1 +- lda patch, x + sta $4542, x + dex + bpl - ; exit on keypress + + lda #$4C + sta $453A + lda #$42 + sta $453A+1 + lda #$45 + sta $453A+2 ; exit at end of demo cycle + + lda #$D0 + sta $053B ; disable sound + + +DISABLE_ACCEL + + jmp $4015 + +patch !byte $AD,$88,$C0,$6C,$FC,$FF + +title !byte x_e-x_b +x_b !text "X/ROBOTRON.2084/ROBOTRON.2084" +x_e + +!if * > $BFFF { + !error "code is too large, ends at ", * +} diff --git a/src/demo/space.eggs.a b/src/demo/space.eggs.a new file mode 100644 index 000000000..3bd0b1134 --- /dev/null +++ b/src/demo/space.eggs.a @@ -0,0 +1,65 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/SPACE.EGGS",plain +*=$300 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + +NEW_RESET_VECTOR $280 + + lda #$60 + sta $2056 + jsr $2000 ; decompress + + lda #$EA + sta $4821 + sta $4821+1 + sta $4821+2 + sta $4821+3 + sta $4821+4 + sta $4821+5 ; avoid clobbering stack + + lda #$AD + sta $4B00 + lda #0 + sta $4B00+1 + lda #$C0 + sta $4B00+2 ; change button press detection to keypress detection + + + lda #$4C + sta $4B06 + lda #0 + sta $4B06+1 + lda #1 + sta $4B06+2 ; exit on keypress + + ldx #11-1 +- lda patch, x + sta $4BD6, x + dex + bpl - ; decrement custom counter after demo cycle and eventually exit + + lda #$02 + sta $4BFF ; initialize custom counter + + +DISABLE_ACCEL + + jmp $4880 + +patch !byte $CE,$FF,$4B,$10,$03,$4C,$00,$01,$4C,$B0,$4B + +title !byte x_e-x_b +x_b !text "X/SPACE.EGGS/SPACE.EGGS" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +}