From d4c39d5d6429e3e35e297be6cac790bca8b89514 Mon Sep 17 00:00:00 2001 From: Pecusx Date: Tue, 4 Mar 2025 20:42:20 +0100 Subject: [PATCH] New colors and RIP --- art/anim_exported.asm | 2 + art/lumberjack_export.py | 196 ++++++++++++++++++++++++++++++++------- lumber.asm | 34 ++++++- lumber.xex | Bin 21643 -> 21760 bytes 4 files changed, 194 insertions(+), 38 deletions(-) diff --git a/art/anim_exported.asm b/art/anim_exported.asm index 1483ae5..0d20a3e 100644 --- a/art/anim_exported.asm +++ b/art/anim_exported.asm @@ -25,6 +25,8 @@ last_line_r dta $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$27,$50,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5,$51,$29,$01,$6F,$70,$01,$01,$71,$72,$01,$01,$01 last_line_l dta $01,$01,$01,$7F,$7E,$01,$01,$7D,$7C,$01,$27,$D0,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5,$D1,$29,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 +last_line_RIP + dta $01,$01,$01,$01,$01,$01,$01,$01,$01,$01,$27,$D0,$9E,$9F,$A0,$A1,$A2,$A3,$A4,$A5,$D1,$29,$01,$01,$01,$01,$01,$01,$01,$01,$01,$01 .align $100 ; Right animation diff --git a/art/lumberjack_export.py b/art/lumberjack_export.py index b8999c2..614ea8e 100644 --- a/art/lumberjack_export.py +++ b/art/lumberjack_export.py @@ -1,19 +1,8 @@ import json -color_labels_used = set() - def load_atrview(filename: str, page: int = 1) -> list[str]: with open(filename, 'rb') as f: - full_json = json.loads(f.read().decode('utf-8-sig')) - dta = full_json['Pages'][page-1]['View'] - # very unpythonic side effect - printing colors consts - const_name = filename.replace('.atrview', '') - cols = full_json['Colors'] - for i,val in enumerate([cols[i:i+2] for i in range(0, len(cols), 2)]): - color_label = const_name + 'p' + str(page) + 'c' + str(i) - if color_label not in color_labels_used: - print( color_label + ' = $' + val) - color_labels_used.add(color_label) + dta = json.loads(f.read().decode('utf-8-sig'))['Pages'][page-1]['View'] return [dta[i*80:(i+1)*80][:64] for i in range(len(dta)//80)] def print_lines(dta, line_from: int, line_to:int): @@ -31,8 +20,8 @@ print("branch1") print_lines(dta, 7,12) print("branch2") print_lines(dta, 12,17) -print("branch3") -print_lines(dta, 17,22) +#print("branch3") +#print_lines(dta, 17,22) print() print('last_line_r') @@ -45,54 +34,115 @@ dta = load_atrview('phase1l.atrview') d = dta[-1] print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) +print('last_line_RIP') +dta = load_atrview('rip.atrview') +d = dta[-1] +print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) + print(""" .align $100 ; Right animation -gamescreen_lower1r ; phase 1 page 1""") +gamescreen_r_ph1p1 ; phase 1 page 1""") dta = load_atrview('phase1r.atrview') for l, d in enumerate(dta[-9:-1], 1): print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) -print("gamescreen_lower2r ; phase 2 page 1") +print('gamescreen_r_ph1p2 ; phase 1 page 2') +dta = load_atrview('phase1r.atrview', page=2) +print_lines(dta, -9, -1) + +print("gamescreen_r_ph2p1 ; phase 2 page 1") dta = load_atrview('phase2r.atrview') for l, d in enumerate(dta[-9:-1], 1): print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) -print('gamescreen_lower3r ; phase 2 page 2') +print('gamescreen_r_ph2p2 ; phase 2 page 2') dta = load_atrview('phase2r.atrview', page=2) print_lines(dta, -9, -1) -print('gamescreen_lower4r ; phase 2 page 3') +print('gamescreen_r_ph2p3 ; phase 2 page 3') dta = load_atrview('phase2r.atrview', page=3) print_lines(dta, -9, -1) -print('gamescreen_lower5r ; phase 2 page 4') +print('gamescreen_r_ph2p4 ; phase 2 page 4') dta = load_atrview('phase2r.atrview', page=4) print_lines(dta, -9, -1) -print('gamescreen_lower6r ; phase 3 page 1') +print('gamescreen_r_ph2p5 ; phase 2 page 5') +dta = load_atrview('phase2r.atrview', page=5) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph2p6 ; phase 2 page 6') +dta = load_atrview('phase2r.atrview', page=6) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph2p7 ; phase 2 page 7') +dta = load_atrview('phase2r.atrview', page=7) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph2p8 ; phase 2 page 8') +dta = load_atrview('phase2r.atrview', page=8) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p1 ; phase 3 page 1') dta = load_atrview('phase3r.atrview', page=1) print_lines(dta, -9, -1) -print('gamescreen_lower7r ; phase 3 page 2') +print('gamescreen_r_ph3p2 ; phase 3 page 2') dta = load_atrview('phase3r.atrview', page=2) print_lines(dta, -9, -1) -print('gamescreen_lower8r ; phase 3 page 3') +print('gamescreen_r_ph3p3 ; phase 3 page 3') dta = load_atrview('phase3r.atrview', page=3) print_lines(dta, -9, -1) -print('gamescreen_lower9r ; phase 3 page 4') +print('gamescreen_r_ph3p4 ; phase 3 page 4') dta = load_atrview('phase3r.atrview', page=4) print_lines(dta, -9, -1) -print('gamescreen_lower10r ; phase 3 page 5') +print('gamescreen_r_ph3p5 ; phase 3 page 5') dta = load_atrview('phase3r.atrview', page=5) print_lines(dta, -9, -1) +print('gamescreen_r_ph3p6 ; phase 3 page 6') +dta = load_atrview('phase3r.atrview', page=6) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p7 ; phase 3 page 7') +dta = load_atrview('phase3r.atrview', page=7) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p8 ; phase 3 page 8') +dta = load_atrview('phase3r.atrview', page=8) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p9 ; phase 3 page 9') +dta = load_atrview('phase3r.atrview', page=9) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p10 ; phase 3 page 10') +dta = load_atrview('phase3r.atrview', page=10) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p11 ; phase 3 page 11') +dta = load_atrview('phase3r.atrview', page=11) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p12 ; phase 3 page 12') +dta = load_atrview('phase3r.atrview', page=12) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p13 ; phase 3 page 13') +dta = load_atrview('phase3r.atrview', page=13) +print_lines(dta, -9, -1) + +print('gamescreen_r_ph3p14 ; phase 3 page 14') +dta = load_atrview('phase3r.atrview', page=14) +print_lines(dta, -9, -1) + print(""" ; left animation -gamescreen_lower1l ; phase 1 page 1""") +gamescreen_l_ph1p1 ; phase 1 page 1""") # pj = load_atrview('phase1l.atrview') # print_lines(dta, -9, -1) with open('phase1l.atrview', 'rb') as f: @@ -102,38 +152,116 @@ dta = [dta[i*80:(i+1)*80][:64] for i in range(len(dta)//80)] for l, d in enumerate(dta[-9:-1], 1): print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) -print('gamescreen_lower2l ; phase 2 page 1') +print('gamescreen_l_ph1p2 ; phase 1 page 2') +dta = load_atrview('phase1l.atrview', page=2) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph2p1 ; phase 2 page 1') dta = load_atrview('phase2l.atrview', page=1) print_lines(dta, -9, -1) -print('gamescreen_lower3l ; phase 2 page 2') +print('gamescreen_l_ph2p2 ; phase 2 page 2') dta = load_atrview('phase2l.atrview', page=2) print_lines(dta, -9, -1) -print('gamescreen_lower4l ; phase 2 page 3') +print('gamescreen_l_ph2p3 ; phase 2 page 3') dta = load_atrview('phase2l.atrview', page=3) print_lines(dta, -9, -1) -print('gamescreen_lower5l ; phase 2 page 4') +print('gamescreen_l_ph2p4 ; phase 2 page 4') dta = load_atrview('phase2l.atrview', page=4) print_lines(dta, -9, -1) -print('gamescreen_lower6l ; phase 3 page 1') +print('gamescreen_l_ph2p5 ; phase 2 page 5') +dta = load_atrview('phase2l.atrview', page=5) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph2p6 ; phase 2 page 6') +dta = load_atrview('phase2l.atrview', page=6) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph2p7 ; phase 2 page 7') +dta = load_atrview('phase2l.atrview', page=7) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph2p8 ; phase 2 page 8') +dta = load_atrview('phase2l.atrview', page=8) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p1 ; phase 3 page 1') dta = load_atrview('phase3l.atrview', page=1) print_lines(dta, -9, -1) -print('gamescreen_lower7l ; phase 3 page 2') +print('gamescreen_l_ph3p2 ; phase 3 page 2') dta = load_atrview('phase3l.atrview', page=2) print_lines(dta, -9, -1) -print('gamescreen_lower8l ; phase 3 page 3') +print('gamescreen_l_ph3p3 ; phase 3 page 3') dta = load_atrview('phase3l.atrview', page=3) print_lines(dta, -9, -1) -print('gamescreen_lower9l ; phase 3 page 4') +print('gamescreen_l_ph3p4 ; phase 3 page 4') dta = load_atrview('phase3l.atrview', page=4) print_lines(dta, -9, -1) -print('gamescreen_lower10l ; phase 3 page 5') +print('gamescreen_l_ph3p5 ; phase 3 page 5') dta = load_atrview('phase3l.atrview', page=5) print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p6 ; phase 3 page 6') +dta = load_atrview('phase3l.atrview', page=6) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p7 ; phase 3 page 7') +dta = load_atrview('phase3l.atrview', page=7) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p8 ; phase 3 page 8') +dta = load_atrview('phase3l.atrview', page=8) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p9 ; phase 3 page 9') +dta = load_atrview('phase3l.atrview', page=9) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p10 ; phase 3 page 10') +dta = load_atrview('phase3l.atrview', page=10) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p11 ; phase 3 page 11') +dta = load_atrview('phase3l.atrview', page=11) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p12 ; phase 3 page 12') +dta = load_atrview('phase3l.atrview', page=12) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p13 ; phase 3 page 13') +dta = load_atrview('phase3l.atrview', page=13) +print_lines(dta, -9, -1) + +print('gamescreen_l_ph3p14 ; phase 3 page 14') +dta = load_atrview('phase3l.atrview', page=14) +print_lines(dta, -9, -1) + +print(""" +; RIP screens +RIPscreen_l_nobranch ; page 1""") +with open('rip.atrview', 'rb') as f: + pj=json.loads(f.read().decode('utf-8-sig')) +dta = pj['Pages'][0]['View'] +dta = [dta[i*80:(i+1)*80][:64] for i in range(len(dta)//80)] +for l, d in enumerate(dta[-9:-1], 1): + print(f' dta '+','.join([f'${d[i:i+2]}' for i in range(0, len(d), 2)])) + +print('RIPscreen_r_nobranch ; page 2') +dta = load_atrview('rip.atrview', page=2) +print_lines(dta, -9, -1) + +print('RIPscreen_l_branch ; page 3') +dta = load_atrview('rip.atrview', page=3) +print_lines(dta, -9, -1) + +print('RIPscreen_r_branch ; page 4') +dta = load_atrview('rip.atrview', page=4) +print_lines(dta, -9, -1) diff --git a/lumber.asm b/lumber.asm index 4f599a1..c028a80 100644 --- a/lumber.asm +++ b/lumber.asm @@ -174,7 +174,12 @@ DLI2 nop nop nop - mva #$c6 COLBAK ; green + mva #$84 COLBAK ; thin line + sta WSYNC + mva #$DA COLBAK ; additional lines + sta WSYNC + sta WSYNC + mva #$c8 COLBAK ; green inc SyncByte pla rti @@ -191,7 +196,7 @@ DLI4 sta WSYNC sta WSYNC ;sta WSYNC - mva #$86 COLPF2 ; blue pants + mva #$92 COLPF2 ; blue pants inc dliCount pla rti @@ -418,14 +423,16 @@ no_2branch_l LevelDeath jsr SetRIPscreen mva #2 StateFlag -@ mva RANDOM COLBAK - jsr GetKeyFast +@ + ;mva RANDOM COLBAK + jsr GetKey cmp #@kbcode._space bne @- ; restart game jsr ScoreClear jsr InitBranches jsr draw_branches + jsr SetLumberjackPosition jsr LevelReset mva #24 PowerValue ; half power jsr draw_PowerBar @@ -447,6 +454,7 @@ LevelOver ;-------------------------------------------------- :5 WaitForSync mva #>font_game_rip LowCharsetBase + mwa #last_line_RIP lastline_addr lda LumberjackDir ; branch and Lumerjack ? cmp branches_list+5 beq BranchDeath @@ -470,6 +478,24 @@ leftbranch rts .endp ;-------------------------------------------------- +.proc SetLumberjackPosition +;-------------------------------------------------- + WaitForSync + lda LumberjackDir + cmp #1 + beq right_side +left_side + mva #>font_game_lower_left LowCharsetBase + mwa #last_line_l lastline_addr + mwa #gamescreen_l_ph1p1 animation_addr + rts +right_side + mva #>font_game_lower_right LowCharsetBase + mwa #last_line_r lastline_addr + mwa #gamescreen_r_ph1p1 animation_addr + rts +.endp +;-------------------------------------------------- .proc AudioInit ;-------------------------------------------------- ; pokeys init diff --git a/lumber.xex b/lumber.xex index 7befd0ff9a45bd4529edd753e8ccd2746bb65c2d..4a50c150b131dd2b9cda393e2b6513e7611e88f1 100644 GIT binary patch delta 2772 zcmb_eZ)jUp6wgc3waLboZmzab*{$t#L9vNz_g7uFxj#+P=5OnCtG;c1*sHp!IZXtW z)R{Cc;R)?UM6gf;5pVHbJfR1;VAqcyt~2 z96FK+!1r0D&iC^$%EaVV>PfjlZIah2bx4MMx@7QCcSC@F1IZ8SLsalaDFCWXHY=;p zhBLl@htUr&(EAcuc!`lmU%Z7Bo@ZpkbL_73mM~Y`an#-CC3j~|S7$Qv^vi6{8s=1s z!AJ)SiM}Yg+Y}|{)EIg-Cbua!SQcz?)H#CUQS=p%mQ)&?Hn2WK$G8f}XM@l5; z#10qf!b9G*iRL&li4GUpA>QRe6|hqeb}=v$ts3`eM${G4X7(8HUIX4|!29*sMniAc z2<+rV?CoJTZHlk=z^JjQ@d z&f}V~DrW_=)1Cq~iBpXSI53FPB==P+A%Mj%RaKL+#~JYZ5dK zS9{S))x-fqwhtQcAp<^K#?6&F-K`N?Rcylx-nMFbYOj$YL)51Y_!$G{^_Xoi<*yib z`Y01FY2A`Chxi~v0vEQCP{Gp3O;VOR(OPwct6$q-z&|HJ3%3L%(WbX~SD z^7%}QU>A?MbM=Kmm>hI7F2{{!3eI@y9Qp|OVkV!FZHk3hQ<>>9doOjjN4#V%rt@jp zO>M4H7w0df?H1a~Sx3ivL+;fzg$ZBK@5P@527EWJ`nps z@`2a~k{3iDNVZvezH2N!rmtm0FYxS)NKbS()f-c$WFIfBn{`^02FW@r-&D3subA<# l;l|Zl*=Po=T9COuh?F-6rm7+HZoOc?Iax5J=a(Kls= z^vxNsew*P2vYd<+3?VvPoebi#mWP@9X>{AP6`1kpE@KmLzY$s(2A5x>=d!51#l)UB zZx9c?%Ea6-JKIK!xJtwEbhvYc;f}s;-O0owZ?k(=%fm6z!=?o1Ut#Ahkhs*S=J^%* z4E7X_#@{R#Un<}?8N4i$1~mpgmIE1Z3%X3o%Ohy4s};k;lP zt#A%H_>hBNbnr`dX5sXj0`>;W;p{dwGn~il@HhioI8U2KE1W83rzz5JpE+!Y=k0KS zfi0%PrqPP2(iCkeEqOUbO_Ad2{og9;cElKTaF2sSMRr{qsZ!w_bIdU4;2{Sew==#y zc%N0gl~+rpStu+F9_j|wDv?T)!Ir}ttXfq(W6v>tH=lKImxK2fd3&i+A2kKDIy>;) zp+;+!D*wa`IA%TK;G+%}?aV$g#rGJW=&i;lrqU!8a^$7q+?1rds#QjnW~!sKem8va zo}+oB?QTM(y~uu$9V$vr{Imk`(!LHX^@X+%K-&DwF34ISZTj!iHi&=h3r09u<7C}u zv=RYv^5O>6HXubG#SKV1|Kd8-)|paAm36qd21Ozy+|z6DijWr*?$jEb&iSthIWZY; zkOXu%kf=@Z^7MfK(-M3%p1P{2_M}xbSxRu1Jvd( zbZBulCe+Y2&AK)IYJVWI3NsJRklI}ftI)%K=i`NoG_H=3Hi=W;{WJ?xKP&2~)Gvzq z-WR7n7@Pb0tdY}-?ouoD^E1Csa_|!KyTts?ayNVGmgiF0bDP~2bjkE_=+Jny-{)H{ zdzGBNKV6s^f7ai8JpbQjad8#W5%gNRy~>Qx-HAxwNh;+bT7lX!M0uz!L9`6D97Ib{ z%R-ccbYDaFZgqvr%wKVog(BPkwd0-Prd$3{j27**E7J%@@riI7KZ(zT+iK^O53>;K J;da-c^e?FeO4a}X