diff --git a/games/sb/Makefile b/games/sb/Makefile index 1672ebfc..78786420 100644 --- a/games/sb/Makefile +++ b/games/sb/Makefile @@ -12,7 +12,7 @@ all: sb.dsk #### -sb.dsk: QBOOT QLOAD TITLE DUCK_POND ROOF ASPLODE TARGET CLIFF RAT +sb.dsk: QBOOT QLOAD TITLE DUCK_POND ROOF ASPLODE BACK_OFF TARGET CLIFF RAT cp $(EMPTY_DISK) sb.dsk $(DOS33_RAW) sb.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) sb.dsk 0 2 QBOOT 1 1 @@ -79,6 +79,21 @@ asplode_graphics/sb_title.hgr.zx02: asplode_sound/asplode.btc.zx02: cd asplode_sound && make + +#### + +BACK_OFF: back_off.o + ld65 -o BACK_OFF back_off.o -C $(LINKER_SCRIPTS)/apple2_6000.inc + +back_off.o: back_off.s zx02_optim.s \ + asplode_graphics/bob_bg.hgr.zx02 \ + asplode_graphics/sb_sprites.inc \ + asplode_sound/back_off.btc.zx02 \ + audio.s play_asplode.s asplode_head.s \ + hgr_sprite_big.s cycle_colors.s \ + zp.inc hardware.inc + ca65 -o back_off.o back_off.s -l back_off.lst + #### CLIFF: cliff.o diff --git a/games/sb/asplode_graphics/Makefile b/games/sb/asplode_graphics/Makefile index 4c2e71b1..7a1f1a7d 100644 --- a/games/sb/asplode_graphics/Makefile +++ b/games/sb/asplode_graphics/Makefile @@ -12,7 +12,9 @@ HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite all: sb_zone.hgr.zx02 sb_zone2.hgr.zx02 \ sb_combined.hgr.zx02 \ - sb_title.hgr.zx02 sb_sprites.inc + sb_title.hgr.zx02 sb_sprites.inc \ + bob_bg.hgr.zx02 + #### @@ -24,6 +26,15 @@ sb_combined.hgr.zx02: sb_zone.hgr sb_zone2.hgr sb_zone.hgr: sb_zone.png $(PNG_TO_HGR) sb_zone.png > sb_zone.hgr + +#### + +bob_bg.hgr.zx02: bob_bg.hgr + $(ZX02) bob_bg.hgr bob_bg.hgr.zx02 + +bob_bg.hgr: bob_bg.png + $(PNG_TO_HGR) bob_bg.png > bob_bg.hgr + #### sb_zone.hgr.zx02: sb_zone.hgr diff --git a/games/sb/asplode_graphics/bob_bg.png b/games/sb/asplode_graphics/bob_bg.png new file mode 100644 index 00000000..6b0ef774 Binary files /dev/null and b/games/sb/asplode_graphics/bob_bg.png differ diff --git a/games/sb/asplode_graphics/bob_sprites.png b/games/sb/asplode_graphics/bob_sprites.png new file mode 100644 index 00000000..86f09c91 Binary files /dev/null and b/games/sb/asplode_graphics/bob_sprites.png differ diff --git a/games/sb/asplode_sound/Makefile b/games/sb/asplode_sound/Makefile index 00fb14f5..b8f83f1c 100644 --- a/games/sb/asplode_sound/Makefile +++ b/games/sb/asplode_sound/Makefile @@ -1,6 +1,6 @@ ZX02 = ~/research/6502_compression/zx02.git/build/zx02 -f -all: asplode.btc.zx02 asplode_sound.btc.zx02 +all: asplode.btc.zx02 asplode_sound.btc.zx02 back_off.btc.zx02 asplode.btc.zx02: asplode.btc $(ZX02) asplode.btc asplode.btc.zx02 @@ -18,5 +18,10 @@ asplode_sound.btc: asplode.btc bim.btc boom.btc twang.btc dd if=twang.btc bs=1 count=2048 >> asplode_sound.btc +back_off.btc.zx02: back_off.btc + $(ZX02) back_off.btc back_off.btc.zx02 + + + clean: rm -f *~ asplode_sound.btc diff --git a/games/sb/asplode_sound/back_off.btc b/games/sb/asplode_sound/back_off.btc new file mode 100644 index 00000000..a505b5b8 --- /dev/null +++ b/games/sb/asplode_sound/back_off.btc @@ -0,0 +1 @@ +ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª­Tªª­U*ª­RªªµTªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªÕ*•ZµJªªªªªªª©Uªªªªªªªªªªªªªªªªªªªªªªªªªªªª­R•U«T¥UªªUjªªUZªª©UUUUUUUUUUUUUUUUUUUUUUUUVªJªÖªR«UUJµUUJ­UUTªªªªªªªªªªªªªªªªªªªªªªªª­RUZµR•ZªªUªªªUjªª¥VªªªªªªªªªªªªªªªªªªªªªªµIU«UIUVµRUVµT¥U­T¥UmU)UjÔ©Ujª©UZªÒJ¶µJJ­jªIkZª’ªÖª”ª­ª¤ª­V”ª«UTª«UYD¶Ú©IUµª‘U­j’U[V’•VÖ¤•V­T¥UªÒ•UjÕImU)*ÖÕI*Ö­JJµª©JªÖªJ«UURª­URª­Ui%mª©J«ZªI[ZªRšÖª’ª«Z¤ª«U¥*ªÕTªªµZI6ÕjJU­j’U­Z”•kZ¤•j¶©%Z­U)UjÔ©UVµH«kU)JÖÕI*µ­RJ­jªRª¶ªRªµjRªµURª«Z¢Mµª’U­j¤•µZ¥%kV¥)ª«UIjªÕ*ªª­*ªªªª«UIUmUIUªª©Uªš©UªªªUjªª•j¥UUª•UUUUUUUUUUUUV©*«ZªJ­UUJµTªª«UURªÕUUUU*ªµU*ªªªªªªªªªªªªµRUZÕRUZªª•ª¥j•jªª•Zªª¥Zª•Uªª•UZªª•UUUUUUZª¥*Öª¤ªÕUU+UJÕ*ÕUU*µUU*µUJªÕTªªªªªªªªªªªªªÕJUjÕRUjª©Uªª©VªªªUjªª•j¥iUjªªUZªª•ZªªªªªªªÔ¥VÕT¥Vªªªªªªªªªª©VªªªUªUUUUKUUUUUUUUUUVª¤«jª•*ÚÔ¤ªÚª©*µª©*­VªJ­UURªÕUR«UZ¤UÕª¤•­j¤•kZ¤•ZÕT•Zªµ)Zªªªªªªªªª«T•[UT•Uµ¥ÖµU%UµT¥Uªµ)UjªªUUZ©UUVª¤­ªª”ªÖª’VÕj¤ª­j¤ªµUUR­UU*µUUUUUUjJµªª•-Zª’­Vª”«ZªT«UUU*ÕUUUUUUUUUZ©JÚªªRµkJRµZªR«ZªR«UUTª«UTªª²ªªªª«T•mUT•jÕT•ZµU%V­U)V«Rªªªªªªªªªªªª«T•kUU%ZµT¥ZµUIV­UIUªª¥Vªª¥Uªª¥Uªª¥Ujªªª©Mjª©+j•YUj•ZUZ•URÕUURµT­J­¥*ª­TªÊ«TªªªªªÔ­T•Z­U%Zªµ)ªªª©jªª©Vªª©UªUUUªUUUUUUUUUUUUUUV©JµVªJµUZRµRÕRµUUR­UUR«U*ª«U*ª«U*ªªªªªªªªµUUÛUU%[Rµ)mRªªkRª©Vªª©Vªª©V²•©Uª•ªUª•ªUj•jªÔ’¶ªÔ’¶©j•Z¥V•V©V¤­iUT«U+T«U+TªÕ*ÔªµJªªµ*­UT•kUUjª¬¥j¥j¥Zªª¥Vªª¥V©VªUUUUUUUUUUUVª’­ªª’ªÚª’ªÖª”ªÚª•*µUU*µUU*ªÕU*ªªµU%ZÕU%V­U%U­UIUkUJUZªª¥Vªªªªªªªªª­UIZµUIUkUIUZÕJUZÕRUUªª•UUjUUUUUUUUV¤«UUTª­URU«UT•kUT¥jªª©UªªªªªªªªªªÕT•ªµT¥U­T•Uªª•Ujª¥UZVªUUUj•UUUUUUUj’«Zª’ªÖª’ªÕV”ªµUTªª«U*ªªµJªªªªªª­URVµUR©kURªªÕTªªÕUJª«UJªªµRªªªªªª«URUª«R–ª©ª•ªªª•Zªª•ZªªªªªUªªªªªªªªªªªªªªªª«UJU­UTªµJªª­UU*­UUUUUUUUU*­UUUUUUUUª•UUUUUUZ©RµUUUUUUU-UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUj•UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTÕUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUTª«UU*ªÕTªªµTªªªªªªªªªªªªªªªªªªªªªªªªªªªªªUjªª¥UUªªUUªªUUªª•UVªªUUUUUUUUUUUUUUUUUZªUUjª”«Zª”«Vª•UUª¥UUUUUUUUUUUUUUUUUVª¥JÖª¥*µª¥*µj•KUUUUUUUUUUUUUUUUUUUUUUURªµUJªµUJªµUJª­U*ªªªªªªªªªªªªªªªªª«UJ•ZÕR•VµT¥V­R©Zªª•Vª©UUª©UUjªUUjªUVªªUU­R•U­R•U­T©Vªªªªªªªªªªªªªª¥VªªUZµJUZÕJUVÕJUZª©UZª©UUUUUUUUUUUU*µUTªÕ©JªÖªJªÖªR«V©R«UUR­UUUUUUUUUUUUUUUUUUUUU*­UU*ªµURªµUJª­UTªªµUJªªªªªªµJªª­Rªªªªªªªªªª•UZª©UUªª¥Ujª¥Ujª©UVªªUUUUUUUUUUUUUUUUUUUUUURª«UU*ª­UTª«UUJªÕUJª­URªªÕRª«URªªµTªª«Tªª«UUUUUUZ©U+UUUUUUU*ÕUU*«UUJªªªªªªª©UVªªUUVªªªªªªª•UZª©UUjª©Uªª©Ujª©UVªªUUUUUUUU*ªÕURª«UTª­UUUUUUUª¥JµUUJµUTª­UU*ªµURªªµRªªªªªªªªªªª­TªZµU)U­U)Uªª¥UjªªªªªªªªªUZª¥UVª¥UªªT­kJJ«j©J­Z¥UUUUUUUR­UUJªÕUJªµUJ«UT©kZ”•[ZR•kUJªªªªªªªªªªªªªªªªªªªªªª©UkU%UkU)U«TªªªªªªªªªªªªUZªªUUªªªªª¥U­R”µ­R•Uªª•UUUUUUUUZ©UUZª•UUª•Vª©RÖµ)*µª¥*µj¥UUUUUUUUUUU*­UU*ªÕUUUªTªÖªRªÖªRªÕURªªªªªªªªªªªªªªªªªªªªµU)UkUJUVªªUUjª•Ujª©UUªªUUUUUVª•UUª©UUª©UUªªªªªUV­JTµjªT­ZªT­Zª•*Õª¥UUUU*ÕUJªµUJªµU*ªµUUUUTª­UTªªÕU*ªÕU)VµU)U«U*ªªªªªÕRªªÕJª«UJª«UUUUU*«V¥*ZµU*V­U)U­U)UkUJUZª¥Ujª•Ujª¥UZª•UZªªª•UVªªUUjª¥Ujª•Ujª¥UZª©UU©UUZªU*ÖªUMVªUUZªªªªªªªª©UZªªUZª©UZªªUVªª•Uª¥UZª¥UVª©UVª©UZª©RÕ­*J­j©J«V¥UUUUUUUUUUªUUVª•UUUUUjU*Öª”ªµª”ªµUUJªµUUUUUUUUUUUUUUUUUUTª­j”ª­j”ª­UURª­UUUUUUUUUUUUUUUUUV•*­Z¥*«Z¥J«UURª­UUTªªªÕJª«UJªªªªªªª¥U«R•UkR•UZª©UUªª•UUUUUUUUUUUUUUUZ•*µª¤ª­ª•*­UUUSUUUJªªªªªªªªªªªªªªÕT©VµT•VµR•Uªªª•VªªUUUUUUT­UUR«UUUUUTªµª”ªµª•*µUUUUUUUUUUTª­UU*ªÕ¥JªÕU*ªµUJ«UT¥ZÖ”•UµR•VµRUVµR•UµR•U­JRµµRRµµRJ­­RJ­­RUZÕI*¶ÕI*­­I*­µI)­µJJ­mRR­j¥%kj¤¥kj¤•[j¤¥[Z¤¥­ª¤•[mI%[j©%[j¤•VÚ©%VÖ¥%VµR’µµRRµµRR­µRR­µRR¶Ö”J­µT’«ZÒ’«[T’«ZÔ¤ªÖª¤ªÕªRªÖª”ªÚª”ªÖª”ª¶ª•*ÚÕ%*µª©J­Z¥*­j©J«VªT«UURªÕU*«UU*«UU*«UUJªÕUJ«V©Tª­UU*«UU*«UU*«UU*ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¥ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¥ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª•ªªª¥Z•j•j¥UUUUUUUUUUUUUUUiUUUj¥VUUUV¥UUUUUUUUUUUUUUUUUUUUUUUUUJÕUUR­U5¥UU+T­UKTªªªµ*ªªªªªªZª«RªªVÒªª–ªUª–ª•ZUj¥j•UUV¥UU5eUUUUUªUi+iMjUZSVUj•V’Ö•V¥UUUiUU+U-UJÕ+URµJÕJµIµJ­QmJ[QZÊZÑVªUÔZªU´Vª•´–Ô¥¬•µ%­#t¥mEu)[ImI[IZ©VÉZªV©VªVª[R–ªVʪ´•ÒUª•²•ª•j•j’ÚTÚ¥j•V¤Ú¥Z©[JV©VªšªVªUªUª•ª•ª¥jUjUj•j•V¥VªVªªª•ªZª•ªª­Jªªªªªªªªªªªªªªªªªªªªªªªª•j•j¥jªª¥Z•V¥ZªªÒªª©jª–ªªª¥©Vªªªªªªªªªªªª©VªVªªªªªV¥ZªZªªÕ*ªª©j©jªª©Z•Z©j©j©U•UUUUUUUUUUUUUUUUUUUUUUUUT­U+UUUJÕ+U+UKUJµJ´ªªªªVªUªVªªª–ªªªªªªµJªªªªªªªª©jªªªªªªªªªªªªªª•j•j¥ªªª¥jªª©jª«Jªªª–ªVª•ªUª•ªUª•jUj¥YUUUUUUUUUUjUª•UKUUYKU*ÕKUJ­*µUUR´ª«RµUKT­UUjVª•Y-¥UZKURÖKiUUJÕUVRÕ*­RµUUTµUUUUUKU*ÕJÕ*Õ*µ*Õ*µ%µ*µJ´¥ªªµ*ÔªªªªªªªÒªªVªªÒªªVªªªªª–ªZªªªZšªªªªªªªªªª«JªªªÊªªªªªªªªªª–ªªªªªZªªªªªªªªªªª«JªªZªªªªªªªªªªª–ªªªªªªjªªªZ©jªªÊªªªªªZªªª–ªªªªÊªª¦ªªªªªªªªªªªªªªªªªªª´ªªªªªªªªªªªªªªªªªªªªªªªªª©jªªªjªªªªªªªªªªª«Jªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¥jªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¥ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª–©iZUUUV•ªªªªªªªªªªªªªªªªªªª©ZUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUVUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUURÕUUUUUUUU5UUUUUUUUUUUUUUUUUUUSSSRÒÒÒÒÔÕUTÔ´´´´µUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUKRªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª¦ªªªªªªªªªªªªªªªªªªªªªªªªªªªª–ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU \ No newline at end of file diff --git a/games/sb/back_off.s b/games/sb/back_off.s new file mode 100644 index 00000000..a23d763c --- /dev/null +++ b/games/sb/back_off.s @@ -0,0 +1,557 @@ +; Strongbad Zone -- Back Off Ladies section +; +; by popular demand. Too lazy to try to fit it in with the +; main program so it gets loaded separately +; +; Yet Another HSR project +; +; by deater (Vince Weaver) + +.include "zp.inc" +.include "hardware.inc" + +div7_table = $400 +mod7_table = $500 +hposn_high = $600 +hposn_low = $700 + + +back_off_start: + + ;=================== + ; set graphics mode + ;=================== + + ; assume already in graphics mode + + ;==================== + ; set up tables + ;==================== + + ; assume tables already there + + ;========================== + ; Load Sound + ;=========================== + + lda SOUND_STATUS + and #SOUND_IN_LC + beq done_load_sound + + ; read/write RAM, use $d000 bank1 + bit $C083 + bit $C083 + + lda #sound_data + sta ZX0_src+1 + + lda #$D0 + + jsr full_decomp + + ; read ROM/no-write + bit $C082 + + +done_load_sound: + + ;================= + ; Load Background + ;================= + ; this is tricky as there's not enough room + ; so we are over-writing stuff carefully + +load_backgrounds: + + lda #bg1_data + sta ZX0_src+1 + + lda #$A0 + + jsr full_decomp + + ;=================== + ; set up variables +.if 0 + lda #16 + sta STRONGBAD_X + sta PLAYER_X + + lda #1 + sta STRONGBAD_DIR + sta BULLET_YDIR + + lda #SHIELD_DOWN + sta SHIELD_POSITION + sta SHIELD_COUNT + + lda #0 + sta BULLET_X_L + sta BULLET_X_VEL + sta HEAD_DAMAGE + + lda #$80 + sta BULLET_X_VEL_L + + lda #20 + sta BULLET_X + lda #0 + sta BULLET_Y +.endif + + + jsr do_back_off + + ;========================== + ; done game + ;========================== + +done_game: + lda #0 + sta WHICH_LOAD + rts + + + + +wait_until_keypress: + lda KEYPRESS ; 4 + bpl wait_until_keypress ; 3 + bit KEYRESET ; clear the keyboard buffer + rts + + + ;============================== + ; do the asplode routine + ;============================== + ; should move head to center + ; player explosion happens + ; do the "YOUR HEAD A SPLODE" animation + ; try to interleave the sound + ; in theory the background should pulse too but + ; that might be too much +do_back_off: + + lda #0 + sta FRAME + + lda #16 + sta STRONGBAD_X + +asplode_loop: + ;=================== + ; copy background + ;=================== + + lda #$a0 + jsr hgr_copy + + ;========================== + ; draw big head + ;========================== + + ldx HEAD_DAMAGE + lda head_sprites_l,X + sta INL + lda head_sprites_h,X + sta INH + lda #16 ; center + sta SPRITE_X + lda #36 + sta SPRITE_Y + jsr hgr_draw_sprite_big + + ;========================== + ; draw new sprite + ;========================== + + ldx FRAME + lda asplode_sprite_l,X + sta INL + lda asplode_sprite_h,X + sta INH + + + cpx #11 + bcs use_hardcoded_x + + ldy BULLET_X + dey + tya + + jmp asplode_it_x + +use_hardcoded_x: + lda asplode_sprite_x,X +asplode_it_x: + sta SPRITE_X + + lda asplode_sprite_y,X + sta SPRITE_Y + jsr hgr_draw_sprite_big + + ldx FRAME + cpx #17 + bcc done_extra_sprites + + ;========================== + ; draw your + ;========================== + + lda #your_sprite + sta INH + lda #8 + sta SPRITE_X + lda #133 + sta SPRITE_Y + jsr hgr_draw_sprite_big + + ldx FRAME + cpx #23 + bcc done_extra_sprites + + ;========================== + ; draw head + ;========================== + + lda #head_sprite + sta INH + lda #16 + sta SPRITE_X + lda #133 + sta SPRITE_Y + jsr hgr_draw_sprite_big + + ldx FRAME + cpx #29 + bcc done_extra_sprites + + ;========================== + ; draw A + ;========================== + + lda #a_sprite + sta INH + lda #22 + sta SPRITE_X + lda #133 + sta SPRITE_Y + jsr hgr_draw_sprite_big + +done_extra_sprites: + + + + jsr flip_page + + + ldx FRAME + + +sound_check_explode: + cpx #2 + bne sound_check_your + ; play sound + ldy #7 + bne do_play_asplode ; bra + +sound_check_your: + cpx #16 + bne sound_check_head + ; play sound + ldy #0 + beq do_play_asplode ; bra + +sound_check_head: + cpx #22 + bne sound_check_a + ldy #1 + bne do_play_asplode +sound_check_a: + cpx #28 + bne sound_check_splode + ldy #2 + bne do_play_asplode + +sound_check_splode: + cpx #34 + bne sound_check_done + ldy #3 + +do_play_asplode: + jsr play_asplode + +sound_check_done: + + inc FRAME + lda FRAME + cmp #35 + bcs done_asplode_head + + jmp asplode_loop + +done_asplode_head: + + lda #20 + jsr long_wait ; tail call + + ; reset things + + lda #0 + sta SHIELD_POSITION + sta BULLET_Y + sta SHIELD_COUNT + + lda #1 + sta BULLET_YDIR + + bit KEYRESET ; clear any keypresses during asplode + + rts + + +asplode_sprite_l: + ; begining explosion + .byte asploding1_sprite + .byte >asploding1_sprite + .byte >asploding2_sprite + .byte >asploding3_sprite + .byte >asploding4_sprite + .byte >asploding2_sprite + .byte >asploding3_sprite + .byte >asploding4_sprite + .byte >asploding2_sprite + .byte >asploding3_sprite + .byte >asploding4_sprite + ; your + .byte >your_sm_sprite + .byte >your_sm_sprite + .byte >your_med_sprite + .byte >your_med_sprite + .byte >your_sprite + .byte >your_sprite + ; head + .byte >head_sm_sprite + .byte >head_sm_sprite + .byte >head_med_sprite + .byte >head_med_sprite + .byte >head_sprite + .byte >head_sprite + ; a + .byte >a_sm_sprite + .byte >a_sm_sprite + .byte >a_med_sprite + .byte >a_med_sprite + .byte >a_sprite + .byte >a_sprite + ; splode + .byte >splode_sm_sprite + .byte >splode_sm_sprite + .byte >splode_med_sprite + .byte >splode_med_sprite + .byte >splode_sprite + .byte >splode_sprite + +asplode_sprite_x: + .byte 19 ; FIXME: adjust for current pos + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + .byte 19 + ; your + .byte 18 + .byte 17 + .byte 14 + .byte 12 + .byte 9 + .byte 8 + ; head + .byte 18 + .byte 18 + .byte 17 + .byte 17 + .byte 16 + .byte 16 + ; a + .byte 19 + .byte 20 + .byte 20 + .byte 21 + .byte 22 + .byte 22 + ; splode + .byte 18 + .byte 20 + .byte 20 + .byte 21 + .byte 22 + .byte 24 + +asplode_sprite_y: + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + .byte 150 + ; your + .byte 80 + .byte 90 + .byte 100 + .byte 111 + .byte 122 + .byte 133 + ; head + .byte 80 + .byte 90 + .byte 100 + .byte 111 + .byte 122 + .byte 133 + ; a + .byte 80 + .byte 90 + .byte 100 + .byte 111 + .byte 122 + .byte 133 + ; splode + .byte 80 + .byte 90 + .byte 100 + .byte 111 + .byte 122 + .byte 133 + + +long_wait: + ldx #10 +long_wait_loop: + lda #255 + jsr WAIT + dex + bne long_wait_loop + rts + + + ;========== + ; flip page + ;========== +flip_page: + lda DRAW_PAGE + beq draw_page2 +draw_page1: + bit PAGE2 + lda #0 + + beq done_flip + +draw_page2: + bit PAGE1 + lda #$20 + +done_flip: + sta DRAW_PAGE + + rts + + + + .include "hgr_sprite_big.s" + .include "hgr_copy_fast.s" + .include "audio.s" + .include "play_asplode.s" + + .include "asplode_graphics/sb_sprites.inc" + + +shield_sprites_l: + .byte player_sprite,>shield_left_sprite + .byte >shield_center_sprite,>shield_right_sprite + + +head_sprites_l: + .byte big_head0_sprite,>big_head1_sprite,>big_head2_sprite + .byte >big_head3_sprite,>big_head4_sprite + + +bg1_data: + .incbin "asplode_graphics/bob_bg.hgr.zx02" + +sound_data: + .incbin "asplode_sound/back_off.btc.zx02" + + .include "zx02_optim.s" + + ; start at least 8k in? +