From d43158e45d5293b2f8996032ddfe62e5da768fbc Mon Sep 17 00:00:00 2001 From: Natt Akuma Date: Fri, 28 Nov 2025 00:32:13 +0700 Subject: [PATCH] Improve intro part, add second song --- loader/samples/minexample/Makefile | 6 + loader/samples/minexample/font.bin | Bin 517 -> 517 bytes loader/samples/minexample/minexample.s | 305 +++++++++----------- loader/samples/minexample/song1.bin | Bin 0 -> 4464 bytes loader/samples/minexample/ys2_lilia_sid.fur | Bin 0 -> 836 bytes 5 files changed, 143 insertions(+), 168 deletions(-) create mode 100644 loader/samples/minexample/song1.bin create mode 100644 loader/samples/minexample/ys2_lilia_sid.fur diff --git a/loader/samples/minexample/Makefile b/loader/samples/minexample/Makefile index 276c2f2..bedc2a7 100644 --- a/loader/samples/minexample/Makefile +++ b/loader/samples/minexample/Makefile @@ -132,6 +132,7 @@ AS_FLAGS = -Wa -I../../../shared -I ../../include -u __EXEHDR__ ZX0PRGS = \ song0.zx0.prg \ + song1.zx0.prg \ badguy.zx0.prg \ title_320-prepared.zx0.prg \ tower.zx0.prg \ @@ -181,6 +182,7 @@ $(DISKIMAGE): $(ASSEMBLE) $(CC1541) $(ZX0PRGS) $(LZPRGS) font.bin $(CC1541) -n "otomata labs" -i " 2025" \ -f "ys2intro" -w $< \ -f "song0" -w song0.zx0.prg \ + -f "song1" -w song1.zx0.prg \ -f "badguy" -w badguy.zx0.prg \ -f "font" -w font.bin \ -f "intrbmp" -w title_320-prepared.zx0.prg \ @@ -230,6 +232,10 @@ song0.bin: ys2_fixed_drums.fur cd $(FURC64) && ./convert.sh $(abspath $<) cp $(FURC64)/asm/song.bin $@ +song1.bin: ys2_lilia_sid.fur + cd $(FURC64) && ./convert.sh $(abspath $<) + cp $(FURC64)/asm/song.bin $@ + clean: -$(RM) $(ZX0PRGS) $(LZPRGS) -$(RM) *.o $(ASSEMBLE) $(DISKIMAGE) diff --git a/loader/samples/minexample/font.bin b/loader/samples/minexample/font.bin index adddaf8aeab5ca99f88720d8b7361d394cd39ceb..05d4f39f805ad7436a42c1e1c701d71ebd05fd9e 100644 GIT binary patch delta 27 ecmZo=X=T~)iBY)W%0Gvz$+hyCII#<6Epw- diff --git a/loader/samples/minexample/minexample.s b/loader/samples/minexample/minexample.s index 9e68f72..7190027 100644 --- a/loader/samples/minexample/minexample.s +++ b/loader/samples/minexample/minexample.s @@ -94,51 +94,44 @@ code_start: .org CODE_START_ADDR sei - - lda #0 - jsr load_font - - lda #$34 - sta $01 - - lda #0 - tax -: - .repeat 4, I - sta $d000+(I*250), x - .endrepeat - inx - cpx #250 - bne :- - - lda #$35 - sta $01 - + lda #$0b + sta $d011 lda #0 + sta $d020 sta ZX0_dst+0 + jsr load_font + ; we don't have the music player here yet + ; so just put an rts instruction at $a003 + lda #$60 + sta $a003 + jsr init_2x + jsr clr_txt + ldx #copyright + jsr write_txt3 + ldx #$30 + ldy #$01 + jsr init_timer + lda #1 + sta timer_mode ldx #badguy jsr load_8000_zx02_2000 - lda #127 - sta $dc0d +: + lda timer_reached + beq :- - and $d011 - sta $d011 + ldx #250 + ldy #0 + jsr txt_fade_out + lda #64 + sta frame_delay + jsr wait_loop - lda $dc0d - lda $dd0d - - lda #irq_badguy - sta $ffff - - lda #$1b - sta $d011 - lda #$d2 - sta $d012 + sei + jsr set_irq_badguy lda #1 sta $d01a @@ -150,10 +143,6 @@ code_start: cli - lda #64 - sta frame_delay - jsr wait_loop - jsr intro lda #$0b @@ -170,23 +159,17 @@ code_start: lda #$a0 jsr load_8000_zx02 - ldx #towername - jsr loadraw - lda #fake_kernal_irq sta $ffff - lda #1 - sta $d01a - jsr run_nufli_bmp sei jsr init_2x lda #$0b sta $d011 + ; jmp part_11 jsr clr_txt ldx #towername + jsr load_8000_zx02_2000 : lda timer_reached @@ -207,12 +191,7 @@ code_start: ldx #$b8 ldy #$01 - jsr init_timer - lda #2 - sta timer_mode -: - lda timer_reached - beq :- + jsr txt_fade_out jsr init_bmp @@ -253,12 +232,7 @@ code_start: ldx #$90 ldy #$01 - jsr init_timer - lda #2 - sta timer_mode -: - lda timer_reached - beq :- + jsr txt_fade_out jsr init_bmp @@ -316,13 +290,7 @@ code_start: ldx #$48 ldy #$01 - jsr init_timer - lda #2 - sta timer_mode - -: - lda timer_reached - beq :- + jsr txt_fade_out jsr init_bmp @@ -393,13 +361,7 @@ code_start: ldx #$48 ldy #$01 - jsr init_timer - lda #2 - sta timer_mode - -: - lda timer_reached - beq :- + jsr txt_fade_out jsr init_bmp @@ -483,13 +445,7 @@ code_start: ldx #$20 ldy #$01 - jsr init_timer - lda #2 - sta timer_mode - -: - lda timer_reached - beq :- + jsr txt_fade_out part_9: ; $0400-$07ff buffer 0 tilemap @@ -766,8 +722,7 @@ intro: lda #120 sta frame_delay - jsr wait_loop - rts + jmp wait_loop wait_frame: @loop: @@ -907,12 +862,14 @@ irq_music: bne :+ inc timer+1 : - lda timer - cmp timer_limit - bne :+ lda timer+1 cmp timer_limit+1 + bcc :++ bne :+ + lda timer + cmp timer_limit + bcc :++ +: lda #1 sta timer_reached : @@ -1199,19 +1156,14 @@ update_bmp: jmp update_bmp irq_badguy: - pha - txa - pha - tya pha - inc vbl - ;inc $d020 - - nop - nop - nop - nop + pha + pla + pha + pla + pha + pla lda #$1b sta $d011 lda #$c8 @@ -1221,11 +1173,21 @@ irq_badguy: lda #1 sta $d021 - lda #$fa -: - cmp $d012 - bcs :- + lda #irq_badguy2 + sta $ffff + lda #$fb + sta $d012 + asl $d019 + pla + rti + +irq_badguy2: + pha + + inc vbl lda #$3b sta $d011 lda #$d8 @@ -1235,19 +1197,42 @@ irq_badguy: lda #0 sta $d021 - ;dec $d020 + lda #irq_badguy + sta $ffff + lda #$d2 + sta $d012 asl $d019 pla - tay - pla - tax - pla rti +set_irq_badguy: + lda #127 + sta $dc0d + + and $d011 + sta $d011 + + lda $dc0d + lda $dd0d + + lda #irq_badguy + sta $ffff + + lda #$1b + sta $d011 + lda #$d2 + sta $d012 + rts + badguy: .byte "badguy",0 fontname: .byte "font",0 song0name: .byte "song0", 0 +song1name: .byte "song1", 0 introname: .byte "intrbmp", 0 towername: .byte "tower", 0 towerbeamname: .byte "towerbm", 0 @@ -1320,6 +1305,7 @@ run_nufli_bmp: sta $80 lda #0 sta $d01a + asl $d019 jsr $a000 cli jsr $3000 @@ -1509,6 +1495,16 @@ part_11: jsr $a006 cmp #17 bne :- + ; load new music + sei + jsr set_irq_badguy + + ldx #song1name + lda #$a0 + jsr load_8000_zx02 + cli + jmp end .res ((*+$ff)&$ff00|2)-* @@ -1517,8 +1513,7 @@ end: ldy #>fontname jsr fileexists bcc end - jsr load_font - jmp * + jmp code_start clear_2bufs: ldy #$44 @@ -1620,76 +1615,41 @@ copybuf: @tdstlo: .lobytes (16+4)*40+$6008, (16+4)*40+$0408 @tdsthi: .hibytes (16+4)*40+$6008, (16+4)*40+$0408 +copyright: +.byte " ys ^ " +.byte " copyright 1988 falcom " +.byte " all right reserved " + story_writ: -.res 11, ' ' -.byte "story written by" -.res 40-(16+11), ' ' -.res 11, ' ' -.res 5, ' ' -.byte "takahiro ohura" -.res 40-(14+11+5), ' ' -.res 11, ' ' -.res 5, ' ' -.byte "tomoo yamane" -.res 40-(12+11+5), ' ' +.byte " story written by " +.byte " takahiro ohura " +.byte " tomoo yamane " scenario_writ: -.res (40-24)/2, ' ' -.byte " scenario written by " -.res (40-24)/2, ' ' -.res (40-24)/2, ' ' -.byte " tomoyoshi miyazaki" -.res (40-24)/2, ' ' +.byte " scenario written by " +.byte " tomoyoshi miyazaki " prog_writ: -.res (40-22)/2, ' ' -.byte " programmed by " -.res (40-22)/2, ' ' -.res (40-22)/2, ' ' -.byte " masaya hashimoto" -.res (40-22)/2, ' ' +.byte " programmed by " +.byte " masaya hashimoto " gart_writ: -.res (40-24)/2, ' ' -.byte "graphic arts designed by" -.res (40-24)/2, ' ' -.res (40-24)/2, ' ' -.byte " takahiro ohura " -.res (40-24)/2, ' ' -.res (40-24)/2, ' ' -.byte " ayano koshiro " -.res (40-24)/2, ' ' -.res (40-24)/2, ' ' -.byte " kazuhiko tsuzuki " -.res (40-24)/2, ' ' -.res (40-24)/2, ' ' -.byte " tomoo yamane " -.res (40-24)/2, ' ' +.byte " graphic arts designed by " +.byte " takahiro ohura " +.byte " ayano koshiro " +.byte " kazuhiko tsuzuki " +.byte " tomoo yamane " music_writ: -.res (40-20)/2, ' ' -.byte " music composed by " -.res (40-20)/2, ' ' -.res (40-20)/2, ' ' -.byte " mieko ishikawa" -.res (40-20)/2, ' ' -.res (40-20)/2, ' ' -.byte " yuzo koshiro " -.res (40-20)/2, ' ' -.res (40-20)/2, ' ' -.byte " hideya nagata " -.res (40-20)/2, ' ' +.byte " music composed by " +.byte " mieko ishikawa " +.byte " yuzo koshiro " +.byte " hideya nagata " scene_writ: -.res (40-22)/2, ' ' -.byte "scene set by " -.res (40-22)/2, ' ' -.res (40-22)/2, ' ' -.byte " seigo oketani " -.res (40-22)/2, ' ' -.res (40-22)/2, ' ' -.byte " yoshihiko kurata" -.res (40-22)/2, ' ' +.byte " scene set by " +.byte " seigo oketani " +.byte " yoshihiko kurata " clr_txt: lda #$80 @@ -1909,4 +1869,13 @@ write_txt2: bne :- rts +txt_fade_out: + jsr init_timer + lda #2 + sta timer_mode +: + lda timer_reached + beq :- + rts + code_end: diff --git a/loader/samples/minexample/song1.bin b/loader/samples/minexample/song1.bin new file mode 100644 index 0000000000000000000000000000000000000000..98396cd3e31b4825764e60d6f075140ba51b16df GIT binary patch literal 4464 zcmdT{eNa#XSXBcoGNr~qpVilYMZry(4}gzT8bi1 zB@|eqsZ|T=#Umz2B8dUCLd}Dq!V-4IO*>3yhuK#5i`Lz#^ZwdxgWT*nFF}I#WB=Vd z;l6wBJ@kV81FD{Yt?0~&b|E1Q@V`YWiMyu>YiVx>+Q{5wQ$kX&j|k~ zB{aD-362WZ4Gw|z0P6sD4jduo19k}B0?Pu{4}+S1hhQ;- zOLSZIfoqT3Qi-aTJZMroM0OJJ=TNaF1ZN|R)4-g-vVnPkxquY`D+aa`SQW4uV0FL_ z080m!3ak;>7GQIMl>plgEE!lSq3FSpz@7$2EL#rDfcEQ~1l|3uXtNM3`CuC10rg0z zjiWcl%eLE6!gpQ%n8byCC`V@s385JUgats{g?qq-1#8AT?l%R;=I z(jYl5&v5sFbO~@lrOSZJiG2~iibfwT`S;Bw@03N0o`GCE(K8Tm>eTU2P2!v=-W8Ux zCUO2TP24=_7J{P>i^iLwa5E~d+M*cTT%_4Ynz&6@IqcYD{p=)`CMu_}P}OwGg^S^o)_|EyYr!1C*-5Ps1^6EDgud9z+q-0@)74;eLJ{6u0f1tpR(8tpyWdZ3p>R_@#hW zxy`(*+O6>MZh`U$%qEa6`nLg6-YFw}1&XNDPHV>LKh> zkheszYYDp!vArb-Y$l&>!^ld_2FUd0;jYWBPCUaBLynl9V>zM$SS4YpwuR+&0~5M-ct54y;{DV z2T_V`p@iB4?oIIAb1t7C$IM>r!Y;f#aWp|Tjwd42(I-JX=7$~_kT6vwVY6E?a7n2z z(*#{$mUIr}IH?2V>FDdZJCn6k1fLg!tR<_H(>RXc1xgt5d=}Bpq%qBl zEnS1q+6N68B&Oj#hq`!)N*>I3sH$vHX)eeQg3!kGNw|<0Z#hvF7sP;vgGwWbDilp_ zGu$i$S0Q}94?Ho(!w%){b(vwA3LgUak`OTU4r+qfO_|%$2fAjPLlrHkqXgIMATLBU z%mDd{J9M}0bll7XS04D|Fgwt5LU-c~z9{G=fyl;(9i$u18%@G~#mpwMbtPhO-DzZq z{PobJqG6Q zBs@>}RO-dIkYoc)Qulvh18fDRp=a2lJ&ge!)cge%8Yve)zM+xQb`8i$_)^g3b6s&O z-JkC{Q8fG`A`WUk!3n!DSkg|=R~Q+MYIVPCMeP=CS6OR$9k7GYHQZW`uc^am;8WDE z0(lc62j&^1IvB%zUWcpq#R2d(0!}fEDHFyHgEifF%c(`3az)1)!w-OQ<{5M_e5eo` zQE?34EKi=n*?9O3-XthXr1Nge z8jwDATh`)XcU#thbj5A?HAsH9wx-ILW`IhMpO%kJ&NsQ7rW%G;Ry$D_Tt@!wC zDfFr2IG#qIm~x;0HLKe3n#tm)V_ePGgoi^>hB+c|0Gk}3 z-O|!`c8KDhy?ggnR+_7--m9*zsTKEDR#n&5?YAC0bfo_1@kVi9RjtK(=)hFux{rDxF zSYGy;qh^Z&Im*ppogoyT;0jlVG+@1g@mtTRf@JR z;%v7s%w{sDi;De=ybHa!$S)|m5hLNyc)NR)Ky)iX>50@78tV5(>Tdk@q8#RUfp>I7 z9Bk(u{5;}f7r)@9PUQG~;~r&PF@JsnqJwuTfg*w(+=D=!2p1-~6gj5X^Ap_0W2rj9 z|3?9*HF3s|@L0yf4f_75fYXkl-f8^1`+J%n<;@WX#vO_N+R$7RM~FlG5Lb`?CJ7(# JM?wOT`Y(svn1lcT literal 0 HcmV?d00001 diff --git a/loader/samples/minexample/ys2_lilia_sid.fur b/loader/samples/minexample/ys2_lilia_sid.fur new file mode 100644 index 0000000000000000000000000000000000000000..96aad77303e360f84ec7fb61ee1a96a616d03b3a GIT binary patch literal 836 zcmV-K1H1fqoXu2APZLoTJ~MY(S_+iN2JM1bV4@2WKqTxe@`xl-8fY}egz#z%rqBQ_ zl2T(k7BH?{`4jvBhNX%A1b=`rv(U)G#0`m$P5sWD-Wf_q2tE=od}r=C_nznd(w_1B z`s(~*+FZ#lr6JSno!N zbd7hKrfizlA&82=N8p}8^cC0*5WNS!0Bb?q!g!tmpMf7hB}CK~CVB-lHFFqU7@p8| zO$dae@kz6fML&xxwUni6GQR}W7FCWe)#vzg)<|{*kC|Ohn}Y-9rJ0FQbLi?&?`87B z)K;(RMFt__%xD5HOoZa)+oE7XvBbqjoUGIew2|}vL~pAapaTLhfB+B#nt%`x2AY8g z&;qmqZ9o(tvf*#T--f>pe;fWb{B8K#@VDV_!{3I#4SyT{HvDb)v#)9*6s%wL2|axS z4D>ZTIx!utwaUF}Y%prByl+y6O!=Aqd3+Brki>A9@~gS!TqeDQx41}$d@*$)N^yLr z13?i7IkaNH;N#2!Nv6%u9A_QfL>4_O>ji#}?> zN8M^vIZc%-c%sM_vyjs{*ol=nzr`iszQtnK-R-$*#YeS#)UuCixi&YltY?pEWQY}H zJ*ZY};9Evr6w5odO}8trzs+Np%YPa`mXnm_h`MreZnRBhQ-QW2N>VS$Yo%kE+_+&G z7hLa*7*&@E%=K8YjtQI=Z+G?=77u*Xe7(BSzy$vBs0j|mzxVZ#}7mhi7ezp88yYpNGVWSyP3?=s;x17wcASW1?|Ojz@YmUV2o zI&vuv$aonya!w_3V+Unyut91Tsh|FohMRX;%t2V**4h2b<0F-T5@MF^cUVlz%W_+9 z^lX3kSXS~vR)V33+wS3_yE~Ijs<&7yG>*Y