From d6876d4cde63b9e2842144aa40248cb385c61746 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 17 Apr 2022 19:28:29 -0400 Subject: [PATCH] lemm: add hr expansion --- games/lemm/Makefile | 100 +++++- games/lemm/hr_graphics/Makefile | 139 +++++++++ games/lemm/hr_graphics/l1_preview.png | Bin 0 -> 1592 bytes games/lemm/hr_graphics/l1_sb.png | Bin 0 -> 2489 bytes games/lemm/hr_graphics/l2_preview.png | Bin 0 -> 1565 bytes games/lemm/hr_graphics/l2_taran.png | Bin 0 -> 28429 bytes games/lemm/hr_graphics/l3_hstarmy.png | Bin 0 -> 2707 bytes games/lemm/hr_graphics/l3_preview.png | Bin 0 -> 1770 bytes games/lemm/hr_graphics/l4_bubs.png | Bin 0 -> 22980 bytes games/lemm/hr_graphics/l4_preview.png | Bin 0 -> 2183 bytes games/lemm/hr_graphics/l5_preview.png | Bin 0 -> 1772 bytes games/lemm/hr_graphics/l5_trog.png | Bin 0 -> 18802 bytes games/lemm/hr_level1.s | 298 ++++++++++++++++++ games/lemm/hr_level2.s | 419 ++++++++++++++++++++++++++ games/lemm/hr_level3.s | 304 +++++++++++++++++++ games/lemm/hr_level4.s | 307 +++++++++++++++++++ games/lemm/hr_level5.s | 384 +++++++++++++++++++++++ games/lemm/hr_music/Makefile | 107 +++++++ games/lemm/hr_music/intro2.ym | Bin 0 -> 3217 bytes games/lemm/hr_music/lemm5.ym | Bin 0 -> 463 bytes games/lemm/level2.s | 2 +- games/lemm/particle_hgr.s | 2 +- games/lemm/title.s | 26 +- 23 files changed, 2082 insertions(+), 6 deletions(-) create mode 100644 games/lemm/hr_graphics/Makefile create mode 100644 games/lemm/hr_graphics/l1_preview.png create mode 100644 games/lemm/hr_graphics/l1_sb.png create mode 100644 games/lemm/hr_graphics/l2_preview.png create mode 100644 games/lemm/hr_graphics/l2_taran.png create mode 100644 games/lemm/hr_graphics/l3_hstarmy.png create mode 100644 games/lemm/hr_graphics/l3_preview.png create mode 100644 games/lemm/hr_graphics/l4_bubs.png create mode 100644 games/lemm/hr_graphics/l4_preview.png create mode 100644 games/lemm/hr_graphics/l5_preview.png create mode 100644 games/lemm/hr_graphics/l5_trog.png create mode 100644 games/lemm/hr_level1.s create mode 100644 games/lemm/hr_level2.s create mode 100644 games/lemm/hr_level3.s create mode 100644 games/lemm/hr_level4.s create mode 100644 games/lemm/hr_level5.s create mode 100644 games/lemm/hr_music/Makefile create mode 100644 games/lemm/hr_music/intro2.ym create mode 100644 games/lemm/hr_music/lemm5.ym diff --git a/games/lemm/Makefile b/games/lemm/Makefile index 1cc0d374..97258ae4 100644 --- a/games/lemm/Makefile +++ b/games/lemm/Makefile @@ -9,7 +9,7 @@ TOKENIZE = ../../utils/asoft_basic-utils/tokenize_asoft EMPTY_DISK = ../../empty_disk/empty.dsk LINKER_SCRIPTS = ../../linker_scripts -all: lemm.dsk +all: lemm.dsk hr_lemm.dsk #lemm.dsk: HELLO LEMM LEMM_TEST # cp $(EMPTY_DISK) lemm.dsk @@ -38,6 +38,28 @@ lemm.dsk: QBOOT QLOAD LEMM \ $(DOS33_RAW) lemm.dsk 33 0 LEVEL10 0 0 +hr_lemm.dsk: QBOOT QLOAD HR_LEMM \ + HR_LEVEL1 HR_LEVEL2 HR_LEVEL3 HR_LEVEL4 HR_LEVEL5 \ + LEVEL6 LEVEL7 LEVEL8 LEVEL9 LEVEL10 + cp $(EMPTY_DISK) hr_lemm.dsk + $(DOS33_RAW) hr_lemm.dsk 0 0 QBOOT 0 1 + $(DOS33_RAW) hr_lemm.dsk 0 2 QBOOT 1 1 + $(DOS33_RAW) hr_lemm.dsk 0 4 QBOOT 2 1 + $(DOS33_RAW) hr_lemm.dsk 1 0 QLOAD 0 0 + $(DOS33_RAW) hr_lemm.dsk 3 0 HR_LEMM 0 0 + $(DOS33_RAW) hr_lemm.dsk 6 0 HR_LEVEL1 0 0 + $(DOS33_RAW) hr_lemm.dsk 9 0 HR_LEVEL2 0 0 + $(DOS33_RAW) hr_lemm.dsk 12 0 HR_LEVEL3 0 0 + $(DOS33_RAW) hr_lemm.dsk 15 0 HR_LEVEL4 0 0 + $(DOS33_RAW) hr_lemm.dsk 18 0 HR_LEVEL5 0 0 + $(DOS33_RAW) hr_lemm.dsk 21 0 LEVEL6 0 0 + $(DOS33_RAW) hr_lemm.dsk 24 0 LEVEL7 0 0 + $(DOS33_RAW) hr_lemm.dsk 27 0 LEVEL8 0 0 + $(DOS33_RAW) hr_lemm.dsk 30 0 LEVEL9 0 0 + $(DOS33_RAW) hr_lemm.dsk 33 0 LEVEL10 0 0 + + + ### @@ -135,7 +157,23 @@ lemm.o: lemm.s zp.inc hardware.inc qload.inc hgr.inc \ interrupt_handler.s keyboard.s \ pointer_sprites.inc particle_hgr.s release_lemming.s \ title.s audio.s letsgo.s load_music.s - ca65 -o lemm.o lemm.s -l lemm.lst + ca65 -DHR_VERSION=0 -o lemm.o lemm.s -l lemm.lst + +#### + +HR_LEMM: hr_lemm.o + ld65 -o HR_LEMM hr_lemm.o -C ../../linker_scripts/apple2_6000.inc + +hr_lemm.o: lemm.s zp.inc hardware.inc qload.inc hgr.inc \ + graphics/sprites.inc \ + intro_level.s update_time.s draw_flames.s \ + draw_door.s move_lemming.s draw_lemming.s \ + update_menu.s init_level.s \ + interrupt_handler.s keyboard.s \ + pointer_sprites.inc particle_hgr.s release_lemming.s \ + title.s audio.s letsgo.s load_music.s + ca65 -DHR_VERSION=1 -o hr_lemm.o lemm.s -l hr_lemm.lst + ### @@ -312,11 +350,67 @@ generate_common.o: generate_common.c graphics/graphics_test.inc: cd graphics && make +#### + +HR_LEVEL1: hr_level1.o + ld65 -o HR_LEVEL1 hr_level1.o -C ../../linker_scripts/apple2_9000.inc + +hr_level1.o: hr_level1.s zp.inc hardware.inc qload.inc lemm.inc \ + release_lemming.s \ + hr_graphics/graphics_hr_level1.inc + ca65 -o hr_level1.o hr_level1.s -l hr_level1.lst + +#### + +HR_LEVEL2: hr_level2.o + ld65 -o HR_LEVEL2 hr_level2.o -C ../../linker_scripts/apple2_9000.inc + +hr_level2.o: hr_level2.s zp.inc hardware.inc qload.inc lemm.inc \ + release_lemming.s \ + hr_graphics/graphics_hr_level2.inc + ca65 -o hr_level2.o hr_level2.s -l hr_level2.lst + +#### + +HR_LEVEL3: hr_level3.o + ld65 -o HR_LEVEL3 hr_level3.o -C ../../linker_scripts/apple2_9000.inc + +hr_level3.o: hr_level3.s zp.inc hardware.inc qload.inc lemm.inc \ + release_lemming.s \ + hr_graphics/graphics_hr_level3.inc + ca65 -o hr_level3.o hr_level3.s -l hr_level3.lst + +#### + +HR_LEVEL4: hr_level4.o + ld65 -o HR_LEVEL4 hr_level4.o -C ../../linker_scripts/apple2_9000.inc + +hr_level4.o: hr_level4.s zp.inc hardware.inc qload.inc lemm.inc \ + release_lemming.s \ + hr_graphics/graphics_hr_level4.inc + ca65 -o hr_level4.o hr_level4.s -l hr_level4.lst + +#### + +HR_LEVEL5: hr_level5.o + ld65 -o HR_LEVEL5 hr_level5.o -C ../../linker_scripts/apple2_9000.inc + +hr_level5.o: hr_level5.s zp.inc hardware.inc qload.inc lemm.inc \ + release_lemming.s \ + hr_graphics/graphics_hr_level5.inc + ca65 -o hr_level5.o hr_level5.s -l hr_level5.lst + + + + + + #### clean: rm -f *~ *.o *.lst HELLO LEMM LEMM_TEST generate_common \ LEVEL1 LEVEL2 LEVEL3 LEVEL4 LEVEL5 \ LEVEL6 LEVEL7 LEVEL8 LEVEL9 LEVEL10 \ + HR_LEMM \ + HR_LEVEL1 HR_LEVEL2 HR_LEVEL3 HR_LEVEL4 HR_LEVEL5 \ lemm.inc qload.inc - diff --git a/games/lemm/hr_graphics/Makefile b/games/lemm/hr_graphics/Makefile new file mode 100644 index 00000000..634ac19c --- /dev/null +++ b/games/lemm/hr_graphics/Makefile @@ -0,0 +1,139 @@ +PNG2RLE = ../../../utils/gr-utils/png2rle +PNG2GR = ../../../utils/gr-utils/png2gr +PNG2HGR = ../../../utils/hgr-utils/png2hgr +LZSA = ~/research/lzsa/lzsa/lzsa +B2D = ../../../utils/bmp2dhr/b2d +HGR_SPRITE = ../../../utils/hgr-utils/hgr_make_sprite + +all: graphics_hr_level1.inc \ + graphics_hr_level2.inc \ + graphics_hr_level3.inc \ + graphics_hr_level4.inc \ + graphics_hr_level5.inc + + +#### + +graphics_hr_level1.inc: \ + hr_level1.lzsa \ + hr_level1_preview.lzsa + echo "hr_level1_lzsa: .incbin \"hr_level1.lzsa\"" > graphics_hr_level1.inc + echo "hr_level1_preview_lzsa: .incbin \"hr_level1_preview.lzsa\"" >> graphics_hr_level1.inc + +graphics_hr_level2.inc: \ + hr_level2.lzsa \ + hr_level2_preview.lzsa + echo "hr_level2_lzsa: .incbin \"hr_level2.lzsa\"" > graphics_hr_level2.inc + echo "hr_level2_preview_lzsa: .incbin \"hr_level2_preview.lzsa\"" >> graphics_hr_level2.inc + +graphics_hr_level3.inc: \ + hr_level3.lzsa \ + hr_level3_preview.lzsa + echo "hr_level3_lzsa: .incbin \"hr_level3.lzsa\"" > graphics_hr_level3.inc + echo "hr_level3_preview_lzsa: .incbin \"hr_level3_preview.lzsa\"" >> graphics_hr_level3.inc + +graphics_hr_level4.inc: \ + hr_level4.lzsa \ + hr_level4_preview.lzsa + echo "hr_level4_lzsa: .incbin \"hr_level4.lzsa\"" > graphics_hr_level4.inc + echo "hr_level4_preview_lzsa: .incbin \"hr_level4_preview.lzsa\"" >> graphics_hr_level4.inc + +graphics_hr_level5.inc: \ + hr_level5.lzsa \ + hr_level5_preview.lzsa + echo "hr_level5_lzsa: .incbin \"hr_level5.lzsa\"" > graphics_hr_level5.inc + echo "hr_level5_preview_lzsa: .incbin \"hr_level5_preview.lzsa\"" >> graphics_hr_level5.inc + + + + + +### + +hr_level1.lzsa: hr_level1.hgr + $(LZSA) -r -f2 hr_level1.hgr hr_level1.lzsa + +hr_level1.hgr: l1_sb.png + $(PNG2HGR) l1_sb.png > hr_level1.hgr + +### + +hr_level1_preview.lzsa: hr_level1_preview.hgr + $(LZSA) -r -f2 hr_level1_preview.hgr hr_level1_preview.lzsa + +hr_level1_preview.hgr: l1_preview.png + $(PNG2HGR) l1_preview.png > hr_level1_preview.hgr + + +### + +hr_level2.lzsa: hr_level2.hgr + $(LZSA) -r -f2 hr_level2.hgr hr_level2.lzsa + +hr_level2.hgr: l2_taran.png + $(PNG2HGR) l2_taran.png > hr_level2.hgr + +### + +hr_level2_preview.lzsa: hr_level2_preview.hgr + $(LZSA) -r -f2 hr_level2_preview.hgr hr_level2_preview.lzsa + +hr_level2_preview.hgr: l2_preview.png + $(PNG2HGR) l2_preview.png > hr_level2_preview.hgr + + +### + +hr_level3.lzsa: hr_level3.hgr + $(LZSA) -r -f2 hr_level3.hgr hr_level3.lzsa + +hr_level3.hgr: l3_hstarmy.png + $(PNG2HGR) l3_hstarmy.png > hr_level3.hgr + +### + +hr_level3_preview.lzsa: hr_level3_preview.hgr + $(LZSA) -r -f2 hr_level3_preview.hgr hr_level3_preview.lzsa + +hr_level3_preview.hgr: l3_preview.png + $(PNG2HGR) l3_preview.png > hr_level3_preview.hgr + +### + +hr_level4.lzsa: hr_level4.hgr + $(LZSA) -r -f2 hr_level4.hgr hr_level4.lzsa + +hr_level4.hgr: l4_bubs.png + $(PNG2HGR) l4_bubs.png > hr_level4.hgr + +### + +hr_level4_preview.lzsa: hr_level4_preview.hgr + $(LZSA) -r -f2 hr_level4_preview.hgr hr_level4_preview.lzsa + +hr_level4_preview.hgr: l4_preview.png + $(PNG2HGR) l4_preview.png > hr_level4_preview.hgr + +### + +hr_level5.lzsa: hr_level5.hgr + $(LZSA) -r -f2 hr_level5.hgr hr_level5.lzsa + +hr_level5.hgr: l5_trog.png + $(PNG2HGR) l5_trog.png > hr_level5.hgr + +### + +hr_level5_preview.lzsa: hr_level5_preview.hgr + $(LZSA) -r -f2 hr_level5_preview.hgr hr_level5_preview.lzsa + +hr_level5_preview.hgr: l5_preview.png + $(PNG2HGR) l5_preview.png > hr_level5_preview.hgr + + + +### + +clean: + rm -f *~ *.lzsa *.gr *.hgr + diff --git a/games/lemm/hr_graphics/l1_preview.png b/games/lemm/hr_graphics/l1_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..f43bd8fa2b3a3e0edcae894ba736267e4d95f146 GIT binary patch literal 1592 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 P00000NkvXXu0mjfGlJYc literal 0 HcmV?d00001 diff --git a/games/lemm/hr_graphics/l2_taran.png b/games/lemm/hr_graphics/l2_taran.png new file mode 100644 index 0000000000000000000000000000000000000000..0a3b2e65898c916db9fec03f4aaf7343a738b128 GIT binary patch literal 28429 zcmV(rK<>YZP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O3^gvgJ6EWdFH}S^|j~%K-sUq<7HE?{jcHA~S1f zsU9*i!rh80HKFZI;J;5Y65{qH^heeQJr z`};%t^SkF?e}2tB@3{j%iu@XXf9&DU&o@8k_s^d{_dj3q{Pp_3KIrdn8vHK*<1fbe z^Yiy#fBydYz|j8v2mQH%`24>4UVq;3=YwMSb4BU*=lSP~N^kXFZf*U!H(vPrQTxZg zDb`SOd1~UnDcrS|&hJ~eQ)NAu7aHsDeb>2cf6)JY(4Rm5_0qsKg&m)G^WPZ%TxIm% z5C^{|{`s|i-^*{ajlmGglzy2cr{r%yezq!pn zzYG8R^Jk~{&r5Or^LBsVYTvnO?qa0ET9iLG_17()-|@QFRXp!1{8R7Z_BVdxKb?Qt zJ?@E3t$T9PUVh)7z}|mPde$?Z@7d?q`AjY`g&iuthA^)X&kq}$)WeJ#L-L>J3pMt* zFpUuBv7r>h-`Db-ukGjSCI@+4_j-6~c=)jA*wX*yKi7Zvh2Q5{dLGx3t$%*|8$6v{ z#r?4T{=&=Hk>~rfsQE1LU;q63|GBS`9n5E$8#g%a_xgRro1cFeS3DaXd12<)->HA< z`tt!S5nr9Tm?yFWcX?ud3RhG^sL#VfHa2K*=^>`@vI9@fVR4Zm#aP%JP6yx3d+Kvu z8glsk7*vhviaC~8*_$2*o0U?=erjsi(8w{ToO8*5a_)JQSUh>9)FM2O8f&V#mRf7O zYOkZkmRfG5)z(^XqlX@W@7y`3z4hM5;7bReJb3ru1!KJ7jc>4|UVY_E{dr}JSoO^~p;#B0o zMP@f=J?wJAjPLbCpmXxhd_1SOUY{$ItRh^4nfMAc`N_&luZ5eaa!t(4^xvAO~%aOjm*DSr4 zuT&0x892Pg_pw_0Do=@hzB|>qTAWSo> z0{anD`2w5Y!^dfXVPscrvIlK_>>MUL_RZT^k+tINeR^K;+wc2b-+Zv3zAG@+ zRxTY=@~s-lhofpUV=9<7XK>vq$64cxs{!TM2|oPYdyllP(grWCd9?lUmmIE;5?~m= z_kDR^XLn#ESbZvUV5?8(vj9h~;_d6fvjq%HA(b=jBzIbKJwu@AAZadGGYj z9rD8#mp4|ny<_Vb#&cmK+$Ert>&ua;mCG!lG_e19;Dt3jsZ^k=z(4cHrpy6^h21*RK* zz4sUPU0yfseRF$?AHCbhH=UJT+(68`);weD^Oh&%dk+ku?e(=+BkdeoR;I2rxY@+p z6UN21hi}IBdA|Wz)Db2?@uas@kc_R_?7`uLx0uP&W183E$~nf1YiuAvtsGhqBK6yU z!+gqq0b$PX2Pn0IEfww{-tPyG!B$#G-&pkmD>Gm7J}r;+jTdISUJSo}i^cx-cy{FE zmD0y9+!Y{Y0R6oJh+09y4-?L{^VSyF(L6^70JldV)e_qS zLlKhUbiD@_??mG;iX|@Y((t(gJR2P|%-d=Y!X ze!PgCzS#H6VFL%-e&Y^t6^s(Ui4VeVu}V%zxZBkxdx#ab8@|~%X)F~B_~ftwQWghJ z+SXvR#`|&BH%q-L%Y|QE0k4I3`C5z@O!|#N9%vD;xgA*$_Yg-q54NvVTjVgV{UH0k zyKNlh;5spjxji*_qjD|iEaWSG@xAk6TZ&ver|wlet8zM6Az-So^qBt(V|yzrS%7y| zzk!Q*{P!xapU!@ZJYQLF?07=X>IR`JN1jVfxEM^V@e3~p(bn_M&<7@2L0--@XKni{ z{P+2=UZ}#lfmn8@%#uJd+;azY`*&}=H?{&m;o`Z*j9UsCY{Dq|cVW*DjvUXOfr%{r zSQtyL6)XFoY7zIB;2-V9-QW_^!VESHsd!I#6TB9?4)f2W27FV+ac-R5fqpi3aqjVE zmfq@w=hIDuUEway<9VjsQ;3o$tZk7YC-{sIf+1IVXG~ zmi|J6aGFsu^;~QgrzIzDyLjv0_EJ~kj+)T#!9gK|t`Dw0K>-JJnA4AYNEO2lEMUa4 zbA%P`g<8M&&g@|hRI6rI)&yzPq6>-T~ zoyTN3Y%f^2pTgBtuI`34H26rxXaRa$1pt>4coZU+(83EJ!D7O!Avb}2<4hNq%KIS~ zSb!X7bgu)alZ=?h|r9f2Ka=D#GWUc)uBVUrI%y(`I!N9 z8aKxkyDAmuP`TJz`n3%&tPprVtP*YslVb<45)*(~8(w!wTb6zUYQ^?XNFN5+ zpNvQ41g`P!7itY3#{Y0EI#*Tj0r}aPC4k)W;#cf@*xnC|oyp9B1)X zNH}!%!G1L;juZ}Uz7cBOp(PnG=YJ*oM>#9h`nm^unORHx?}oZXz#n#xXsVovhh>Ms z7C{gv4Wy*{0o|AkN9=80V{mP7*|>N}Q{~LCFfuayqCU7ugIhv+U@9xYRUjt3jnf6m ztE?gN3eG+7F15^yb$}p5Ab8x7y%`fa%lAdD9%Rh=Rm`_RtpcYRVl8EWvfp;GWwk-xvI93?&+%9-Tn0sM%FfPv`(!Rfsqg52u) zV*Fehol^x(RQ^L=LH^;pVWl8D93C*l@h%q@U@Nc>f9X438LWroym+j-AY(0VT-*|+ z-U*^S-{T>GFQH4ZgTV!HzHw&gM$j%pY(e_>3I_brF=VkjL&R>lAqs`_sTl>}wMMuO zN^D|`2s|WZQb4fYtJRO4?eT)>B)ANmBybWTKOB_GTY(_nCt)$*45CHBMii9bQdoCc9 z8@YBLnlhh+k_(_DN4Uyw_XsZs6#4loUK_Q;huL@V8^_Wi2pA{tx&navpso;d z`}oPANp@BUOTY%fXgpL8&-_(RGBhQ=<^GTz z023dCa`@D2xH1kF!eW4&&;~XQxICtZ+Xeuxn`PvBH%k6;!5#}&K1bs8uxjjnY8(Q19S0*JNp8Uur>Wc1 z3*lklkB|)Z@nZ3z>Vbuo_cxB@z}4cDQukAD2ni=OyvCy-p9j8JN|p(S%qfFfKs`{| zizAC#V^`GRm<~pVgM%r*9q2gmwvBRv^Nc>EF@X6eZXp9OIQ%K(ca#fscX#*@{2+D! zhk$6~06+r(ix&f6d=toEAYmbM@MEYbZiMsp;15}an_I&J&1jAQ0IfI=D4OR42~uVU zH&F=p2bXnoa9ENLh;dK}@Xf3Sp6LtW;ywqe1H6ca^HD^%E-}0>9FAkO#)tRB%HH)s zxrSTM&U55&j%7c1EX)uG3CA9)%9zz(--KsDlOQM$5P{FxU5D~X7J$|ls)1ky%DDh` z6v4_RaUsCS?ctruH87{Kl!LoJTm-?4<%Iif-=2u{?_)JMZrC$ejZI0jA$FX?eP0+c zZv{T(WSlpU5O>`X&^kXZdhF9=7vES_#?}napn*#JPt3+?Meg6*8%Z0K)7$S z3dleY09OVl3{ma(LUIEzzoU-id8Wz+Li-r~;zHKAkbSV(H5$8_401G?z*Dh$nBrbp z?TeF!ra*uezJy!pb>kN?H1G#22LcfWnON)gVUbI2B|@4=e}zk5!yEM-aIM9>QsHBppN_H;1)=mypp| zKoLC%pO%x$iq%4+xJ)xQup;;gf3FF0dT|Q~aVSM&U(kRCuV6h_;l*eI(5MXjmLh?5 z=QEMe4eGF1Fqq(kPMghpV79#>_#m$hIO1Lw$C5Q#(h|I@5ieNz6nxrYopB=i_x@<3wm$@;OhA~+?Az{#+~u1 z7;r_P&u7ASAQ9?37PEbbugzz}4LMQ>Kv*2#_OTvtJ>cRo_w-@Zup)hl@rr7KF`4h0 z@azRamnnc2EEure@qQ@x8yJMx@!A%i5kFMdjkrHd8;C?H!B@b2km3Hu^`Q81{Com* z9t?z*aV9uDY|=*2ViAT5A}6S+5u&Lf9XuvBQD(tN*AC-C{OfE`U%f)AagS`zE+{@- z;)f;23hCsgTH^2lo^zn2AaQ&#PKooFb6xe~*nN|;GPjy6-s<$lrW6GdD+*L_;t*;x za+*3m3athgdEUfcJ`Gb~7gD{DWBCJ+kU_!~2$-><7iiKpk->Lv!=D=lC~PG#_;4^f zryui1TbCg$UpJSFkU^I6!@{}QFq5jA08cOl3?40yOWjaOTX^}d8IgnSf|0*9q3 zO#|{dwQ33h=fgKV9I}BN+3>+n9aE8?6`QXp2LQO0i!<0C@cZK`V>nq#D9eXeLTNvb zvAY{^dJ*w4Kx3Y6j2O1^9-V`_#CMh^(UN~=Ocs*N?c-4}oyT+%-oML1F#7jov0wgB zCMSbafbiq&blDYV4jXB(d?QkPDUuB^y;(@G4AFv>%<%9nhRVY*=4wFW$*XxhSYf^t z9tBB@Y(Fe0Z%_ie$5J!S4j0`4?(Lz6AMjF@9cK`lm6yTn1qp{lfCgRo=5F_eJ#JOm z3vW!QV~HiqVCni2fCeYV=VjSX1jKnA3GtRl=UeJc{^8F0t z1qY@Wr4_&0Ag^Ekm*oCBZ^g@ft|3{eQkl=8~PAE_znQDK^TD1hJ!2v zig-(ABibCS%)7t=5&Af4SZ=C#Qcm@QN``?v2t}?7#(`aL<4TBnY^7hkXTYot%VX>N zhGqkbTOW5+2)e>Rg&!D-q26ZJC2>T!B$HH7P4Eccua7bygFCGSQUo*G5Map=>y|w( zIZ2n2dA@-610;u10tpN*!1xllbwLU^=nyl6-{O^qJzy)CDPlW*W*q|OEewf4du{`( zTnMi>S(~y&8Q4s_0{8x`T}^01(^+N!v7FnN*lk!}1EXd14ZXVI`uXY5Fm4qY9^?`# zuL~su9ZsM#J}lfO_+--$(D=RTnrDd15NZW1N(e%^xF~=LS(lCb;W_%cApMZf@D%f5 zPsavEoQR{81BTvyVH=ZQgDvN7ar6U}tuuL$xE!-0(EO|8u|R-{U*KC%w+m?F#NLAw zi#HF3?~HYn!*!o=(wNI2B%fCn-Ys;{?Sf9g!HlvsBc}Bp=l43z^~oM5`i%n#IDG8J zqr-uUKM)+w4D|Gg8K*U_H?dQ_K}cfw_Ag5NJx3M1OHzOIEq}}LL36^b){XN(ZQeou z-!MA>u3S4KDJ${?js%*)sg!OnBnAa^Y5R9&2?-;1|`=56mCd zSkCt5cQxQK9V%RK`U%Hr$PkFd9X0R^@qVM44Je8EeR6&dslTCqh!L&_-33E@?r8jv zNwPQ(=z75e-#ug$_=pGZ zHvy^Da)XP*JO;GrGM~(fa!q&^6A9|$f`5nl_ORNXQNj&A@rj?Ojy+rD*1L`eU*&m5 z-Cocrqz{*jUpJKWbpz&)>8m@o;|UNP+x(U=uM6R}@>aIhJ z#tZ>$01k41f4Q5o4VHqsiR%O@5n>m#Cz~7KTp^pE4HurKhM_NSGapi&fzcK}@8j zDg6Nx$Sh4aFI;i1=EtxGfTbxLIh6P+j!odezyZ>fSU>Z6MFjY?r3L^8^bP%lVX`Lk zPH;YX43>rs0fy0B4X1NO(|(AY3GqaY#&Si&I0?t4*Wyl!*>3QSpWoart`3X&&l)EtE`)U(I z;4a4CbYUcr=G)L#!v&~9F@wlAV9k~(+-TTgBKbps^0_B@%~h1=0tK;sba?|;wznC~ zGe0JoABFD?Dl8ly?03u$d_~3?h6E4U(q?AFGP8?I!2W9<2?_;!fbCfagFX9Iq zj1%|*b1_rQ6>9UXZ*mO1F<@4bvG5|?R2xb?yv>)`XA}5pmKTR~n_%X!XSpOQb#dte z@sTv3WUqz>7YOvCvfqaJ7bRPGWM5XzV5?k@F#$-EVh{fCEkF}e79q!X*Ux@1-xukC zYke+&5nmq74i$DLCBu;@ebxbl#^YOWpk>6clr0zl93a2ub3P6Zqyk&6@j_E@k73|3 zB%_Dt&9T00`H683NDrnE9<$OM!g^eKbN!7_M~Nudj_|YO2}1m){jxN<>#K1i6S{Na zP>3A#IB*r9eV|qN7Vf23&Dz5OfV}(7w%kL*#)z?9KoX z!m4`eF}3Sg%>#i4t80h5fXb@(TYjR0Gfv*3X3T;VRvS0+Dy<8o7UeeNMHwl&S=}_? zdI%Lhi>+xmu_UjKp>LK$gbMX*((ZDoHS+T$6_l%}x3&;93t0ucz?%(LU^>PXj3luT zoWF=fLpMBq8JxEkEO}@8EKU_Sg4-T9gy%xb%i#g_rL$t4Sn!Dm`IP#aHpEr;1WZPJ8KAv!t`V02e3he23=bNvZHLod^=&v{k}M)gww!Sy7C!&>M9mUCkXa%Dw_!a{@Os4U%H>Km1+P&8$(XP z5pKgkHzc!K5I4=v8)F4mR6_ML=GqSZg88CF_^t-+Fn^cXv`Cd2^n zc+;PBE&nk=^PZHO$$#-k2@eS|9Q_QdIWBZbxxq?=#I0Hk#(-lvb%a1RD`yqOM4N?; z#~slA()n9+y{Hq&ay_tmy#d#apEjU}n2h4ml9s;!B}N={1-B(66+=)vK`PlRm88*^ zVLb<*ipp*l5Aq{`BbnFbE27m#C=(b9Gz#N*pC*#wUok<*Vrr0coIS2#sSRtrFu+qH z*a7h`1u$6lj??@G2y78!L!xGo#7y@idX$YFRZBLwPsrenK!}$K=g|8?l4U(&mF$&b zwI15xgI)sC1$X)YGq1{apn#yW2aPNYN_Ft%m+Hyf4OfHuhKEfkPelCUJCHwE*Ubu` zcIGL*2cnGUOe-xg=%-?9aadM;3bG(a+jzjtrJ%GoUs2mq$D7DBP?3uXNeCiZ7e0wY zR{JayuJ=YrJ{Rw3+j<7x1jvmwfHKgM+cpMWOaktF0#kCBllurKG|rddADZQ{CdHez z$P;4keoxu#-6bml_{xwgP#O=&cVQZDe6?Z}3XTRggA>jV7o8hNgq3IKv0KEtaLv`@ z-Qa1Bm!V?0E7nUe7)Tk6{$(lCcH@eC5eq{t&UEeB*cogNC;0%01`gY8NsN`M_(m(g zIA>E+hIBQ!U%?-}NGTYCaXOsx`mSiGL7R9vwA1(tuL;&vZcBm(rc(_3v1eeCbsGRR zxWdja#MI3_TVy$|7caZ;S%)3H53pysGOD1%PEj1JQ%u$dnHE=#E6XtfGeY3PMmR!z z?{wAu0S{<{1lOn*iZ0`;r=$rC;WALu$NKQT|5d!?y}2U%0A8q{udza$<%Cr&ofR9* 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 ZPr=#H?g?DO#GN6Dmb#u=p$a1C{{S8;tDFD; literal 0 HcmV?d00001 diff --git a/games/lemm/hr_graphics/l3_hstarmy.png b/games/lemm/hr_graphics/l3_hstarmy.png new file mode 100644 index 0000000000000000000000000000000000000000..207e8478a6ead2c278fb945147494c765792846f GIT binary patch literal 2707 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 N002ovPDHLkV1gMv{Wt&s literal 0 HcmV?d00001 diff --git a/games/lemm/hr_graphics/l3_preview.png b/games/lemm/hr_graphics/l3_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..33f0a57eabbc700a1c4fa463f5546b62ecc95718 GIT binary patch literal 1770 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 J#ddPSe*oT&nx+5% literal 0 HcmV?d00001 diff --git a/games/lemm/hr_graphics/l4_preview.png b/games/lemm/hr_graphics/l4_preview.png new file mode 100644 index 0000000000000000000000000000000000000000..4ae35f198e4a17749d756b4952d63d332f087de0 GIT binary patch literal 2183 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 MBb~4FY`xM9g^8f$< literal 0 HcmV?d00001 diff --git a/games/lemm/hr_graphics/l5_trog.png b/games/lemm/hr_graphics/l5_trog.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e17eadd308e6a34a808d619ddfc3ee1d787752 GIT binary patch literal 18802 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

-(ujuCH%kD_5T}PX#csVgF3w~^t@kp zZ0MP)UtV{6Bx*`p(y!m-ldxZb&o3`8(}u9*InS`Lu+PuWO$PMauYIU4a{BJCqDrrC z57>eVF`Cy#WDj{|Y2+gWTtZg7%teyt*CtXAX*~}~XUD%b3ow7LVWE~Z-nJe#G=HsO zb%U{pVPH_2q*+@TPmFS2^V6Tz2Q`ijJstDpJhU}7Mc zA+aU$t+WDCxg{pp_bZrD+|z;(t@QNtO6|j8>krmVXPa7d2fORHygy<&nC;SKdG`RO zMi~ZN$T+V_hdD6v#(vG29QL(dr?G5fXs%`BmdlZph!(>4|7Oy+m)`5sS}OX3VNZ{=duanrrokqJ>nC&e*wq7cc( zZ%cdQ64c>-ms$5S)VA+n-F~rMynbfGNo8+ol1NysUAJL-$r*l6NQQ~#?!pO-j3O_> zP&5xDMB0T*X>tJp0+>{Kpf_j5Sj95s$XbJVgoV|aJ^}EQU`gndBIjAClLu>lB{A`O z_$YWo$_CSiOTt*@jq4RyJ1qzMJMuLSHYhONYk+O2=@eP&T3Lt^(>hyD9VLpLfR76d zi+TOK_GWYsU|WDbw5^?Kp-ZuWLj3iZ2KzZ}94u|AQBI4~11W~PR!yQznu(#nHR*Qt zB@e+)GPWYU1KqHa;_oe+WmDB)?h6L^&}9$Uwur-xdd%Sz6vYo#+zp;TNTJX%}1bbf1g1d7)x-rxND(>%L>biclphIE zme&UdAY5uSMF}zoM+o?Ys~>Q3%H&Vh!^~*NBBo2nbL^hQe{bz*9rZ`q0))vRWO7dy zRoe)f`--GrHivd6yblc3KyS-2;e0i)LV1<^NtYR2`I{jwSH^OLR%MByn%GEaW(#`# z{G@O?KbL5>l^TJ86lDYJ0PYE!EYr^bPd)#MM@4ln1G9zRucdfX2sgwdKJgYGhD{!@ zkP<>q<+7DC{W+1Db$@*VOkg(MUdNsgjJjsrOl*66X?1;EP{Y7r@{l<&!!kN*FV?cf z>##J!j`b6rN_pYZKuUpV70n{J6oxUWW=rNUq=jnfq9bX9N9!D!_81v3)_+v;Mda%* zUVxyn#h>-7_)b`sZD~SjG_!}n%bxRJe+B+5mDf5d2;4VY7&}j2AWonn1AjLhA$fy7 znnpD>M341g`y4gLNF3p*j^mR>iQ&93oXbw)PE?TIu1DWTY^0Efn0ClJ;s0F(bCz2B zn)RBqa`C=NB6sQ|5f%SkBas1>Nf~-7YRRxhyUy6e0M{kGFMtj^!bc~*f_FNo;Hy}* z+CxpFFv)H)&PFJ|oK$jT)9eQ%i)HcFVN7MiEJArGK$AzGAX}>O8DTaI_6>LE3sV`u zIfvHkH-N8>$y1N?8!#`d01Li>IAVjtKbYs*iPs`k5M{)|?HJEX?bwRTyeRKx-$Mwo z97opRm6^za9R9;Mk2AACN1Pwco9IZ-W3dS_UP-<;#^Y35XP!N^#wzdUl@5fAK5=z8 ztCffrk{0rRW`CBgkDBw)ouqXol%(%_=(&dAJT+r(^& zZI%9n{?@-gkG+OepiPy=vjcF<=b3@s=ol?z<)$WS46Ec> z#k+BlwmN`y-A{l~6A_|;s9CWB3|xU99rcxStr4xd37& z0wt3y!S+=Xn-@VCUjWlA!w?V|fQYpzJ9zUh3zEY)1Lz4qRWuWAuqXI1kR^Q3f3vRa z`QFV;t+Sr2oMHCFXk|RhfTY|VLgtYJk8ZJ1o^n)}T-5S|Vb%e%gob3C6>=0rDqs)7 zac25i2ayNnTa+WctmNleY8G&AX~F5tJj5J|A5R`j1Kecw4SL<5?mbMM0`88JjnjUY zCpXu@@z#AiA2H@PlEQO;TS+LK4lN_bK zMR|FAXz6gceQ;y;H)%U)<4}qhF4nY>84!Uc=hO4to&}4Ftv0P5`QG^SpUYJ YRN8gw?MixlUE;vVORGrLNtlKFAE28_7ytkO literal 0 HcmV?d00001 diff --git a/games/lemm/hr_level1.s b/games/lemm/hr_level1.s new file mode 100644 index 00000000..061eb3cf --- /dev/null +++ b/games/lemm/hr_level1.s @@ -0,0 +1,298 @@ +; Homestar Runner Expansion Level 1 + +.include "zp.inc" +.include "hardware.inc" +.include "qload.inc" +.include "lemm.inc" +.include "lemming_status.inc" + + +.byte 1 ; level 1 + +do_level1: + + ;============== + ; set up stuff + ;============== + + lda #20 + sta CLIMBER_COUNT + sta FLOATER_COUNT + sta EXPLODER_COUNT + sta STOPPER_COUNT + sta BUILDER_COUNT + sta BASHER_COUNT + sta MINER_COUNT + sta DIGGER_COUNT + + lda #3 + sta DOOR_X + lda #2 + sta DOOR_Y + + lda #6 + sta INIT_X + lda #12 + sta INIT_Y + + ; flame locations + + lda #18 + sta l_flame_x_smc+1 + lda #108 + sta l_flame_y_smc+1 + sta r_flame_y_smc+1 + + lda #21 + sta r_flame_x_smc+1 + + ; door exit location + + lda #17 ; + sta exit_x1_smc+1 + lda #21 + sta exit_x2_smc+1 + + lda #97 + sta exit_y1_smc+1 + lda #130 + sta exit_y2_smc+1 + + lda #$10 ; BCD + sta PERCENT_NEEDED + sta PERCENT_ADD + + ;============== + ; set up intro + ;============== + + lda #hr_level1_preview_lzsa + sta level_preview_h_smc+1 + + lda #level1_intro_text + sta intro_text_smc_h+1 + + ;============== + ; set up music + ;============== + + lda #0 + sta CURRENT_CHUNK + sta DONE_PLAYING + sta BASE_FRAME_L + sta BUTTON_LOCATION + + ; set up first song + + lda #music5_parts_l + sta chunk_l_smc+2 + + lda #music5_parts_h + sta chunk_h_smc+2 + + + lda #$D0 + sta CHUNK_NEXT_LOAD ; Load at $D0 + jsr load_song_chunk + + lda #$D0 ; music starts at $d000 + sta CHUNK_NEXT_PLAY + sta BASE_FRAME_H + + lda #1 + sta LOOP + sta CURRENT_CHUNK + + + + ;======================= + ; show title screen + ;======================= + + jsr intro_level + + ;======================= + ; Load Graphics + ;======================= + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables + + bit SET_GR + bit PAGE0 + bit HIRES + bit FULLGR + + lda #hr_level1_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$20 + + jsr decompress_lzsa2_fast + + lda #hr_level1_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$40 + + jsr decompress_lzsa2_fast + + + ;======================= + ; Setup cursor + ;======================= + + lda #$FF + sta OVER_LEMMING + lda #10 + sta CURSOR_X + lda #100 + sta CURSOR_Y + + ;======================= + ; init vars + ;======================= + + lda #10 + sta LEMMINGS_TO_RELEASE + + ; set up time + + lda #$5 + sta TIME_MINUTES + lda #$00 + sta TIME_SECONDS + + sta TIMER_COUNT ; ?? + + jsr init_level + + jsr update_remaining_all + + + ;======================= + ; Play "Let's Go" + ;======================= + + jsr play_letsgo + + + + ;=================== + ;=================== + ; Main Loop + ;=================== + ;=================== +l1_main_loop: + + ;========================= + ; load next chunk of music + ; if necessary + ;========================= + + jsr load_music + + + ;========================= + ; open door + ;========================= + + lda DOOR_OPEN + bne l1_door_is_open + + jsr draw_door + +l1_door_is_open: + + ;====================== + ; release lemmings + ;====================== + + jsr release_lemming + + ;===================== + ; animate flames + ;===================== + + jsr draw_flames + + jsr update_timer + + + ; main drawing loop + + jsr erase_lemming + + jsr erase_pointer + + jsr move_lemmings + + jsr draw_lemming + + jsr handle_keypress + + jsr draw_pointer + + lda #$f0 + jsr wait + + inc FRAMEL + + lda LEVEL_OVER + bne l1_level_over + + jmp l1_main_loop + + +l1_level_over: + + rts + + +.include "update_timer.s" + +.include "hr_graphics/graphics_hr_level1.inc" + + +music5_parts_h: + .byte >lemm5_part1_lzsa,>lemm5_part2_lzsa,>lemm5_part3_lzsa + .byte >lemm5_part4_lzsa,>lemm5_part5_lzsa,$00 + +music5_parts_l: + .byte hr_level2_preview_lzsa + sta level_preview_h_smc+1 + + lda #level2_intro_text + sta intro_text_smc_h+1 + + lda #$20 ; BCD + sta PERCENT_NEEDED + lda #$10 + sta PERCENT_ADD + + + ;============== + ; set up music + ;============== + + lda #0 + sta CURRENT_CHUNK + sta DONE_PLAYING + sta BASE_FRAME_L + sta BUTTON_LOCATION + + ; set up first song + + lda #music2_parts_l + sta chunk_l_smc+2 + + lda #music2_parts_h + sta chunk_h_smc+2 + + + lda #$D0 + sta CHUNK_NEXT_LOAD ; Load at $D0 + jsr load_song_chunk + + lda #$D0 ; music starts at $d000 + sta CHUNK_NEXT_PLAY + sta BASE_FRAME_H + + lda #1 + sta LOOP + sta CURRENT_CHUNK + + + + ;======================= + ; show title screen + ;======================= + + jsr intro_level + + ;======================= + ; Load Graphics + ;======================= + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables + + bit SET_GR + bit PAGE0 + bit HIRES + bit FULLGR + + lda #hr_level2_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$20 + + jsr decompress_lzsa2_fast + + lda #hr_level2_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$40 + + jsr decompress_lzsa2_fast + + + ;======================= + ; Setup cursor + ;======================= + + lda #$FF + sta OVER_LEMMING + lda #10 + sta CURSOR_X + lda #100 + sta CURSOR_Y + + + ;======================= + ; init vars + ;======================= + + lda #10 + sta LEMMINGS_TO_RELEASE + + ; set up time + + lda #$5 + sta TIME_MINUTES + lda #$00 + sta TIME_SECONDS + sta TIMER_COUNT ; 1/50 + + jsr init_level + + jsr update_remaining_all + + ;======================= + ; Play "Let's Go" + ;======================= + + jsr play_letsgo + + + ;=================== + ;=================== + ; Main Loop + ;=================== + ;=================== +l2_main_loop: + + ;========================= + ; load next chunk of music + ; if necessary + ;========================= + + jsr load_music + + + +l2_no_load_chunk: + + + lda DOOR_OPEN + bne l2_door_is_open + + jsr draw_door + +l2_door_is_open: + + ;====================== + ; release lemmings + ;====================== + + jsr release_lemming + + ;===================== + ; animate flames + ;===================== + + jsr draw_flames + + ;===================== + ; draw level animation + ;===================== + + jsr flame_thrower + + ;==================== + ; update timer + ;==================== + + jsr update_timer + + ;==================== + ; main drawing loop + ;==================== + + jsr erase_lemming + + jsr erase_pointer + + jsr move_lemmings + + jsr draw_lemming + + jsr handle_keypress + + jsr draw_pointer + + lda #$ff + jsr wait + + inc FRAMEL + + lda LEVEL_OVER + bne l2_level_over + + jmp l2_main_loop + + +l2_level_over: + + rts + +.include "update_timer.s" + +.include "hr_graphics/graphics_hr_level2.inc" + + +music2_parts_h: + .byte >lemm2_part1_lzsa,>lemm2_part2_lzsa,>lemm2_part3_lzsa + .byte >lemm2_part4_lzsa,>lemm2_part5_lzsa,>lemm2_part6_lzsa + .byte >lemm2_part7_lzsa,>lemm2_part8_lzsa,>lemm2_part9_lzsa + .byte >lemm2_part10_lzsa,>lemm2_part11_lzsa,>lemm2_part12_lzsa + .byte >lemm2_part13_lzsa,>lemm2_part14_lzsa,>lemm2_part15_lzsa + .byte >lemm2_part16_lzsa; ,>lemm2_part17_lzsa,>lemm2_part18_lzsa + .byte $00 + +music2_parts_l: + .byte x, savey1->savey2 + + lda #65 + sta SAVED_Y1 + lda #81 + sta SAVED_Y2 + + lda #24 + ldx #33 + + jsr hgr_partial_restore + + ; draw new + + lda FRAMEL + and #$7 + tay + + lda flame_sprites_l,Y + sta INL + lda flame_sprites_h,Y + sta INH + + lda flame_sprites_x,Y + sta XPOS + + lda flame_sprites_y,Y + sta YPOS + + jsr hgr_draw_sprite + + rts + +flame_sprites_l: + .byte flame0_sprite,>flame1_sprite + .byte >flame2_sprite,>flame3_sprite + .byte >flame4_sprite,>flame5_sprite + .byte >flame6_sprite,>flame7_sprite + +flame_sprites_x: + .byte 28,26 + .byte 25,25 + .byte 24,24 + .byte 22,24 +; .byte 38,36 +; .byte 35,35 +; .byte 34,34 +; .byte 32,34 + +flame_sprites_y: + .byte 72,71 + .byte 68,69 + .byte 70,67 + .byte 65,65 + + diff --git a/games/lemm/hr_level3.s b/games/lemm/hr_level3.s new file mode 100644 index 00000000..a7698698 --- /dev/null +++ b/games/lemm/hr_level3.s @@ -0,0 +1,304 @@ +; Homestar Runner Expansion L3 + +.include "zp.inc" +.include "hardware.inc" +.include "qload.inc" +.include "lemm.inc" +.include "lemming_status.inc" + +.byte 3 ; level 3 + +do_level3: + + ;====================== + ; set up initial stuff + ;====================== + + lda #10 + sta CLIMBER_COUNT + sta FLOATER_COUNT + sta EXPLODER_COUNT + sta BUILDER_COUNT + sta BASHER_COUNT + sta MINER_COUNT + sta DIGGER_COUNT + sta STOPPER_COUNT + + lda #7 + sta DOOR_X + lda #1 + sta DOOR_Y + + lda #9 + sta INIT_X + lda #12 + sta INIT_Y + + ; flame location + + lda #34 ; + sta l_flame_x_smc+1 + lda #102 + sta l_flame_y_smc+1 + sta r_flame_y_smc+1 + + lda #38 ; + sta r_flame_x_smc+1 + + ; door exit location + + lda #33 ; + sta exit_x1_smc+1 + lda #38 + sta exit_x2_smc+1 + + lda #96 + sta exit_y1_smc+1 + lda #140 + sta exit_y2_smc+1 + + lda #$10 ; BCD + sta PERCENT_NEEDED + + lda #$10 + sta PERCENT_ADD + + ;============== + ; set up intro + ;============== + + lda #hr_level3_preview_lzsa + sta level_preview_h_smc+1 + + lda #level3_intro_text + sta intro_text_smc_h+1 + + + ;============== + ; set up music + ;============== + + lda #0 + sta CURRENT_CHUNK + sta DONE_PLAYING + sta BASE_FRAME_L + sta BUTTON_LOCATION + + ; set up first song + + lda #music11_parts_l + sta chunk_l_smc+2 + + lda #music11_parts_h + sta chunk_h_smc+2 + + + lda #$D0 + sta CHUNK_NEXT_LOAD ; Load at $D0 + jsr load_song_chunk + + lda #$D0 ; music starts at $d000 + sta CHUNK_NEXT_PLAY + sta BASE_FRAME_H + + lda #1 + sta LOOP + sta CURRENT_CHUNK + + + + ;======================= + ; show title screen + ;======================= + + jsr intro_level + + ;======================= + ; Load Graphics + ;======================= + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables + + bit SET_GR + bit PAGE0 + bit HIRES + bit FULLGR + + lda #hr_level3_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$20 + + jsr decompress_lzsa2_fast + + lda #hr_level3_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$40 + + jsr decompress_lzsa2_fast + + + ;======================= + ; Setup cursor + ;======================= + + lda #$FF + sta OVER_LEMMING + lda #10 + sta CURSOR_X + lda #100 + sta CURSOR_Y + + ;======================= + ; init vars + ;======================= + + lda #10 + sta LEMMINGS_TO_RELEASE + + ; set up time + + lda #$5 + sta TIME_MINUTES + lda #$00 + sta TIME_SECONDS + sta TIMER_COUNT ; 1/50 + + jsr init_level + + jsr update_remaining_all + + ;======================= + ; Play "Let's Go" + ;======================= + + jsr play_letsgo + + + ;=================== + ;=================== + ; Main Loop + ;=================== + ;=================== +l3_main_loop: + + ;========================= + ; load next chunk of music + ; if necessary + ;========================= + + jsr load_music + + + ;========================= + ; open door + ;========================= + + lda DOOR_OPEN + bne l3_door_is_open + + jsr draw_door + +l3_door_is_open: + + ;====================== + ; release lemmings + ;====================== + + jsr release_lemming + + ;====================== + ; animate flames + ;====================== + + jsr draw_flames + + jsr update_timer + + ; main drawing loop + + jsr erase_lemming + + jsr erase_pointer + + jsr move_lemmings + + jsr draw_lemming + + jsr handle_keypress + + jsr draw_pointer + + lda #$ff + jsr wait + + inc FRAMEL + + lda LEVEL_OVER + bne l3_level_over + + jmp l3_main_loop + + +l3_level_over: + + rts + +.include "update_timer.s" + +.include "hr_graphics/graphics_hr_level3.inc" + + +music11_parts_h: + .byte >lemm11_part1_lzsa,>lemm11_part2_lzsa,>lemm11_part3_lzsa + .byte >lemm11_part4_lzsa,>lemm11_part5_lzsa,>lemm11_part6_lzsa + .byte >lemm11_part7_lzsa + .byte $00 + +music11_parts_l: + .byte hr_level4_preview_lzsa + sta level_preview_h_smc+1 + + lda #level4_intro_text + sta intro_text_smc_h+1 + + lda #$50 ; BCD + sta PERCENT_NEEDED + lda #$10 + sta PERCENT_ADD + + + ;============== + ; set up music + ;============== + + lda #0 + sta CURRENT_CHUNK + sta DONE_PLAYING + sta BASE_FRAME_L + sta BUTTON_LOCATION + + ; set up first song + + lda #music17_parts_l + sta chunk_l_smc+2 + + lda #music17_parts_h + sta chunk_h_smc+2 + + + lda #$D0 + sta CHUNK_NEXT_LOAD ; Load at $D0 + jsr load_song_chunk + + lda #$D0 ; music starts at $d000 + sta CHUNK_NEXT_PLAY + sta BASE_FRAME_H + + lda #1 + sta LOOP + sta CURRENT_CHUNK + + + + ;======================= + ; show title screen + ;======================= + + jsr intro_level + + ;======================= + ; Load Graphics + ;======================= + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables + + bit SET_GR + bit PAGE0 + bit HIRES + bit FULLGR + + lda #hr_level4_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$20 + + jsr decompress_lzsa2_fast + + lda #hr_level4_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$40 + + jsr decompress_lzsa2_fast + + + ;======================= + ; Setup cursor + ;======================= + + lda #$FF + sta OVER_LEMMING + lda #10 + sta CURSOR_X + lda #100 + sta CURSOR_Y + + + ;======================= + ; init vars + ;======================= + + lda #10 + sta LEMMINGS_TO_RELEASE + + ; set up time + + lda #$5 + sta TIME_MINUTES + lda #$00 + sta TIME_SECONDS + sta TIMER_COUNT ; 1/50 + + jsr init_level + + jsr update_remaining_all + + ;======================= + ; Play "Let's Go" + ;======================= + + jsr play_letsgo + + + ;=================== + ;=================== + ; Main Loop + ;=================== + ;=================== +l4_main_loop: + + ;========================= + ; load next chunk of music + ; if necessary + ;========================= + + jsr load_music + + + +l4_no_load_chunk: + + + lda DOOR_OPEN + bne l4_door_is_open + + jsr draw_door + +l4_door_is_open: + + ;====================== + ; release lemmings + ;====================== + + jsr release_lemming + + ;===================== + ; animate flames + ;===================== + + jsr draw_flames + + jsr update_timer + + ; main drawing loop + + jsr erase_lemming + + jsr erase_pointer + + jsr move_lemmings + + jsr draw_lemming + + jsr handle_keypress + + jsr draw_pointer + + lda #$ff + jsr wait + + inc FRAMEL + + lda LEVEL_OVER + bne l4_level_over + + jmp l4_main_loop + + +l4_level_over: + + rts + +.include "update_timer.s" + +.include "hr_graphics/graphics_hr_level4.inc" + + +music17_parts_h: + .byte >lemm17_part1_lzsa,>lemm17_part2_lzsa,>lemm17_part3_lzsa + .byte >lemm17_part4_lzsa,>lemm17_part5_lzsa,>lemm17_part6_lzsa + .byte >lemm17_part7_lzsa,>lemm17_part8_lzsa + .byte $00 + +music17_parts_l: + .byte hr_level5_preview_lzsa + sta level_preview_h_smc+1 + + lda #level5_intro_text + sta intro_text_smc_h+1 + + lda #$20 ; BCD + sta PERCENT_NEEDED + lda #$10 + sta PERCENT_ADD + + + ;============== + ; set up music + ;============== + + lda #0 + sta CURRENT_CHUNK + sta DONE_PLAYING + sta BASE_FRAME_L + sta BUTTON_LOCATION + + ; set up first song + + lda #music5_parts_l + sta chunk_l_smc+2 + + lda #music5_parts_h + sta chunk_h_smc+2 + + + lda #$D0 + sta CHUNK_NEXT_LOAD ; Load at $D0 + jsr load_song_chunk + + lda #$D0 ; music starts at $d000 + sta CHUNK_NEXT_PLAY + sta BASE_FRAME_H + + lda #1 + sta LOOP + sta CURRENT_CHUNK + + + + ;======================= + ; show title screen + ;======================= + + jsr intro_level + + ;======================= + ; Load Graphics + ;======================= + + lda #$20 + sta HGR_PAGE + jsr hgr_make_tables + + bit SET_GR + bit PAGE0 + bit HIRES + bit FULLGR + + lda #hr_level5_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$20 + + jsr decompress_lzsa2_fast + + lda #hr_level5_lzsa + sta getsrc_smc+2 ; LZSA_SRC_HI + + lda #$40 + + jsr decompress_lzsa2_fast + + + ;======================= + ; Setup cursor + ;======================= + + lda #$FF + sta OVER_LEMMING + lda #20 + sta CURSOR_X + lda #50 + sta CURSOR_Y + + + ;======================= + ; init vars + ;======================= + + lda #10 + sta LEMMINGS_TO_RELEASE + + ; set up time + + lda #$5 + sta TIME_MINUTES + lda #$00 + sta TIME_SECONDS + sta TIMER_COUNT ; 1/50 + + jsr init_level + + jsr update_remaining_all + + ;======================= + ; Play "Let's Go" + ;======================= + + jsr play_letsgo + + + ;=================== + ;=================== + ; Main Loop + ;=================== + ;=================== +l5_main_loop: + + ;========================= + ; load next chunk of music + ; if necessary + ;========================= + + jsr load_music + + + +l5_no_load_chunk: + + + lda DOOR_OPEN + bne l5_door_is_open + + jsr draw_door + +l5_door_is_open: + + ;====================== + ; release lemmings + ;====================== + + jsr release_lemming + + ;===================== + ; animate flames + ;===================== + + jsr draw_flames + + ;===================== + ; draw level animation + ;===================== + + jsr flame_thrower + + ;==================== + ; update timer + ;==================== + + jsr update_timer + + ;==================== + ; main drawing loop + ;==================== + + jsr erase_lemming + + jsr erase_pointer + + jsr move_lemmings + + jsr draw_lemming + + jsr handle_keypress + + jsr draw_pointer + + lda #$ff + jsr wait + + inc FRAMEL + + lda LEVEL_OVER + bne l5_level_over + + jmp l5_main_loop + + +l5_level_over: + + rts + +.include "update_timer.s" + +.include "hr_graphics/graphics_hr_level5.inc" + + +music5_parts_h: + .byte >lemm5_part1_lzsa,>lemm5_part2_lzsa,>lemm5_part3_lzsa + .byte $00 + +music5_parts_l: + .byte x, savey1->savey2 + + lda #51 + sta SAVED_Y1 + lda #66 + sta SAVED_Y2 + + lda #7 + ldx #15 + + jsr hgr_partial_restore + + ; draw new + + lda FRAMEL + and #$7 + tay + + lda flame_sprites_l,Y + sta INL + lda flame_sprites_h,Y + sta INH + + lda flame_sprites_x,Y + sta XPOS + + lda flame_sprites_y,Y + sta YPOS + + jsr hgr_draw_sprite + + rts + +flame_sprites_l: + .byte flame0_sprite,>flame1_sprite + .byte >flame2_sprite,>flame3_sprite + .byte >flame4_sprite,>flame5_sprite + .byte >flame6_sprite,>flame7_sprite + +flame_sprites_x: +; .byte 16,14 +; .byte 13,13 +; .byte 12,12 +; .byte 10,12 + .byte 12,10 + .byte 9,9 + .byte 8,8 + .byte 6,8 + + +; 15x56 +flame_sprites_y: +; .byte 27,26 +; .byte 24,25 +; .byte 26,23 +; .byte 21,21 + .byte 57,56 + .byte 54,55 + .byte 56,53 + .byte 51,51 + + + diff --git a/games/lemm/hr_music/Makefile b/games/lemm/hr_music/Makefile new file mode 100644 index 00000000..6239b651 --- /dev/null +++ b/games/lemm/hr_music/Makefile @@ -0,0 +1,107 @@ +LZSA = ~/research/lzsa/lzsa/lzsa +YM5_TO_RAW = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/ym5_to_raw +YM_TO_YM5 = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/ym_to_ym5 +RAW_INTERLEAVE = ~/research/vmw-meter.git/ay-3-8910/conversion_tools/raw_interleave + +all: lemm5.part1.lzsa lemm5.part2.lzsa lemm5.part3.lzsa \ + lemm2.part1.lzsa lemm2.part2.lzsa lemm2.part3.lzsa \ + lemm2.part4.lzsa lemm2.part5.lzsa lemm2.part6.lzsa \ + lemm2.part7.lzsa lemm2.part8.lzsa lemm2.part9.lzsa \ + lemm2.part10.lzsa lemm2.part11.lzsa lemm2.part12.lzsa \ + lemm2.part13.lzsa lemm2.part14.lzsa lemm2.part15.lzsa \ + lemm2.part16.lzsa lemm2.part17.lzsa lemm2.part18.lzsa + +lemm5.raw: lemm5.ym + $(YM5_TO_RAW) ./lemm5.ym > lemm5.raw + +lemm2.raw: intro2.ym + $(YM5_TO_RAW) ./intro2.ym > lemm2.raw + +#### + +lemm5.part1: lemm5.raw + $(RAW_INTERLEAVE) -m 11 -c 512 ./lemm5 + +lemm5.part1.lzsa: lemm5.part1 + $(LZSA) -r -f2 lemm5.part1 lemm5.part1.lzsa + +lemm5.part2.lzsa: lemm5.part2 + $(LZSA) -r -f2 lemm5.part2 lemm5.part2.lzsa + +lemm5.part3.lzsa: lemm5.part3 + $(LZSA) -r -f2 lemm5.part3 lemm5.part3.lzsa + +lemm5.part4.lzsa: lemm5.part4 + $(LZSA) -r -f2 lemm5.part4 lemm5.part4.lzsa + +lemm5.part5.lzsa: lemm5.part5 + $(LZSA) -r -f2 lemm5.part5 lemm5.part5.lzsa + +#### + +lemm2.part1: lemm2.raw + $(RAW_INTERLEAVE) -m 11 -c 512 ./lemm2 + +lemm2.part1.lzsa: lemm2.part1 + $(LZSA) -r -f2 lemm2.part1 lemm2.part1.lzsa + +lemm2.part2.lzsa: lemm2.part2 + $(LZSA) -r -f2 lemm2.part2 lemm2.part2.lzsa + +lemm2.part3.lzsa: lemm2.part3 + $(LZSA) -r -f2 lemm2.part3 lemm2.part3.lzsa + +lemm2.part4.lzsa: lemm2.part4 + $(LZSA) -r -f2 lemm2.part4 lemm2.part4.lzsa + +lemm2.part5.lzsa: lemm2.part5 + $(LZSA) -r -f2 lemm2.part5 lemm2.part5.lzsa + +lemm2.part6.lzsa: lemm2.part6 + $(LZSA) -r -f2 lemm2.part6 lemm2.part6.lzsa + +lemm2.part7.lzsa: lemm2.part7 + $(LZSA) -r -f2 lemm2.part7 lemm2.part7.lzsa + +lemm2.part8.lzsa: lemm2.part8 + $(LZSA) -r -f2 lemm2.part8 lemm2.part8.lzsa + +lemm2.part9.lzsa: lemm2.part9 + $(LZSA) -r -f2 lemm2.part9 lemm2.part9.lzsa + +lemm2.part10.lzsa: lemm2.part10 + $(LZSA) -r -f2 lemm2.part10 lemm2.part10.lzsa + +lemm2.part11.lzsa: lemm2.part11 + $(LZSA) -r -f2 lemm2.part11 lemm2.part11.lzsa + +lemm2.part12.lzsa: lemm2.part12 + $(LZSA) -r -f2 lemm2.part12 lemm2.part12.lzsa + +lemm2.part13.lzsa: lemm2.part13 + $(LZSA) -r -f2 lemm2.part13 lemm2.part13.lzsa + +lemm2.part14.lzsa: lemm2.part14 + $(LZSA) -r -f2 lemm2.part14 lemm2.part14.lzsa + +lemm2.part15.lzsa: lemm2.part15 + $(LZSA) -r -f2 lemm2.part15 lemm2.part15.lzsa + +lemm2.part16.lzsa: lemm2.part16 + $(LZSA) -r -f2 lemm2.part16 lemm2.part16.lzsa + +lemm2.part17.lzsa: lemm2.part17 + $(LZSA) -r -f2 lemm2.part17 lemm2.part17.lzsa + +lemm2.part18.lzsa: lemm2.part18 + $(LZSA) -r -f2 lemm2.part18 lemm2.part18.lzsa + + + + + +#### + + +clean: + rm -f *.lzsa *.part1 *.part2 *.part3 *.part4 *.part5 *.part6 *.part7 *.part8 *.part9 *.part10 diff --git a/games/lemm/hr_music/intro2.ym b/games/lemm/hr_music/intro2.ym new file mode 100644 index 0000000000000000000000000000000000000000..1279d6039923556ce2a33e13088d2d460982d366 GIT binary patch literal 3217 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 CR2S9& literal 0 HcmV?d00001 diff --git a/games/lemm/hr_music/lemm5.ym b/games/lemm/hr_music/lemm5.ym new file mode 100644 index 0000000000000000000000000000000000000000..c230b7d018bf6ef7fdd45648d72f077142b0cd1d GIT binary patch literal 463 zcmV;=0Wkg`<1K7xH7%?G004MS001BnT1+4S3PE{aMQwF#E_rP_5&8^Yg`wqC>Js$Nhf3LmK+vB%sw+9A4#l$@q@v?`h{I5I#;BA7@vr3QNzhDtacu3m9^|`m z?8v4+M0-0w`aT>xvF+D)tNYRZ`2OX4-Q|8IrP%hk?`tE-@;s0Bj~LN9oxQ!z?}v{4 zd*xrfw|ZZ`KL*>~ehh!`slXhbZF1TDb8n_T{Ef)_{d52T007(k03RdQd;kCf1p2h2 F002wl?mPeh literal 0 HcmV?d00001 diff --git a/games/lemm/level2.s b/games/lemm/level2.s index cb67c889..dd98d378 100644 --- a/games/lemm/level2.s +++ b/games/lemm/level2.s @@ -28,7 +28,7 @@ do_level2: lda #3 sta DOOR_X - lda #5 + lda #4 sta DOOR_Y lda #7 diff --git a/games/lemm/particle_hgr.s b/games/lemm/particle_hgr.s index 685279fc..7f4eff85 100644 --- a/games/lemm/particle_hgr.s +++ b/games/lemm/particle_hgr.s @@ -140,7 +140,7 @@ y_good: HPLOT0: ; line from (x,a) to (x+y,a) - ldy #2 + ldy #4 jsr hgr_hlin rts diff --git a/games/lemm/title.s b/games/lemm/title.s index 2625f567..2e6cb9e5 100644 --- a/games/lemm/title.s +++ b/games/lemm/title.s @@ -32,6 +32,30 @@ title_loop: rts +;HR_VERSION = 0 + +; HUGE HACK! THE TITLE TEXTS NEED TO BE IDENTICAL LENGTH +; OR BAD THINGS HAPPEN (offsets wrong) + +.if HR_VERSION = 1 +title_text: +.byte 0, 0,"LOADING LEMM V1.01 (17 APR 2022)",0 +.byte 0, 1," HOMESTAR RUNNER LEVEL PACK ",0 +.byte 0, 3,"BASED ON LEMMINGS BY DMA DESIGN",0 +.byte 0, 5," APPLE II PORT: VINCE WEAVER",0 +.byte 0, 6," DISK : QKUMBA ",0 +.byte 0, 7," LZSA : E. MARTY AUDIO: O. SCHMIDT",0 +.byte 0, 8," ",0 +.byte 0,10,"DIRECTIONS:",0 +.byte 0,11," WASD/ARROWS : MOVE POINTER",0 +.byte 0,12," ENTER/SPACE : ACTION",0 +.byte 0,13," 1...8 : FAST JOB SELECT",0 +.byte 0,14," J,! : ENABLE JOYSTICK,CHEAT",0 +.byte 0,16," ______",0 +.byte 0,17," A \/\/\/ SOFTWARE PRODUCTION",0 +.byte 0,19," HTTP://WWW.DEATER.NET/WEAVE/VMWPROD",0 +.byte 4,21,"PRESS 1-9 TO CHOOSE START LEVEL",0 +.else title_text: .byte 0, 0,"LOADING LEMM V1.01 (13 APR 2022)",0 @@ -50,4 +74,4 @@ title_text: .byte 0,17," A \/\/\/ SOFTWARE PRODUCTION",0 .byte 0,19," HTTP://WWW.DEATER.NET/WEAVE/VMWPROD",0 .byte 4,21,"PRESS 1-9 TO CHOOSE START LEVEL",0 - +.endif