diff --git a/res/DEMO/ALIEN.TYPHOON b/res/DEMO/ALIEN.TYPHOON index 8fe45e7a8..f41e6448c 100755 Binary files a/res/DEMO/ALIEN.TYPHOON and b/res/DEMO/ALIEN.TYPHOON differ diff --git a/res/DEMO/AQUATRON b/res/DEMO/AQUATRON index 2d64aef0a..a8d7eecca 100755 Binary files a/res/DEMO/AQUATRON and b/res/DEMO/AQUATRON differ diff --git a/res/DEMO/BOLO b/res/DEMO/BOLO index e69841181..0b6c1d147 100755 Binary files a/res/DEMO/BOLO and b/res/DEMO/BOLO differ diff --git a/res/DEMO/CYCLOD b/res/DEMO/CYCLOD index 73be4776a..dba178e26 100755 Binary files a/res/DEMO/CYCLOD and b/res/DEMO/CYCLOD differ diff --git a/res/DEMO/CYCLOD.1 b/res/DEMO/CYCLOD.1 deleted file mode 100755 index dcc7034a6..000000000 Binary files a/res/DEMO/CYCLOD.1 and /dev/null differ diff --git a/res/DEMO/DIG.DUG b/res/DEMO/DIG.DUG index 9e316f0c4..481df7213 100755 Binary files a/res/DEMO/DIG.DUG and b/res/DEMO/DIG.DUG differ diff --git a/res/DEMO/DIG.DUG.1 b/res/DEMO/DIG.DUG.1 deleted file mode 100755 index 310e84906..000000000 Binary files a/res/DEMO/DIG.DUG.1 and /dev/null differ diff --git a/res/DEMO/FIREBUG b/res/DEMO/FIREBUG index 2217c82e7..89b2a4009 100755 Binary files a/res/DEMO/FIREBUG and b/res/DEMO/FIREBUG differ diff --git a/res/DEMO/HARD.HAT.MACK b/res/DEMO/HARD.HAT.MACK index eb0061393..9f5ec1fef 100755 Binary files a/res/DEMO/HARD.HAT.MACK and b/res/DEMO/HARD.HAT.MACK differ diff --git a/res/DEMO/MOON.PATROL b/res/DEMO/MOON.PATROL index cc5c190c7..6f4e722be 100755 Binary files a/res/DEMO/MOON.PATROL and b/res/DEMO/MOON.PATROL differ diff --git a/res/DEMO/PACMAN b/res/DEMO/PACMAN index d8bf44f6a..79ad91829 100644 Binary files a/res/DEMO/PACMAN and b/res/DEMO/PACMAN differ diff --git a/res/DEMO/PLASMANIA b/res/DEMO/PLASMANIA index ec7344029..5e1d88312 100755 Binary files a/res/DEMO/PLASMANIA and b/res/DEMO/PLASMANIA differ diff --git a/res/DEMO/PLASMANIA.1 b/res/DEMO/PLASMANIA.1 deleted file mode 100755 index a18ee878e..000000000 Binary files a/res/DEMO/PLASMANIA.1 and /dev/null differ diff --git a/res/DEMO/STAR.BLAZER b/res/DEMO/STAR.BLAZER index 92db00ec8..eae542f19 100755 Binary files a/res/DEMO/STAR.BLAZER and b/res/DEMO/STAR.BLAZER differ diff --git a/res/DEMO/STAR.BLAZER.1 b/res/DEMO/STAR.BLAZER.1 deleted file mode 100755 index 208931933..000000000 Binary files a/res/DEMO/STAR.BLAZER.1 and /dev/null differ diff --git a/res/DEMO/_FileInformation.txt b/res/DEMO/_FileInformation.txt index 8f27f3de7..263235419 100644 --- a/res/DEMO/_FileInformation.txt +++ b/res/DEMO/_FileInformation.txt @@ -16,7 +16,7 @@ BEER.RUN=Type(06),AuxType(0300),Access(C3) BEER.RUN.1=Type(F1),AuxType(0000),Access(C3) BELLHOP=Type(06),AuxType(3FFD),Access(C3) BB=Type(06),AuxType(1FFD),Access(C3) -BOLO=Type(06),AuxType(10E5),Access(C3) +BOLO=Type(06),AuxType(0300),Access(C3) BK=Type(06),AuxType(0300),Access(C3) BU=Type(06),AuxType(3E97),Access(C3) BURGERTIME.1=Type(F1),AuxType(A402),Access(C3) @@ -46,9 +46,7 @@ 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) CYCLOD=Type(06),AuxType(0300),Access(C3) -CYCLOD.1=Type(F1),AuxType(0000),Access(C3) DIG.DUG=Type(06),AuxType(0300),Access(C3) -DIG.DUG.1=Type(F1),AuxType(0000),Access(C3) DINO.EGGS=Type(06),AuxType(0300),Access(C3) DINO.EGGS.1=Type(F1),AuxType(0000),Access(C3) DUNG.BEETLES=Type(06),AuxType(0300),Access(C3) @@ -57,7 +55,7 @@ FALCONS=Type(06),AuxType(0300),Access(C3) FALCONS.1=Type(F1),AuxType(0000),Access(C3) FIREBIRD=Type(06),AuxType(0300),Access(C3) FIREBIRD.1=Type(F1),AuxType(0000),Access(C3) -FIREBUG=Type(06),AuxType(0800),Access(C3) +FIREBUG=Type(06),AuxType(0200),Access(C3) FLIP.OUT=Type(06),AuxType(0BF4),Access(C3) GAMMA.GOBLINS=Type(06),AuxType(0300),Access(C3) GAMMA.GOBLINS.1=Type(F1),AuxType(0000),Access(C3) @@ -82,7 +80,7 @@ GUMBALL.B=Type(F1),AuxType(0800),Access(C3) GUMBALL.F=Type(F1),AuxType(6000),Access(C3) GUMBALL.I=Type(F1),AuxType(0800),Access(C3) GUMBALL.M=Type(F1),AuxType(6000),Access(C3) -HARD.HAT.MACK=Type(06),AuxType(0800),Access(C3) +HARD.HAT.MACK=Type(06),AuxType(0200),Access(C3) HIGH.RISE=Type(06),AuxType(3FCB),Access(C3) JUNGLE.HUNT=Type(06),AuxType(0300),Access(C3) JUNGLE.HUNT.1=Type(F1),AuxType(0000),Access(C3) @@ -116,14 +114,13 @@ N.O.R.A.D=Type(06),AuxType(0300),Access(C3) NORAD.1=Type(F1),AuxType(0000),Access(C3) NIBBLER=Type(06),AuxType(0900),Access(C3) OM=Type(06),AuxType(08FD),Access(C3) -PACMAN=Type(06),AuxType(0F18),Access(C3) +PACMAN=Type(06),AuxType(0300),Access(C3) PEST.PATROL=Type(06),AuxType(0800),Access(C3) PM=Type(06),AuxType(0300),Access(C3) PIEMAN.1=Type(F1),AuxType(0000),Access(C3) PIEMAN.HI=Type(F1),AuxType(0000),Access(C3) PITFALL.II=Type(06),AuxType(08E5),Access(C3) -PLASMANIA=Type(06),AuxType(0300),Access(C3) -PLASMANIA.1=Type(F1),AuxType(0000),Access(C3) +PLASMANIA=Type(06),AuxType(0200),Access(C3) PHASER.FIRE=Type(06),AuxType(9200),Access(C3) PHASER.FIRE.1=Type(F1),AuxType(0000),Access(C3) POOYAN=Type(06),AuxType(0300),Access(C3) @@ -168,7 +165,6 @@ SPIDER.RAID.1=Type(F1),AuxType(0000),Access(C3) SPY.HUNTER=Type(06),AuxType(0B87),Access(C3) SD=Type(06),AuxType(3FF1),Access(C3) STAR.BLAZER=Type(06),AuxType(0300),Access(C3) -STAR.BLAZER.1=Type(F1),AuxType(0000),Access(C3) STARGATE=Type(06),AuxType(0300),Access(C3) STARGATE.1=Type(F1),AuxType(0000),Access(C3) STELLAR.7=Type(06),AuxType(0300),Access(C3) diff --git a/src/demo/alien.typhoon.a b/src/demo/alien.typhoon.a index 3687bfef0..b58e41485 100644 --- a/src/demo/alien.typhoon.a +++ b/src/demo/alien.typhoon.a @@ -1,5 +1,5 @@ ;license:MIT -;(c) 2021 by Frank M. +;(c) 2021 by Frank M./qkumba !cpu 6502 !to "res/DEMO/ALIEN.TYPHOON",plain @@ -10,7 +10,7 @@ +READ_RAM2_WRITE_RAM2 jsr EnableAccelerator - +LOAD_FILE_AT alien_typhoon, $00 ; $4710 + +LOAD_FILE_AT title, $00 lda #$61 sta $471C @@ -47,13 +47,13 @@ sta $8FEF+2 sta $92B1+2 ; set exits - jsr DisableAccelerator - +READ_ROM_NO_WRITE + +DISABLE_ACCEL + jmp $8F98 -alien_typhoon - !byte 29 - !text "X/ALIEN.TYPHOON/ALIEN.TYPHOON" +title !byte x_e-x_b +x_b !text "X/ALIEN.TYPHOON/ALIEN.TYPHOON" +x_e !if * > $3F0 { !error "code is too large, ends at ", * diff --git a/src/demo/aquatron.a b/src/demo/aquatron.a index 55013a6cc..ed3d048af 100644 --- a/src/demo/aquatron.a +++ b/src/demo/aquatron.a @@ -10,7 +10,7 @@ +READ_RAM2_WRITE_RAM2 jsr EnableAccelerator - +LOAD_FILE_AT aquatron, $00 ; $59C2 + +LOAD_FILE_AT title, $00 +READ_ROM_NO_WRITE lda #>(callback - 1) @@ -36,14 +36,13 @@ callback sta $7E43 sta $7EA0 ; disable sound - +READ_RAM2_WRITE_RAM2 - jsr DisableAccelerator - +READ_ROM_NO_WRITE + +DISABLE_ACCEL + jmp $400 -aquatron - !byte 19 - !text "X/AQUATRON/AQUATRON" +title !byte x_e-x_b +x_b !text "X/AQUATRON/AQUATRON" +x_e !if * > $1F0 { !error "code is too large, ends at ", * diff --git a/src/demo/bolo.a b/src/demo/bolo.a new file mode 100644 index 000000000..86b8bcfed --- /dev/null +++ b/src/demo/bolo.a @@ -0,0 +1,48 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/BOLO",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 $8034 + jsr $4ab0 ; decompress and show title + + lda #$4C + sta $129A + sta $15F8 + sta $5D8A ; (later moved to $7D8A) + lda #0 + sta $129A+1 + sta $15F8+1 + sta $5D8A+1 + lda #1 + sta $129A+2 + sta $15F8+2 + sta $5D8A+2 ; set exits + + lda #$D0 + sta $4E7A ; (later moved to $6E7A) + sta $4F96 ; (later moved to $6F96) + sta $6735 ; (later moved to $8735) disable sound + + +DISABLE_ACCEL + + jmp $1100 + +title !byte x_e-x_b +x_b !text "X/BOLO/BOLO" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/cyclod.a b/src/demo/cyclod.a new file mode 100644 index 000000000..844f607bf --- /dev/null +++ b/src/demo/cyclod.a @@ -0,0 +1,48 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/CYCLOD",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 $202A + jsr $2000 ; decompress + + ldx #6-1 +- lda patch, x + sta $7381, x + sta $8B20, x + dex + bpl - ; exit on keypress + + lda #$4C + sta $89EF + lda #0 + sta $89EF+1 + lda #1 + sta $89EF+2 ; exit at end of demo cycle + + lda #$D0 + sta $7CED ; disable sound + + +DISABLE_ACCEL + + jmp $8EA6 + +title !byte x_e-x_b +x_b !text "X/CYCLOD/CYCLOD" +x_e + +patch !byte $10,$03,$4C,$00,$01,$EA + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/dig.dug.a b/src/demo/dig.dug.a new file mode 100644 index 000000000..b09ec87cb --- /dev/null +++ b/src/demo/dig.dug.a @@ -0,0 +1,44 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/DIG.DUG",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 $826 + jsr $800 ; decompress + + lda #$4C + sta $A12E + sta $A3AE + sta $A3D4 + lda #0 + sta $A12E+1 + sta $A3D4+1 + lda #1 + sta $A12E+2 + sta $A3D4+2 ; set exits + lda #$B9 + sta $A3AE+1 + lda #$A3 + sta $A3AE+2 ; skip title screen and input selection + + +DISABLE_ACCEL + + jmp $8000 + +title !byte x_e-x_b +x_b !text "X/DIG.DUG/DIG.DUG" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/firebug.a b/src/demo/firebug.a new file mode 100644 index 000000000..9a7a20cab --- /dev/null +++ b/src/demo/firebug.a @@ -0,0 +1,59 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/FIREBUG",plain +*=$200 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + jsr EnableAccelerator + +LOAD_FILE_AT title, $00 + + lda #$2C + sta $2070 ; don't load "RECORD" (demo doesn't show high scores) + + lda #$60 + sta $2076 + jsr $2000 ; decompress + + lda #0 + sta $83E + lda #1 + sta $849 ; reset vector fix + + lda #$4C + sta $1105 + sta $151A + sta $5EA5 + sta $5F3B + sta $5F46 + lda #0 + sta $1105+1 + sta $151A+1 + sta $5EA5+1 + sta $5F3B+1 + sta $5F46+1 + lda #1 + sta $1105+2 + sta $151A+2 + sta $5EA5+2 + sta $5F3B+2 ; exit on keypress + sta $5F46+2 ; exit at end of demo cycle + + lda #$54 + sta $086F ; disable sound + + +DISABLE_ACCEL + + jmp $810 + +title !byte x_e-x_b +x_b !text "X/FIREBUG/FIREBUG" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/hard.hat.mack.a b/src/demo/hard.hat.mack.a new file mode 100644 index 000000000..c6312a7d7 --- /dev/null +++ b/src/demo/hard.hat.mack.a @@ -0,0 +1,72 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/HARD.HAT.MACK",plain +*=$200 + + !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 #patcher + sta $942E + jsr $4856 ; decompress + +patcher rts + lda #1 + sta $2218 ; reset vector patch + + lda #$60 + sta $BF7 + sta $72B9 + + lda #$4C + sta $0BD0 + sta $0C82 + lda #0 + sta $0BD0+1 + sta $0C82+1 + lda #1 + sta $0BD0+2 + sta $0C82+2 ; exit on keypress + + lda #$D0 + sta $5E4E ; disable sound + + lda #$20 + sta $7249 + lda #6 + sta $7249+1 + lda #1 + sta $7249+2 ; exit at end of demo cycle + + ldx #13-1 +- lda patch, x + sta $106, x + dex + bpl - ; new code for exit at end patch + + +DISABLE_ACCEL + + lda #$07 + pha + lda #$FF + pha + rts + +title !byte x_e-x_b +x_b !text "X/HARD.HAT.MACK/HARD.HAT.MACK" +x_e + +patch !byte $8D,$10,$72,$8D,$13,$72,$8D,$14,$72,$EE,$14,$72,$60 + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/moon.patrol.a b/src/demo/moon.patrol.a index ea0f9877f..ce9b86946 100644 --- a/src/demo/moon.patrol.a +++ b/src/demo/moon.patrol.a @@ -10,7 +10,7 @@ +READ_RAM2_WRITE_RAM2 jsr EnableAccelerator - +LOAD_FILE_AT moon_patrol, $800 + +LOAD_FILE_AT title, $800 +READ_ROM_NO_WRITE lda #$60 @@ -31,30 +31,28 @@ sta $2A95+2 sta $2A7E+2 sta $0C31+2 - sta $2E80+2 ; exit on keypress/end of demo + sta $2E80+2 ; exit on keypress/end of demo lda #$A2 sta $0996 lda #$FF sta $0996+1 lda #$9A - sta $0996+2 ; prevent stack pointer from overwriting $100 + sta $0996+2 ; prevent stack pointer from overwriting $100 ldx #26-1 - lda patch, x sta $2726, x dex - bpl - ; exit on keypress during title screen + bpl - ; exit on keypress during title screen - +READ_RAM2_WRITE_RAM2 - jsr DisableAccelerator - +READ_ROM_NO_WRITE + +DISABLE_ACCEL jmp $919 -moon_patrol - !byte 25 - !text "X/MOON.PATROL/MOON.PATROL" +title !byte x_e-x_b +x_b !text "X/MOON.PATROL/MOON.PATROL" +x_e patch !byte $20,$B8,$0A,$2C,$10,$C0,$A2,$41,$A9,$FF,$20,$A8,$FC,$AD,$00,$C0,$10,$05,$4C,$00,$01,$EA,$EA,$CA,$D0,$EE diff --git a/src/demo/pacman.a b/src/demo/pacman.a new file mode 100644 index 000000000..a88c1c87d --- /dev/null +++ b/src/demo/pacman.a @@ -0,0 +1,65 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/PACMAN",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 + + +NEW_RESET_VECTOR $280 + + lda #$60 + sta $813 + jsr $800 ; decompress + + lda #$80 + sta $103F + lda #2 + sta $104A ; reset vector patch + + lda #$4C + sta $18A6 ; (later moved to $48A6) + sta $027C + sta $22F9 ; (later moved to $52F9) + sta $3F7C ; (later moved to $6F7C) + sta $5C0B ; (later moved to $8C0B) + lda #0 + sta $027C+1 + sta $22F9+1 + sta $3F7C+1 + sta $5C0B+1 + lda #1 + sta $027C+2 + sta $22F9+2 + sta $3F7C+2 + sta $5C0B+2 + lda #$CD + sta $18A6+1 + lda #$48 + sta $18A6+2 + lda #$30 + sta $22F1 ; (later moved to $52F1) + lda #6 + sta $22F1+1 + lda #$EA + sta $22F1+2 + sta $22F1+3 ; set exits + + +DISABLE_ACCEL + + jmp $1000 + +title !byte x_e-x_b +x_b !text "X/PACMAN/PACMAN" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/plasmania.a b/src/demo/plasmania.a new file mode 100644 index 000000000..016fcc49f --- /dev/null +++ b/src/demo/plasmania.a @@ -0,0 +1,62 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/PLASMANIA",plain +*=$200 + + !source "src/constants.a" ; no code in these + !source "src/macros.a" + + +READ_RAM2_WRITE_RAM2 + +LOAD_FILE_AT title, $00 + + lda #>(callback-1) + sta $84E + lda #<(callback-1) + sta $851 + lda #$60 + sta $853 ; skip loading PLASMANIA.SND + jmp $800 + +callback + lda #$2C + sta $7352 ; silence voice + + lda #$4C + sta $609C + sta $6139 + sta $614C + sta $65B7 + sta $8C31 + sta $8C5B + lda #0 + sta $609C+1 + sta $6139+1 + sta $614C+1 + sta $65B7+1 + sta $8C31+1 + sta $8C5B+1 + sta $87BE + sta $87CC + sta $8AEE + sta $8B89 + sta $8B91 + sta $8C21 ; disable sound + lda #1 + sta $609C+2 + sta $6139+2 + sta $614C+2 + sta $65B7+2 + sta $8C31+2 + sta $8C5B+2 ; set exits + + jmp $6000 + +title !byte x_e-x_b +x_b !text "X/PLASMANIA/PLASMANIA" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +} diff --git a/src/demo/star.blazer.a b/src/demo/star.blazer.a new file mode 100644 index 000000000..55afcbecb --- /dev/null +++ b/src/demo/star.blazer.a @@ -0,0 +1,57 @@ +;license:MIT +;(c) 2021 by Frank M. + +!cpu 6502 +!to "res/DEMO/STAR.BLAZER",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 $722A + sta $725D + jsr $4A58 ; decompress + +DISABLE_ACCEL + jsr $4400 + +ENABLE_ACCEL + jsr $B4C6 ; decompress + + lda #$4C + sta $17DB + sta $1760 + sta $17AD + sta $1705 + lda #0 + sta $17DB+1 + sta $1760+1 + sta $17AD+1 + lda #1 + sta $17DB+2 + sta $1760+2 + sta $17AD+2 ; set exits + lda #<(count + 1) + sta $1705+1 + lda #>(count + 1) + sta $1705+2 ; decrement custom counter after demo cycle and eventually exit + + +DISABLE_ACCEL + jmp ($20) + +count !byte $03 + dec count + bpl + + jmp $100 ++ jmp $1750 + +title !byte x_e-x_b +x_b !text "X/STAR.BLAZER/STAR.BLAZER" +x_e + +!if * > $3F0 { + !error "code is too large, ends at ", * +}